ioryvskyo 发表于 2008-4-20 01:40:35

楚汉棋缘1.29版脱壳加追码

小弟不才,让大家见笑了,最近主任和主任爱上了下象棋,由于公司不能上互联网,主任机器上又只有这个很老的象棋版本,据说是主任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
00401005   |43            inc   ebx
00401006   |2B2B            sub   ebp, dword ptr
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
00401017    C1E0 02         shl   eax, 2
0040101A    A3 63544B00   mov   dword ptr , 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 , 14
00401C0A|.BA DB5E4B00   mov   edx, 004B5EDB                  ;注意:文件受到破坏!
00401C0F|.8D45 F8       lea   eax, dword ptr


6.还有一处
00401C5D|.59            pop   ecx
00401C5E|>833D EC544B00>cmp   dword ptr , 0
00401C65      75 52         jnz   short 00401CB9                  ;jnz--je 跳过
00401C67|.66:C743 10 20>mov   word ptr , 20
00401C6D|.BA F05E4B00   mov   edx, 004B5EF0                   ;程序有误,请写信告诉我该错误详细发生情况,谢谢.
00401C72|.8D45 F0       lea   eax, dword ptr


至此脱壳完成,程序也可以正常运行了,然后可以开始追码,程序使用的时候KEYFILE文件验证思路,会在系统根目录下生成chess.dat文件,里面存放的就是加密了的注册用户名Username和注册码SN还有一些主程序需要读取的一系列参数,我现在发现了一个小BUG就是脱完壳后的程序运行一次后,系统会自动生成chess.dat文件,也就是说只有一次注册机会,没有正确码就不能继续注册了,不过可以删掉该文件后继续注册,程序重启会验证chess.dat文件里的注册码,真就显示已注册给XXXX,但原程序则不会有这样的BUG,具体我也没深入分析,程序注册点了以后什么反应都没有,不知道怎么下断分析,试了好久没什么进展,貌似也无法爆破,大家帮忙来分析一下看看,先睡了!

[ 本帖最后由 ioryvskyo 于 2008-4-22 18:06 编辑 ]

daan 发表于 2008-4-20 01:47:54

04年的象棋软件居然也这么**啊。。。
重启验证,/:L
看来以后分析软件修复不能运行也可以从字符串入手啊 ~
半夜三更没有人做沙发,我来先做沙发了。。
睡觉了 。希望大鸟门能解释楼主遇到的问题~

ioryvskyo 发表于 2008-4-20 02:13:52

呵呵,楼上的,我还没睡,还在搞,你在忙什么,有空一起研究研究

moodykeke 发表于 2008-4-20 15:40:36

跟踪了1.46版本。
没有加壳。
搜索字符串
找到注册成功,向上到
0044403A|. /0F84 22010000 je      00444162   下断
更改标志位z
运行 注册成功。

ioryvskyo 发表于 2008-4-20 16:49:22

现在就是1.46我会破啊,关键是这个啊,这个1.29很不好搞

wiliiwin 发表于 2008-4-20 18:23:22

已经搞定了

没有任何的限制了,高级和中级的都可以用注册地方已经变成感谢注册 呵呵

我把方法告诉大家吧,
1、是查找字符串可以看到“授权与”找到段首一路F8就可以找到真的注册码了
2、通过DEDE找到按钮事件,在OD下断,也是一路F8也可以找到真的注册码了

http://i.namipan.com/files/2bbccc49b567859109fdba9d7e037aaf8b39541f914e0000204e/3/1.jpg

http://i.namipan.com/files/601c46e8ba9fd77b8ad16e08db3fa4aa55ed967baa750000e5e0/3/1.jpg

daan 发表于 2008-4-20 18:31:53

恭喜你了 ~一天就搞定了 ~!

ioryvskyo 发表于 2008-4-20 20:36:31

6楼破解的是1.29吗,能详细讲一下么,在线等你/:001

ioryvskyo 发表于 2008-4-20 21:01:54

一路F8找不到注册码........../:L

6楼的兄弟你具体是怎么找的?

wiliiwin 发表于 2008-4-21 00:21:42

可以啊 我都找到了 就是1.29的我下的就是他给的下载地址
页: [1] 2 3
查看完整版本: 楚汉棋缘1.29版脱壳加追码