首页
社区
课程
招聘
[原创]联众保皇记牌器 3.10 破解流程(微软API加密)
发表于: 2005-10-9 16:32 8508

[原创]联众保皇记牌器 3.10 破解流程(微软API加密)

2005-10-9 16:32
8508
标题:联众保皇记牌器 3.10 破解流程(微软API加密)
作者:oHuangKeo
目的:技术交流,无心针对性破解。
程序:联众保皇记牌器 3.10
备注:游戏是用来娱乐的,消磨无聊时光的。不应日夜抱着当老婆。
建议:在破解程序时可以打开TTPlayer听听音乐。

1.查壳
    用PEid查壳得之为“ASPack 2.12 -> Alexey Solodovnikov”。不管什么壳,尽量手脱。

2.手脱壳
    用OD加载,代码如下:
004B1001 >  60              pushad
004B1002    E8 03000000     call    LZBH.004B100A
004B1007  - E9 EB045D45     jmp     45A814F7
004B100C    55              push    ebp                              ; LZBH.004B1008
004B100D    C3              retn
    一开始就有两组花指令,然后是得到重定位基值。我也懒得去花了,只是一般性的壳,自己小心点就好了。一路按F7。当按了14次F7时,来到这里:
004B102F   /0F85 65030000   jnz     LZBH.004B139A
    在这里按回车(为什么要这样做?因为这里是个大跳,去看看后面要做些什么。),将来到:
004B139A    B8 E0760500     mov     eax, 576E0
    向下看看都有些什么东西。哇,有两个"retn".不得了,以脱过几次壳的经验,这里很可能就会去OEP啦。在第二个"retn"下断,然后F9运行程序。
    好,程序断在刚才下断这里:004B13BF retn。看上面是什么?刚才明明是"push 0",现在变成"push 4576E0"了。这里过去就是OEP了。F7跟进,就在这里脱壳啦。怎么脱我就不细说了。

3.试着运行一下程序,诶,可以运行。只是会出现一个错误窗口。好,只要能运行就行了,能用于破解就够了。
     程序运行后有个软件注册窗口,上面清楚地告诉我们,要想破解,得在C盘建立一个Key文件,文件验证为Key方法验证。(这里向作者道个谢,少了不少的麻烦。而且还告诉我们不是启动式校验。)

4.打开Filemon,重新运行程序。哦,原来是"LZBH.key".好了,没有我就新建个,内容先随便填填。

5.用OD加载脱后的程序(注意:加载时要把以前运行的程序关了,因为程序只能运行一个)。下断,断下这些东西:ReadFile,SetFilePointer.  CreateFileA就不用断了,没什么意义。按F9运行。唉呀,OD怎么跑了。原来程序有反调试。别怕,来个狠方法:动态附加。

6.运行原版程序,等到注册框出现时,有OD附加。进入程序的代码空间。然后照上面的方法下断。然后F9程序继续运行。点注册,被OD断下了,断在ReadFile处,看看堆栈,读0个字节,没用,继续F9.断在SetFilePointer了,定位到文件首,没用,F9继续。。。。就这样小心按F9,OD断到又断到ReadFile了,要读0x64大小的内容(我那个Key文件就是这么大。)好,这里回去,后面应该就是判断注册码了。Alt+F9,运行到用户代码区。
来到这里:
00408819    85C0            test    eax, eax
然后一路按F8,小心每一个比较和条件跳转。一路上都没有什么,最后来到
00416D32    E8 F1C8FEFF     call    LZBH.00403628
00416D37    C3              retn
,后面就是retn返回了,这里这个CALL很关键,F7进去。进去后又是这个Call,再进去。(最怕这种一层一层进去CAll了,到后来不知道哪里是哪里了。)这下惨了,进去后,后面有4个CAll,怎么办?不会一个一个F7进去看吧。不急,先去每个Call看看,里面都有些什么。好像都没做什么。那就一路F8吧,反正如果失败了,可以再来。
当来到这里时要小心了:
0045524E    8D45 F8         lea     eax, dword ptr ss:[ebp-8]
00455251    50              push    eax
00455252    6A 00           push    0
00455254    6A 00           push    0
00455256    68 03800000     push    8003
0045525B    8B45 F0         mov     eax, dword ptr ss:[ebp-10]
0045525E    50              push    eax
0045525F    E8 D4F6FFFF     call    LZBH.00454938                    ; jmp to advapi32.CryptCreateHash

CryptCreateHash----这个好像是一个API函数嘛。(费话!)这个微软的加密解密API嘛,怎么用我就不清楚了,没用过。
    此时心里怕怕了,这玩意没搞过,怎么办?怎么办?又一想,再怎么它也要比较吧,不然怎么知道注册码是否正确。再说了,这是Delphi写的程序,一般来说不会做些汇编级的手脚。
    那就向下看嘛,找比较。不远的地址就发现一个,而且只有一个:
004552C3    83F8 01         cmp     eax, 1
004552C6    1BC0            sbb     eax, eax
004552C8    40              inc     eax
004552C9    8845 FF         mov     byte ptr ss:[ebp-1], al
004552CC    33C0            xor     eax, eax
    分析一下:上面一个API返回的eax和1比较,应该是True或False比较了。
后面又把al传给[ebp-1],这应该是这个局部变量吧。好,那就在004552C3处下断,看看这里的eax是0还是1.
    断点后运行,在004552C3处断下了。看看eax。!!!果然,是0,为什么?因为注册码是错的,当然是False了。现在把eax改成1.然后F9运行。(这一步只是先碰个运气。)
    运行后,那个注册框不见了。再从右下角调出注册框,哈哈,最喜欢的几个字“软件已注册”。

    到这里已经知道如何破解这个软件了,属暴破。我没有安装联众的注册,不知道是否完全OK了,我想应该没问题了。
    不可能每次用都要这种用OD破解吧。修改程序行吗?行,但刚才已经知道脱壳后的已经有些问题了,不太好。只有做个内存注册器比较好。

    以后有时间了再分析一下这个注册算法吧。
    小弟献丑了!

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

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 442
活跃值: (1221)
能力值: ( LV12,RANK:1130 )
在线值:
发帖
回帖
粉丝
2
看了题目 微软API加密 吓我一跳
2005-10-9 16:58
0
雪    币: 3697
活跃值: (4262)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
3
不完善吧,你用用看,还是有2次限制的。
2005-10-9 17:11
0
雪    币: 142
活跃值: (278)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
4
我就是没有装这程序,没法验证哇。我想别的地方验证应该差不多,应该好找的。
004552C9    8845 FF         mov     byte ptr ss:[ebp-1], al
这里把al给了局部就是变量,在最后返回时又做了处理的,你可以看看。
2005-10-9 17:28
0
雪    币: 3697
活跃值: (4262)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
5
baby2008看看
2005-10-9 17:36
0
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
6
曾经看过,一看是微软API加密马上走人
2005-10-9 19:36
0
雪    币: 300
活跃值: (412)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
7
似乎听说过,是dll里面验证的。
2005-10-9 19:49
0
雪    币: 214
活跃值: (15)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
支持一下楼主!
2005-10-9 21:54
0
雪    币: 3697
活跃值: (4262)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
9
难道有文件校验?
2005-10-9 22:31
0
雪    币: 3697
活跃值: (4262)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
10
楼主继续研究啊,怎么没动静了,我修改了下,好象dll有校验,脱壳了就不能HOOK牌了。
2005-10-10 15:28
0
雪    币: 10
活跃值: (130)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
我搞过斗地主和拖拉机。这些软件在 dll 里面还有两个小暗桩。
2005-10-11 12:56
0
雪    币: 142
活跃值: (278)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
12
最初由 china 发布
楼主继续研究啊,怎么没动静了,我修改了下,好象dll有校验,脱壳了就不能HOOK牌了。


不没装那游戏,我也不会玩那牌,不喜欢的东西我爱碰.我也没有十足的信心搞得定哦.
2005-10-11 13:07
0
游客
登录 | 注册 方可回帖
返回
//