飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4907|回复: 7

[原创] 也说最新半仙现代汉语词典追码

[复制链接]
  • TA的每日心情
    无聊
    2024-1-15 22:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2009-8-29 20:54:25 | 显示全部楼层 |阅读模式
    看了jinbiao911写的【最新半仙 现代汉语词典 破解过程】https://www.chinapyg.com/viewthr ... &extra=page%3D1

    一文,对这个软件有点兴趣,装上看看。
    高手行文天马行空,来龙去脉没怎么交代,初学者看来还是摸不着头脑。
    试了jinbiao911给出的注册码,注册失败,只好自己跟跟看。

    Peid一查,ASPack 2.12 -> Alexey Solodovnikov
    第一步自然是脱壳了。

    OD载入直接停在
    00628001 hy>  60                pushad
    根据ESP定律,
    下断点在0013FFC0

    F9进去,停在

    006283B0     /75 08             jnz short hycd.006283BA
    006283B2     |B8 01000000       mov eax,1
    006283B7     |C2 0C00           retn 0C
    006283BA     \68 20BC5200       push hycd.0052BC20
    006283BF      C3                retn
    OEP在
    0052BC20      55                push ebp

    右键Dump下来,修复一下就搞定了。

    OP载入脱了壳的文件dump_.exe。搜索字符串
    有:“注册失败,请重试,重试失败请直接与作者联系”
    双击进去到了
    00527228      B8 24735200       mov eax,dump_.00527324
    -----------------------------------------------------------------------
    00527156      E8 8DDAEDFF       call dump_.00404BE8
    0052715B      0F85 C7000000     jnz dump_.00527228
    00527161      A1 BCFA5200       mov eax,dword ptr ds:[52FABC]
    00527166      8B00              mov eax,dword ptr ds:[eax]
    00527168      8B80 A0030000     mov eax,dword ptr ds:[eax+3A0]
    0052716E      33D2              xor edx,edx
    00527170      E8 0FECF1FF       call dump_.00445D84
    00527175      A1 BCFA5200       mov eax,dword ptr ds:[52FABC]
    0052717A      8B00              mov eax,dword ptr ds:[eax]
    0052717C      8B80 9C030000     mov eax,dword ptr ds:[eax+39C]
    00527182      B2 01             mov dl,1
    00527184      E8 FBEBF1FF       call dump_.00445D84
    00527189      8D55 DC           lea edx,dword ptr ss:[ebp-24]
    0052718C      8B83 04030000     mov eax,dword ptr ds:[ebx+304]
    00527192      E8 CDECF1FF       call dump_.00445E64
    00527197      8B4D DC           mov ecx,dword ptr ss:[ebp-24]
    0052719A      BA F4725200       mov edx,dump_.005272F4                  ; ASCII "yhdsger"
    0052719F      8BC6              mov eax,esi
    005271A1      E8 6279F4FF       call dump_.0046EB08
    005271A6      8D55 D4           lea edx,dword ptr ss:[ebp-2C]
    005271A9      A1 0CF95200       mov eax,dword ptr ds:[52F90C]
    005271AE      8B00              mov eax,dword ptr ds:[eax]
    005271B0      E8 1304F4FF       call dump_.004675C8
    005271B5      8B45 D4           mov eax,dword ptr ss:[ebp-2C]
    005271B8      8D55 D8           lea edx,dword ptr ss:[ebp-28]
    005271BB      E8 6024EEFF       call dump_.00409620
    005271C0      8D45 D8           lea eax,dword ptr ss:[ebp-28]
    005271C3      BA 04735200       mov edx,dump_.00527304                  ; ASCII "cf.dll"
    005271C8      E8 DFD8EDFF       call dump_.00404AAC
    005271CD      8B45 D8           mov eax,dword ptr ss:[ebp-28]
    005271D0      E8 A323EEFF       call dump_.00409578
    005271D5      3C 01             cmp al,1
    005271D7      75 2F             jnz short dump_.00527208
    005271D9      8D55 CC           lea edx,dword ptr ss:[ebp-34]
    005271DC      A1 0CF95200       mov eax,dword ptr ds:[52F90C]
    005271E1      8B00              mov eax,dword ptr ds:[eax]
    005271E3      E8 E003F4FF       call dump_.004675C8
    005271E8      8B45 CC           mov eax,dword ptr ss:[ebp-34]
    005271EB      8D55 D0           lea edx,dword ptr ss:[ebp-30]
    005271EE      E8 2D24EEFF       call dump_.00409620
    005271F3      8D45 D0           lea eax,dword ptr ss:[ebp-30]
    005271F6      BA 04735200       mov edx,dump_.00527304                  ; ASCII "cf.dll"
    005271FB      E8 ACD8EDFF       call dump_.00404AAC
    00527200      8B45 D0           mov eax,dword ptr ss:[ebp-30]
    00527203      E8 8023EEFF       call dump_.00409588
    00527208      A1 BCFA5200       mov eax,dword ptr ds:[52FABC]
    0052720D      8B00              mov eax,dword ptr ds:[eax]
    0052720F      8B80 34030000     mov eax,dword ptr ds:[eax+334]
    00527215      BA 14735200       mov edx,dump_.00527314
    0052721A      E8 75ECF1FF       call dump_.00445E94
    0052721F      8BC3              mov eax,ebx
    00527221      E8 8EC6F3FF       call dump_.004638B4
    00527226      EB 24             jmp short dump_.0052724C
    00527228      B8 24735200       mov eax,dump_.00527324
    0052722D      E8 DA7AF1FF       call dump_.0043ED0C;注册失败call
    -----------------------------------------------------------------------------------
    向上分析马上就知道关键跳在:
    0052715B      0F85 C7000000     jnz dump_.00527228
    在它上面的call下断,重新载入dump_.exe。
    寄存器窗口的EDX写着一串字符串。经验证,这就是注册码。

    随后试了试跟注册码算法。发现上边几个call 全部是用来变换注册码的,非常繁琐。
    比如:

    。。。。。。
    004031AD      46                inc esi
    004031AE      80FB 20           cmp bl,20                               ; 判断前边是不是输入空格了,如果有空格接着读下一个字符
    004031B1    ^ 74 F8             je short dump_.004031AB
    004031B3      B5 00             mov ch,0
    004031B5      80FB 2D           cmp bl,2D                               ; 是“-”吗?
    004031B8      74 62             je short dump_.0040321C
    004031BA      80FB 2B           cmp bl,2B                               ; 是“+”吗?
    004031BD      74 5F             je short dump_.0040321E
    004031BF      80FB 24           cmp bl,24                               ; 是“$”吗?
    004031C2      74 5F             je short dump_.00403223
    004031C4      80FB 78           cmp bl,78                               ; 是“x”吗
    004031C7      74 5A             je short dump_.00403223
    004031C9      80FB 58           cmp bl,58                               ; 是“X”吗
    004031CC      74 55             je short dump_.00403223
    004031CE      80FB 30           cmp bl,30                               ; 是“0”吗?
    004031D1      75 13             jnz short dump_.004031E6                ; 不是0则跳
    004031D3      8A1E              mov bl,byte ptr ds:[esi]                ; 是0则读下一个数字
    004031D5      46                inc esi
    004031D6      80FB 78           cmp bl,78                               ; 又比较一番
    004031D9      74 48             je short dump_.00403223
    004031DB      80FB 58           cmp bl,58
    004031DE      74 43             je short dump_.00403223
    004031E0      84DB              test bl,bl
    004031E2      74 20             je short dump_.00403204
    004031E4      EB 04             jmp short dump_.004031EA
    004031E6      84DB              test bl,bl
    004031E8      74 2D             je short dump_.00403217
    004031EA      80EB 30           sub bl,30                               ; 减去30
    004031ED      80FB 09           cmp bl,9                                ; 跟9比较
    004031F0      77 25             ja short dump_.00403217                 ; 判断大于39吗?也就是判断是不是数字
    004031F2      39F8              cmp eax,edi
    004031F4      77 21             ja short dump_.00403217
    004031F6      8D0480            lea eax,dword ptr ds:[eax+eax*4]        ; EAX是关键
    004031F9      01C0              add eax,eax
    004031FB      01D8              add eax,ebx                             ; ebx:(31 到39)-30
    004031FD      8A1E              mov bl,byte ptr ds:[esi]                ; 下一个字符
    004031FF      46                inc esi
    00403200      84DB              test bl,bl                              ; 读完跳出,没读完退回
    。。。。。

    输入序列号的时候除了数字其他的都不能输入,也不能copy&paste,这会儿却还要比来比去的校验数字,而Eax的变换才是计算注册码的第一步。软件编写的太不简练,可读性也比较差。不胜其烦不跟了。直接做了内存注册机了事。

    试了下,本注册机在未脱壳的原版exe文件下一样可以使用。
    Snap1.gif

    内存注册机.rar

    7.06 KB, 下载次数: 2, 下载积分: 飘云币 -2 枚

    售价: 1 枚飘云币  [记录]

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-8-30 12:00:25 | 显示全部楼层
    这篇颇文很详细。
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2015-10-9 11:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-9-2 06:58:42 | 显示全部楼层
    写的黑好,学习了。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-9-5 10:42:27 | 显示全部楼层
    下来学习一下
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-10-6 01:42:13 | 显示全部楼层
    学习ing/:011
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2025-1-14 17:53
  • 签到天数: 235 天

    [LV.7]常住居民III

    发表于 2009-10-6 06:51:45 | 显示全部楼层
    详细的破文  不错!  /:014
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2015-12-1 21:50
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-10-8 21:22:50 | 显示全部楼层
    很详细,拿来学习用,谢谢楼主
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-7-18 22:39
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-10-12 17:36:06 | 显示全部楼层
    菜鸟要慢慢理解了,呵呵
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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