楚汉棋缘1.29版脱壳加追码
小弟不才,让大家见笑了,最近主任和主任爱上了下象棋,由于公司不能上互联网,主任机器上又只有这个很老的象棋版本,据说是主任2004年从什么光盘上拷过来的,一看没破解,功能受限制很不爽,于是自己动手了,网上都没有这个的注册码,太老了,只有更新的那些,正好就练练手了,但是现在还没把码给追出来,/:010 好了,废话不多说,GO1.程序载入后来到这里
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 编辑 ] 04年的象棋软件居然也这么**啊。。。
重启验证,/:L
看来以后分析软件修复不能运行也可以从字符串入手啊 ~
半夜三更没有人做沙发,我来先做沙发了。。
睡觉了 。希望大鸟门能解释楼主遇到的问题~ 呵呵,楼上的,我还没睡,还在搞,你在忙什么,有空一起研究研究 跟踪了1.46版本。
没有加壳。
搜索字符串
找到注册成功,向上到
0044403A|. /0F84 22010000 je 00444162 下断
更改标志位z
运行 注册成功。 现在就是1.46我会破啊,关键是这个啊,这个1.29很不好搞
已经搞定了
没有任何的限制了,高级和中级的都可以用注册地方已经变成感谢注册 呵呵我把方法告诉大家吧,
1、是查找字符串可以看到“授权与”找到段首一路F8就可以找到真的注册码了
2、通过DEDE找到按钮事件,在OD下断,也是一路F8也可以找到真的注册码了
http://i.namipan.com/files/2bbccc49b567859109fdba9d7e037aaf8b39541f914e0000204e/3/1.jpg
http://i.namipan.com/files/601c46e8ba9fd77b8ad16e08db3fa4aa55ed967baa750000e5e0/3/1.jpg 恭喜你了 ~一天就搞定了 ~! 6楼破解的是1.29吗,能详细讲一下么,在线等你/:001 一路F8找不到注册码........../:L
6楼的兄弟你具体是怎么找的? 可以啊 我都找到了 就是1.29的我下的就是他给的下载地址