- UID
- 38367
注册时间2007-12-1
阅读权限10
最后登录1970-1-1
周游历练
该用户从未签到
|
小弟不才,让大家见笑了,最近主任和主任爱上了下象棋,由于公司不能上互联网,主任机器上又只有这个很老的象棋版本,据说是主任2004年从什么光盘上拷过来的,一看没破解,功能受限制很不爽,于是自己动手了,网上都没有这个的注册码,太老了,只有更新的那些,正好就练练手了,但是现在还没把码给追出来,/:010 好了,废话不多说,GO
1.程序载入后来到这里
0073F001 > 60 pushad ;F8单步
0073F002 E8 02000000 call 0073F009 ;ESP定律对付,对ESP下硬件访问断点
0073F007 EB 09 jmp short 0073F012
0073F009 5D pop ebp
0073F00A 55 push ebp
0073F00B 81ED 39394400 sub ebp, 00443939
0073F011 C3 retn
2.F8单步后对ESP下硬件断点,右键ESP-数据跟随-下硬件访问断点-word,然后F9运行,程序断到
0073F3B6 /75 08 jnz short 0073F3C0
0073F3B8 |B8 01000000 mov eax, 1
0073F3BD |C2 0C00 retn 0C
0073F3C0 \68 00104000 push 00401000
0073F3C5 C3 retn
3.F8运行到返回,程序来到OEP(一定要从这里DUMP,否则程序会出错)
00401000 /EB 10 jmp short 00401012 ;从这里DUMP!!!
00401002 |66:623A bound di, dword ptr [edx]
00401005 |43 inc ebx
00401006 |2B2B sub ebp, dword ptr [ebx]
00401008 |48 dec eax
00401009 |4F dec edi
0040100A |4F dec edi
0040100B |4B dec ebx
0040100C |90 nop
0040100D -|E9 6C544B00 jmp 008B647E
00401012 \A1 5F544B00 mov eax, dword ptr [4B545F]
00401017 C1E0 02 shl eax, 2
0040101A A3 63544B00 mov dword ptr [4B5463], eax
0040101F 52 push edx
00401020 6A 00 push 0
00401022 E8 A52B0B00 call 004B3BCC ; jmp 到 kernel32.GetModuleHandleA
00401027 8BD0 mov edx, eax
00401029 E8 9ED30900 call 0049E3CC
0040102E 5A pop edx
4.DUMP后运行程序会提示出错,但PEID检测已经过了,我当时就以为未DUMP成功,还修复文件头,走了很多弯路,原来这是作者玩的小把戏,具体是用几个子函数处理过的值来检测是否已经脱壳,并提示程序被破坏,进而直接退出,冷静,直接上OD调试,查找超级字符参考
超子字符参考
5.双击[注意:文件受到破坏]来到这里
00401BF5 |. BA 02000000 mov edx, 2
00401BFA |. E8 2D8A0A00 call 004AA62C
00401BFF |. 59 pop ecx
00401C00 |. 84C9 test cl, cl
00401C02 74 5A je short 00401C5E ;更改跳转JE-JNZ
00401C04 |. 66:C743 10 14>mov word ptr [ebx+10], 14
00401C0A |. BA DB5E4B00 mov edx, 004B5EDB ; 注意:文件受到破坏!
00401C0F |. 8D45 F8 lea eax, dword ptr [ebp-8]
6.还有一处
00401C5D |. 59 pop ecx
00401C5E |> 833D EC544B00>cmp dword ptr [4B54EC], 0
00401C65 75 52 jnz short 00401CB9 ;jnz--je 跳过
00401C67 |. 66:C743 10 20>mov word ptr [ebx+10], 20
00401C6D |. BA F05E4B00 mov edx, 004B5EF0 ; 程序有误,请写信告诉我该错误详细发生情况,谢谢.
00401C72 |. 8D45 F0 lea eax, dword ptr [ebp-10]
至此脱壳完成,程序也可以正常运行了,然后可以开始追码,程序使用的时候KEYFILE文件验证思路,会在系统根目录下生成chess.dat文件,里面存放的就是加密了的注册用户名Username和注册码SN还有一些主程序需要读取的一系列参数,我现在发现了一个小BUG就是脱完壳后的程序运行一次后,系统会自动生成chess.dat文件,也就是说只有一次注册机会,没有正确码就不能继续注册了,不过可以删掉该文件后继续注册,程序重启会验证chess.dat文件里的注册码,真就显示已注册给XXXX,但原程序则不会有这样的BUG,具体我也没深入分析,程序注册点了以后什么反应都没有,不知道怎么下断分析,试了好久没什么进展,貌似也无法爆破,大家帮忙来分析一下看看,先睡了!
[ 本帖最后由 ioryvskyo 于 2008-4-22 18:06 编辑 ] |
|