吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 22282|回复: 51
收起左侧

[原创] ByPass-WinLicense 硬件锁定[2.1.010-2.1.332]

    [复制链接]
streamload 发表于 2011-3-29 22:57
7大侠发布了个游戏,没事玩了下,写了个过程,给大家参考参考。。希望不要BS。。
游戏地址 http://www.52pojie.cn/thread-84939-1-1.html

其实没有什么技术含量,完全是参考cektop大牛的作品才有这个过硬件锁定。
一、找跳向VM的第一个jmp
    OD载入程序运行,弹出对话框,暂停程序。翻堆栈。。找到如下
0012FF18   |00C5FC77  返回到 00C5FC77 来自 00C75806
0012FF1C   |00000000
0012FF20   |00549193  ASCII "This application has been registered to Pass HWD - Unpack.CN"
0012FF24   |0040E6A1  ASCII "WinLicense"
0012FF28   |00000040
0012FF2C   |00000000
0012FF30   |FFFFFFFF
0012FF34   \F24CD014
0012FF38    00463D27  返回到 迷宫7_se.00463D27==========》反汇编窗口跟随
0012FF3C    00000000
0012FF40    00549193  ASCII "This application has been registered to Pass HWD - Unpack.CN"
0012FF44    0040E6A1  ASCII "WinLicense"
0012FF48    00000040
0012FF4C    00000000
0012FF50    000206E9
0012FF54    00549192  ASCII "5This application has been registered to Pass HWD - Unpack.CN"
00463D27    61                                POPAD=============》硬件执行断点
00463D28    C3                                RETN
继续运行程序,点确定断在 00463D27,F8单步2下,就返回到跳向VM的jmp
00549393    00E9                              ADD CL,CH
00549395    14 0F                             ADC AL,0xF
00549397    0000                              ADD BYTE PTR DS:[EAX],AL
00549399    68 DCC7070E                       PUSH 0xE07C7DC
0054939E  ^ E9 66C2ECFF                       JMP 迷宫7_se.00415609
005493A3    68 A9C9070E                       PUSH 0xE07C9A9
005493A8  ^ E9 5CC2ECFF                       JMP 迷宫7_se.00415609
005493AD    68 19CB070E                       PUSH 0xE07CB19
005493B2  ^ E9 52C2ECFF                       JMP 迷宫7_se.00415609
005493B7    68 D7CB070E                       PUSH 0xE07CBD7================》停在这里,向上找
005493BC  ^ E9 48C2ECFF                       JMP 迷宫7_se.00415609
005493C1    68 60CE070E                       PUSH 0xE07CE60
005493C6  ^ E9 3EC2ECFF                       JMP 迷宫7_se.00415609
005493CB    68 0ED0070E                       PUSH 0xE07D00E
005493D0  ^ E9 34C2ECFF                       JMP 迷宫7_se.00415609
二进制编辑00549393的第一个字节00,编辑为90,代码变为如下
00549393    90                                NOP
00549394    E9 140F0000                       JMP 迷宫7_se.0054A2AD
00549399    68 DCC7070E                       PUSH 0xE07C7DC
0054939E  ^ E9 66C2ECFF                       JMP 迷宫7_se.00415609
005493A3    68 A9C9070E                       PUSH 0xE07C9A9
00549394就是第一个jmp的地址这个地址我们脚本要用到。

二、找cmp ecx,eax地址
在上面找到的第一个jmp地址下硬件执行断点,然后重载程序。运行,停在第一个jmp处,如下
00549394   /E9 140F0000                       JMP 迷宫7_se.0054A2AD=========》停在这里
00549399   |68 DCC7070E                       PUSH 0xE07C7DC
0054939E  ^|E9 66C2ECFF                       JMP 迷宫7_se.00415609=========》在这里按回车跟随代码
005493A3   |68 A9C9070E                       PUSH 0xE07C9A9
005493A8  ^|E9 5CC2ECFF                       JMP 迷宫7_se.00415609
005493AD   |68 19CB070E                       PUSH 0xE07CB19
005493B2  ^|E9 52C2ECFF                       JMP 迷宫7_se.00415609
005493B7   |68 D7CB070E                       PUSH 0xE07CBD7
005493BC  ^|E9 48C2ECFF                       JMP 迷宫7_se.00415609
005493C1   |68 60CE070E                       PUSH 0xE07CE60
005493C6  ^|E9 3EC2ECFF                       JMP 迷宫7_se.00415609
005493CB   |68 0ED0070E                       PUSH 0xE07D00E
005493D0  ^|E9 34C2ECFF                       JMP 迷宫7_se.00415609
到这里,搜索命令序列
cmp ecx,eax
pushfd
00415609    9C                                PUSHFD=================》上面跟到这里,然后搜索命令序列
0041560A    68 44490000                       PUSH 0x4944
0041560F    893C24                            MOV DWORD PTR SS:[ESP],EDI
00415612    54                                PUSH ESP
00415613    8B3C24                            MOV EDI,DWORD PTR SS:[ESP]
找到的第一处
00417CA0    3BC8                              CMP ECX,EAX =======下硬件执行断点
00417CA2    9C                                PUSHFD

找到的第二处
0041A0CD    3BC8                              CMP ECX,EAX =======下硬件执行断点
0041A0CF    9C                                PUSHFD

一般情况下,找两个就够了,往往第二处就是正确的比较地址
运行程序,断在0041A0CD,这个地址就是我们脚本要用到的第二个地址。

三、找正确的DWORD
清除所有断点,重载程序,运行,出现对话框后,不要点,然后在上面找到的比较地址0041A0CD,F2下断点(PS:不知道77做了什么处理,下硬件断点断不下来),然后点确定,顺利断在0041A0CD
0041A0CD    3BC8                              CMP ECX,EAX========>断在这里
0041A0CF    9C                                PUSHFD

取消断点,载入脚本log.txt,运行完后会在程序目录生成logAll.txt,里面记录着所有从暂停到最后的ecx和eax的比较值。
部分值如下
eax:0  ecx:0
eax:0  ecx:0
eax:0  ecx:0
eax:0  ecx:0
eax:0  ecx:0
eax:0  ecx:0
eax:0  ecx:0
eax:0  ecx:0
eax:0  ecx:0
eax:0  ecx:0
eax:26C72347  ecx:6AEB9E99========》注意这里,这里eax的值就是正确的DWORD值
eax:4BF3EEBB  ecx:6B1F90FC
eax:51B47CF6  ecx:6B1F90FC
eax:3323772C  ecx:6B1F90FC
eax:6D0EAE93  ecx:6B1F90FC
eax:7E907D6F  ecx:6B1F90FC
eax:2AF284A2  ecx:6B1F90FC
eax:310FC1D1  ecx:6B1F90FC
eax:310FC1D1  ecx:310FC1D1
eax:0  ecx:0
四、找到上面三个值之后,修改脚本bypassHWLock.txt对应值,
把上面找到的三个值写入脚本,重载程序,清除所有断点,载入脚本,脚本跑完之后,程序就bypass了。

五、WL2.1.332,那个也可以用同样的手法搞定,就不再罗嗦了。

六、Bypass之后,就可以inline patch或者lpk了。。这里就不罗嗦了。。

最后再次感谢cektop大牛!

要用到的脚本.rar (443 Bytes, 下载次数: 270)

免费评分

参与人数 2热心值 +2 收起 理由
missviola + 1 精品文章!
DreamTeller + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hao3642270 发表于 2011-3-29 23:29
感谢分享!学习啦
Hmily 发表于 2011-3-30 13:06
streamload把吾爱的悬赏也领了吧.
http://www.52pojie.cn/thread-84939-1-1.html

免费评分

参与人数 1热心值 +1 收起 理由
streamload + 1 谢谢hmily提醒。。

查看全部评分

放下 发表于 2011-3-30 16:05
sdsajjkjk 发表于 2011-3-30 17:21
学习学习哈~~~~~~~~~~~~
TheCjw 发表于 2011-3-30 17:56
这个可以有~不错。
火狼の吻 发表于 2011-3-30 18:25
此贴必火,先占位支持了,谢谢分享
chddchf 发表于 2011-3-30 19:42
不错,分析的很详细!
羡小b 发表于 2011-3-30 22:27
学习了。初步接触VM。。。。。
fenjin 发表于 2011-3-31 09:12
感谢分享!辛苦了!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-18 01:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表