飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2657|回复: 2

申请:SuperCHM2.2注册破解算法分析

[复制链接]
  • TA的每日心情
    郁闷
    2016-1-23 16:20
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2006-3-14 00:58:37 | 显示全部楼层 |阅读模式
    【破文标题】SuperCHM2.2注册破解算法分析
    【破文作者】gg1211[CZG][PYG][PCG]
    【破解平台】WinXp
    【作者邮箱】[email protected]
    【破解工具】PEiD 、OD
    【保护方式】机器码+用户名+序列号
    【破解目的】学习简单算法破解
    【破解声明】我是一只小小鸟,偶得一点心得,愿与大家分享:)
    【软件名称】SuperCHM2.2
    【下载地址】http://www.xmqm.com/ty/
    【软件简介】SuperCHM是真正所见即所得的CHM制作工具,内置简单易用、功能齐全的网页编辑器,使您可以轻松地完成CHM制作,而不必在多个软件之间来回切换。SuperCHM具有以下特点:
    软件采用hhp格式保存和读取,使软件通用性增强。
    目录、索引可以直接定位到网页中的标签。
    强大的反编译功能,反编译后直接在SuperCHM中读取出来,使用轻松便捷。
    SuperCHM支持绝大部分CHM的功能设置,使您制作的CHM与众不同。
    内置网页编辑器较好地结合了DHTMLEDIT,所见即所得,功能齐全。
    采用MDI设计,同时可以编辑多个网页。
    最新版本:V2.2
    系统需求
    SuperCHM适合于运行在Windows 98、Windows ME、Windows2000、Windows XP的平台
    【破解步骤】
    先用PEiD 侦测,发现为Borland Delphi 6.0 - 7.0,无壳
    运行机器码为101701111149输入实验码gg1211
                                          123456789
    有错误提示”你的注册码不正确,情重新输入“
    od载入,根据错误提示向上翻来到这里下断
    0050FBD4 /. 55         push   ebp               \\我在这里下断
    0050FBD5 |. 8BEC       mov   ebp, esp
    0050FBD7 |. 33C9       xor   ecx, ecx
    0050FBD9 |. 51         push   ecx
    0050FBDA |. 51         push   ecx
    0050FBDB |. 51         push   ecx
    0050FBDC |. 51         push   ecx
    0050FBDD |. 51         push   ecx
    0050FBDE |. 53         push   ebx
    0050FBDF |. 56         push   esi
    0050FBE0 |. 8BD8       mov   ebx, eax     \\机器码101701111149给edx
    0050FBE2 |. 33C0       xor   eax, eax
    0050FBE4 |. 55         push   ebp
    0050FBE5 |. 68 F2FC5000   push   0050FCF2
    0050FBEA |. 64:FF30     push   dword ptr fs:[eax]
    0050FBED |. 64:8920     mov   fs:[eax], esp
    0050FBF0 |. 8D4D FC     lea   ecx, [ebp-4]
    0050FBF3 |. 8B93 1C030000 mov   edx, [ebx+31C]
    0050FBF9 |. 8BC3       mov   eax, ebx
    0050FBFB |. E8 BCFEFFFF   call   0050FABC       \\这个call要跟进,他是明码比较
    0050FC00 |. 8B45 FC     mov   eax, [ebp-4]     \\在这里就出现注册码了,可以在这里
    0050FC03 |. 50         push   eax                 做内存注册机,我们的目的是学习算法
    0050FC04 |. 8D55 F8     lea   edx, [ebp-8]       跟进
    0050FC07 |. 8B83 04030000 mov   eax, [ebx+304]
    0050FC0D |. E8 D6CEF6FF   call   0047CAE8
    0050FC12 |. 8B45 F8     mov   eax, [ebp-8]
    0050FC15 |. 5A         pop   edx
    0050FC16 |. E8 7192EFFF   call   00408E8C
    0050FC1B |. 84C0       test   al, al
    0050FC1D |. 0F84 A2000000 je     0050FCC5
    0050FC23 |. B2 01       mov   dl, 1
    0050FC25 |. A1 DC2D4400   mov   eax, [442DDC]
    0050FC2A |. E8 AD32F3FF   call   00442EDC
    0050FC2F |. 8BF0       mov   esi, eax
    0050FC31 |. BA 01000080   mov   edx, 80000001
    0050FC36 |. 8BC6       mov   eax, esi
    0050FC38 |. E8 7B33F3FF   call   00442FB8
    0050FC3D |. B1 01       mov   cl, 1
    0050FC3F |. BA 08FD5000   mov   edx, 0050FD08             ; software\superchm
    0050FC44 |. 8BC6       mov   eax, esi
    0050FC46 |. E8 D533F3FF   call   00443020
    0050FC4B |. 8D55 F4     lea   edx, [ebp-C]
    0050FC4E |. 8B83 14030000 mov   eax, [ebx+314]
    0050FC54 |. E8 8FCEF6FF   call   0047CAE8
    0050FC59 |. 8B4D F4     mov   ecx, [ebp-C]
    0050FC5C |. BA 24FD5000   mov   edx, 0050FD24             ; regname
    0050FC61 |. 8BC6       mov   eax, esi
    0050FC63 |. E8 EC38F3FF   call   00443554
    0050FC68 |. 8D55 F0     lea   edx, [ebp-10]
    0050FC6B |. 8B83 04030000 mov   eax, [ebx+304]
    0050FC71 |. E8 72CEF6FF   call   0047CAE8
    0050FC76 |. 8B4D F0     mov   ecx, [ebp-10]
    0050FC79 |. BA 34FD5000   mov   edx, 0050FD34             ; regkey
    0050FC7E |. 8BC6       mov   eax, esi
    0050FC80 |. E8 CF38F3FF   call   00443554
    0050FC85 |. 8BC6       mov   eax, esi
    0050FC87 |. E8 FC32F3FF   call   00442F88
    0050FC8C |. 8BC6       mov   eax, esi
    0050FC8E |. E8 E93CEFFF   call   0040397C
    0050FC93 |. 8D55 EC     lea   edx, [ebp-14]
    0050FC96 |. 8B83 04030000 mov   eax, [ebx+304]
    0050FC9C |. E8 47CEF6FF   call   0047CAE8
    0050FCA1 |. 8B55 EC     mov   edx, [ebp-14]
    0050FCA4 |. 8D83 20030000 lea   eax, [ebx+320]
    0050FCAA |. E8 714BEFFF   call   00404820
    0050FCAF |. B8 44FD5000   mov   eax, 0050FD44             ; 非常感谢您注册本软件!您的注册成功了。
    0050FCB4 |. E8 1F93F2FF   call   00438FD8
    0050FCB9 |. A1 44125B00   mov   eax, [5B1244]
    0050FCBE |. E8 49A0F8FF   call   00499D0C
    0050FCC3 |. EB 0A       jmp   short 0050FCCF
    0050FCC5 |> B8 74FD5000   mov   eax, 0050FD74             ; 您的注册码不正确,请重新输入。


    跟进来到这里
    0050FABC /$ 55         push   ebp
    0050FABD |. 8BEC       mov   ebp, esp
    0050FABF |. 6A 00       push   0
    0050FAC1 |. 6A 00       push   0
    0050FAC3 |. 6A 00       push   0
    0050FAC5 |. 6A 00       push   0
    0050FAC7 |. 6A 00       push   0
    0050FAC9 |. 53         push   ebx
    0050FACA |. 8BD9       mov   ebx, ecx
    0050FACC |. 8955 FC     mov   [ebp-4], edx
    0050FACF |. 8B45 FC     mov   eax, [ebp-4]
    0050FAD2 |. E8 A551EFFF   call   00404C7C
    0050FAD7 |. 33C0       xor   eax, eax
    0050FAD9 |. 55         push   ebp
    0050FADA |. 68 A1FB5000   push   0050FBA1
    0050FADF |. 64:FF30     push   dword ptr fs:[eax]
    0050FAE2 |. 64:8920     mov   fs:[eax], esp
    0050FAE5 |. 8D4D F8     lea   ecx, [ebp-8]
    0050FAE8 |. BA 04000000   mov   edx, 4
    0050FAED |. 8B45 FC     mov   eax, [ebp-4]
    0050FAF0 |. E8 6BF9F2FF   call   0043F460
    0050FAF5 |. 8B45 F8     mov   eax, [ebp-8]           \\取前四位机器码
    0050FAF8 |. E8 CF98EFFF   call   004093CC             跟进004093CC
    0050FAFD |. 8D4D F4     lea   ecx, [ebp-C]
    0050FB00 |. BA 04000000   mov   edx, 4
    0050FB05 |. E8 9A98EFFF   call   004093A4
    0050FB0A |. 8D45 F8     lea   eax, [ebp-8]
    0050FB0D |. 50         push   eax
    0050FB0E |. B9 04000000   mov   ecx, 4
    0050FB13 |. BA 05000000   mov   edx, 5
    0050FB18 |. 8B45 FC     mov   eax, [ebp-4]
    0050FB1B |. E8 34FAF2FF   call   0043F554
    0050FB20 |. 8B45 F8     mov   eax, [ebp-8]
    0050FB23 |. E8 A498EFFF   call   004093CC
    0050FB28 |. 05 3E080000   add   eax, 83E
    0050FB2D |. 8D4D F0     lea   ecx, [ebp-10]
    0050FB30 |. BA 05000000   mov   edx, 5
    0050FB35 |. E8 6A98EFFF   call   004093A4
    0050FB3A |. 8D4D F8     lea   ecx, [ebp-8]
    0050FB3D |. BA 04000000   mov   edx, 4
    0050FB42 |. 8B45 FC     mov   eax, [ebp-4]
    0050FB45 |. E8 86F9F2FF   call   0043F4D0
    0050FB4A |. 8B45 F8     mov   eax, [ebp-8]
    0050FB4D |. E8 7A98EFFF   call   004093CC
    0050FB52 |. 83C0 6E     add   eax, 6E
    0050FB55 |. 8D4D EC     lea   ecx, [ebp-14]
    0050FB58 |. BA 04000000   mov   edx, 4
    0050FB5D |. E8 4298EFFF   call   004093A4
    0050FB62 |. 68 B8FB5000   push   0050FBB8                 ; t
    0050FB67 |. FF75 F4     push   dword ptr [ebp-C]
    0050FB6A |. 68 C4FB5000   push   0050FBC4                 ; -y
    0050FB6F |. FF75 F0     push   dword ptr [ebp-10]
    0050FB72 |. 68 D0FB5000   push   0050FBD0                 ; -
    0050FB77 |. FF75 EC     push   dword ptr [ebp-14]
    0050FB7A |. 8BC3       mov   eax, ebx
    0050FB7C |. BA 06000000   mov   edx, 6
    0050FB81 |. E8 C64FEFFF   call   00404B4C
    0050FB86 |. 33C0       xor   eax, eax
    0050FB88 |. 5A         pop   edx
    0050FB89 |. 59         pop   ecx
    0050FB8A |. 59         pop   ecx
    0050FB8B |. 64:8910     mov   fs:[eax], edx
    0050FB8E |. 68 A8FB5000   push   0050FBA8
    0050FB93 |> 8D45 EC     lea   eax, [ebp-14]
    0050FB96 |. BA 05000000   mov   edx, 5
    0050FB9B |. E8 504CEFFF   call   004047F0
    0050FBA0 \. C3         retn


    跟进来到这里
    004093CC /$ 53         push   ebx
    004093CD |. 56         push   esi
    004093CE |. 83C4 F4     add   esp, -0C
    004093D1 |. 8BD8       mov   ebx, eax
    004093D3 |. 8BD4       mov   edx, esp
    004093D5 |. 8BC3       mov   eax, ebx
    004093D7 |. E8 609FFFFF   call   0040333C           \\跟进
    004093DC |. 8BF0       mov   esi, eax
    004093DE |. 833C24 00   cmp   dword ptr [esp], 0
    004093E2 |. 74 19       je     short 004093FD
    004093E4 |. 895C24 04   mov   [esp+4], ebx
    004093E8 |. C64424 08 0B mov   byte ptr [esp+8], 0B
    004093ED |. 8D5424 04   lea   edx, [esp+4]
    004093F1 |. A1 D0EC5A00   mov   eax, [5AECD0]
    004093F6 |. 33C9       xor   ecx, ecx
    004093F8 |. E8 CBF8FFFF   call   00408CC8
    004093FD |> 8BC6       mov   eax, esi
    004093FF |. 83C4 0C     add   esp, 0C
    00409402 |. 5E         pop   esi
    00409403 |. 5B         pop   ebx
    00409404 \. C3         retn

    到这里
    0040333C /$ 53         push   ebx
    0040333D |. 56         push   esi
    0040333E |. 57         push   edi
    0040333F |. 89C6       mov   esi, eax
    00403341 |. 50         push   eax
    00403342 |. 85C0       test   eax, eax
    00403344 |. 74 6C       je     short 004033B2
    00403346 |. 31C0       xor   eax, eax
    00403348 |. 31DB       xor   ebx, ebx
    0040334A |. BF CCCCCC0C   mov   edi, 0CCCCCCC
    0040334F |> 8A1E       /mov   bl, [esi]            
    00403351 |. 46         |inc   esi
    00403352 |. 80FB 20     |cmp   bl, 20             \\是否为空格
    00403355 |.^ 74 F8       \je     short 0040334F
    00403357 |. B5 00       mov   ch, 0
    00403359 |. 80FB 2D     cmp   bl, 2D             \\是否为-
    0040335C |. 74 62       je     short 004033C0
    0040335E |. 80FB 2B     cmp   bl, 2B                 \\是否为+
    00403361 |. 74 5F       je     short 004033C2
    00403363 |> 80FB 24     cmp   bl, 24               \\是否为$
    00403366 |. 74 5F       je     short 004033C7
    00403368 |. 80FB 78     cmp   bl, 78                 \\是否为x
    0040336B |. 74 5A       je     short 004033C7
    0040336D |. 80FB 58     cmp   bl, 58                 \\是否为X
    00403370 |. 74 55       je     short 004033C7
    00403372 |. 80FB 30     cmp   bl, 30                   \\是否为0
    00403375 |. 75 13       jnz   short 0040338A
    00403377 |. 8A1E       mov   bl, [esi]     ; Case 30 ('0') ofswitch00403363
    00403379 |. 46         inc   esi
    0040337A |. 80FB 78     cmp   bl, 78
    0040337D |. 74 48       je     short 004033C7
    0040337F |. 80FB 58     cmp   bl, 58
    00403382 |. 74 43       je     short 004033C7
    00403384 |. 84DB       test   bl, bl
    00403386 |. 74 20       je     short 004033A8
    00403388 |. EB 04       jmp   short 0040338E
    0040338A |> 84DB       test   bl, bl
    0040338C |. 74 2D       je     short 004033BB
    0040338E |> 80EB 30     /sub   bl, 30   \\这里就很重要了,这个循环进行最重要的代码
    00403391 |. 80FB 09     |cmp   bl, 9         \\运算
    00403394 |. 77 25       |ja     short 004033BB   \\将得到的3段四位机器码的值
    00403396 |. 39F8       |cmp   eax, edi           \\逐为循环
    00403398 |. 77 21       |ja     short 004033BB      
    0040339A |. 8D0480     |lea   eax, [eax+eax*4]     
    0040339D |. 01C0       |add   eax, eax
    0040339F |. 01D8       |add   eax, ebx               \\得到的值存放在eax中
    004033A1 |. 8A1E       |mov   bl, [esi]
    004033A3 |. 46         |inc   esi
    004033A4 |. 84DB       |test   bl, bl
    004033A6 |.^ 75 E6       \jnz   short 0040338E
    004033A8 |> FECD       dec   ch
    004033AA |. 74 09       je     short 004033B5
    004033AC |. 85C0       test   eax, eax
    004033AE |. 7D 54       jge   short 00403404
    004033B0 |. EB 09       jmp   short 004033BB
    004033B2 |> 46         inc   esi
    004033B3 |. EB 06       jmp   short 004033BB
    004033B5 |> F7D8       neg   eax
    004033B7 |. 7E 4B       jle   short 00403404
    004033B9 |. 78 49       js     short 00403404
    004033BB |> 5B         pop   ebx                     ; Default case of switch 004033DB
    004033BC |. 29DE       sub   esi, ebx
    004033BE |. EB 47       jmp   short 00403407
    004033C0 |> FEC5       inc   ch
    004033C2 |> 8A1E       mov   bl, [esi]
    004033C4 |. 46         inc   esi
    004033C5 |.^ EB 9C       jmp   short 00403363
    004033C7 |> BF FFFFFF0F   mov   edi, 0FFFFFFF             ; Cases 24 ('$'),58 ('X'),78 ('x') of switch 00403363
    004033CC |. 8A1E       mov   bl, [esi]
    004033CE |. 46         inc   esi
    004033CF |. 84DB       test   bl, bl
    004033D1 |.^ 74 DF       je     short 004033B2
    004033D3 |> 80FB 61     /cmp   bl, 61
    004033D6 |. 72 03       |jb     short 004033DB
    004033D8 |. 80EB 20     |sub   bl, 20
    004033DB |> 80EB 30     |sub   bl, 30                 ; Switch (cases 30..46)
    004033DE |. 80FB 09     |cmp   bl, 9
    004033E1 |. 76 0B       |jbe   short 004033EE
    004033E3 |. 80EB 11     |sub   bl, 11
    004033E6 |. 80FB 05     |cmp   bl, 5
    004033E9 |.^ 77 D0       |ja     short 004033BB
    004033EB |. 80C3 0A     |add   bl, 0A                 ; Cases 41 ('A'),42 ('B'),43 ('C'),44 ('D'),45 ('E'),46 ('F') of switch 004033DB
    004033EE |> 39F8       |cmp   eax, edi                 ; Cases 30 ('0'),31 ('1'),32 ('2'),33 ('3'),34 ('4'),35 ('5'),36 ('6'),37 ('7'),38 ('8'),39 ('9') of switch 004033DB
    004033F0 |.^ 77 C9       |ja     short 004033BB
    004033F2 |. C1E0 04     |shl   eax, 4
    004033F5 |. 01D8       |add   eax, ebx
    004033F7 |. 8A1E       |mov   bl, [esi]
    004033F9 |. 46         |inc   esi
    004033FA |. 84DB       |test   bl, bl
    004033FC |.^ 75 D5       \jnz   short 004033D3
    004033FE |. FECD       dec   ch
    00403400 |. 75 02       jnz   short 00403404
    00403402 |. F7D8       neg   eax
    00403404 |> 59         pop   ecx
    00403405 |. 31F6       xor   esi, esi
    00403407 |> 8932       mov   [edx], esi
    00403409 |. 5F         pop   edi
    0040340A |. 5E         pop   esi
    0040340B |. 5B         pop   ebx
    0040340C \. C3         retn


    算了,这个是在不好写破文,这么多的call调用
    我直接总结算法
    给除我写的算法注册机得了
    刚刚学vb编程,书都没有看就在上,程序写得是在是难,请高手指导一二

    Dim jiqima As String
    Private Sub Form_Load()
    End Sub
    Private Sub Label4_Click()
    End
    End Sub
    Public Sub Label5_Click()
    jiqima = Text1.Text
    If Len(jiqima) <> 12 Then
    e = MsgBox("错误!请输入本机注册时显示的12位机器码!", 0, "错误提示")
    GoTo kk
    End If
    a = Left(jiqima, 4)
    temp = Right(jiqima, 8)
    b = Left(temp, 4)
    c = Right(temp, 4)
    For i = 1 To 4
      eax1 = eax1 * &HA
      ebx1 = Val(Mid(a, i, 1))
      eax1 = eax1 + ebx1
    Next i
    eax1 = Hex(eax1)
    d = Len(eax1)
    Select Case d
    Case 1
      eax1 = "000" + eax1
    Case 2
      eax1 = "00" + eax1
    Case 3
      eax1 = "0" + eax1
    Case 4
      ex1 = "eax1"
    End Select
    For i = 1 To 4
      eax2 = eax2 * &HA
      ebx2 = Val(Mid(b, i, 1))
      eax2 = eax2 + ebx2
    Next i
    eax2 = Hex(eax2 + &H83E)
    e = Len(eax2)
    Select Case e
    Case 1
      eax2 = "0000" + eax2
    Case 2
      eax2 = "000" + eax2
    Case 3
      eax2 = "00" + eax2
    Case 4
      eax2 = "0" + eax2
    Case 4
      eax2 = "eax2"
    End Select
    For i = 1 To 4
      eax3 = eax3 * &HA
      ebx3 = Val(Mid(c, i, 1))
      eax3 = eax3 + ebx3
    Next i
    eax3 = Hex(eax3 + &H6E)
    f = Len(eax3)
    Select Case f
    Case 1
      eax3 = "000" + eax3
    Case 2
      eax3 = "00" + eax3
    Case 3
      eax3 = "0" + eax3
    Case 4
      ex3 = "eax3"
    End Select
    Text2.Text = "T" + eax1 + "-" + "Y" + eax2 + "-" + eax3
    kk: End Sub

    [ 本帖最后由 gg1211 于 2006-3-14 05:57 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?加入我们

    x
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-3-30 17:42
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2006-4-20 00:15:34 | 显示全部楼层
    兄弟的技术,我知道的!支持!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-4-22 14:35:59 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表