首页
社区
课程
招聘
[旧帖] [原创][邀请码已发放]也说XX汉语词典追码 0.00雪花
发表于: 2009-8-29 20:57 1101

[旧帖] [原创][邀请码已发放]也说XX汉语词典追码 0.00雪花

2009-8-29 20:57
1101
看了jinbiao911写的【最新半仙 现代汉语词典 破解过程】一文,对这个软件有点兴趣,装上看看。
高手行文天马行空,来龙去脉没怎么交代,初学者看来还是摸不着头脑。
试了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文件下一样可以使用。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//