黄河Flash播放器 V7.62 简单分析(十一种破解方案,初学者可检测下自己的爆破功底)
黄河Flash播放器 V7.62 简单分析这个软件破解不难,明码比较。该程序的验证思路比较典型,本文只谈针对脱壳版本的爆破方式,软件请自行下载。
先给出该程序的两处关键点:
---------------------------------------------------
注册时验证:
004BBB9D|.E8 1ADFFFFF CALL 004B9ABC ;算法CALL
004BBBA2|.8B55 F4 MOV EDX,DWORD PTR SS: ;真码
004BBBA5|.58 POP EAX ;假码
004BBBA6|.E8 3D91F4FF CALL 00404CE8
004BBBAB|.75 34 JNZ SHORT 004BBBE1
---------------------------------------------------
启动时验证:
其中存放真码,存放假码
004C30A3 8B55 DC MOV EDX,DWORD PTR SS: // 真码给EDX
004C30A6 58 POP EAX // 假码POP到EAX
004C30A7|.E8 3C1CF4FF CALL 00404CE8 // 字符串比较函数
004C30AC|.75 1A JNZ SHORT 004C30C8
004C30AE|.C605 38994C00>MOV BYTE PTR DS:,1
004C30B5|.8B45 08 MOV EAX,DWORD PTR SS:
004C30B8|.8B40 FC MOV EAX,DWORD PTR DS:
004C30BB|.8B80 38030000 MOV EAX,DWORD PTR DS:
004C30C1|.33D2 XOR EDX,EDX
004C30C3|.E8 78E7F8FF CALL 00451840
004C30C8|>33C0 XOR EAX,EAX
-----------------------------------------------
0分 -- 修改注册跳转:
004BBBAB|.75 34 JNZ SHORT 004BBBE1
-----------------------------------------------
以下为可以成功爆破的几种修改方式,我根据修改方法来给出相应的参考分数。
1分 -- 启动验证修改跳转法:
004C30AC75==> 74
2分 -- 启动验证修改跳转距离法
004C30AD1A==> 00
3分 -- 修改比较寄存器法:
004C30A3 8B55 DC MOV EDX,DWORD PTR SS:
004C30A6|.58 POP EAX
修改为:
004C30A3 58 POP EAX ;00ACABE8
004C30A4 8BD0 MOV EDX,EAX
004C30A6 90 NOP
4分 -- 修改比较数据法:
004C30A5DC ==> E0
004C30A3 8B55 DC MOV EDX,DWORD PTR SS:
修改为:
004C30A3 8B55 E0 MOV EDX,DWORD PTR SS:
5分 -- 堆栈数据利用法:
004C30A455 ==> 14
004C30A5DC ==> 24
004C30A3 8B55 DC MOV EDX,DWORD PTR SS:
修改为:
004C30A3 8B1424 MOV EDX,DWORD PTR SS:
----------------------------------------------
6分 -- 明码比较软件自动保存真码法:
004BBBAC34==> 00
004BBBC7E8==> F4
004BBBC5 8B45 E8 MOV EAX,DWORD PTR SS:
修改为:
004BBBC5 |8B45 F4 MOV EAX,DWORD PTR SS: // 保存真码
7分 -- 等价替换验证函数:关键数据利用法
第一处:
004C3464 .E8 ABFAFFFF CALL 004C2F14 // 启动验证函数
修改为:
004C3464 E8 43FCFFFF CALL 004C30AC
第二处:
004C30AC /75 1A JNZ SHORT 004C30C8
004C30AE |C605 38994C00 01 MOV BYTE PTR DS:,1
004C30B5 |8B45 08 MOV EAX,DWORD PTR SS:
004C30B8 |8B40 FC MOV EAX,DWORD PTR DS:
004C30BB |8B80 38030000 MOV EAX,DWORD PTR DS:
004C30C1 |33D2 XOR EDX,EDX
004C30C3 |E8 78E7F8FF CALL 00451840
004C30C8 \33C0 XOR EAX,EAX
修改为:
004C30AC C605 38994C00 01 MOV BYTE PTR DS:,1
004C30B3 8B4424 04 MOV EAX,DWORD PTR SS: // 修改空间不足 借用JNZ那行代码空间
004C30B7 90 NOP
004C30B8|.8B40 FC MOV EAX,DWORD PTR DS:
004C30BB|.8B80 38030000 MOV EAX,DWORD PTR DS:
004C30C1|.33D2 XOR EDX,EDX
004C30C3|.E8 78E7F8FF CALL 00451840
004C30C8 C3 RETN
004C30C9 90 NOP
8分 -- 等价替换启动验证函数:全局变量赋值法
修改为:
004C2F14/$C605 38994C00 01 MOV BYTE PTR DS:,1
004C2F1B|.8B4424 04 MOV EAX,DWORD PTR SS:
004C2F1F|.8B40 FC MOV EAX,DWORD PTR DS:
004C2F22 8B80 38030000 MOV EAX,DWORD PTR DS:
004C2F28 B2 00 MOV DL,0
004C2F2A 8850 3E MOV BYTE PTR DS:,DL
004C2F2D C3 RETN
004C2F2E 90 NOP
004C2F2F 90 NOP
9分:将真码赋值到假码内存写ASM汇编代码实现
10分:将 strcmp 函数修改为 strcpy
...
其他的破解方式,比如SMC、Loader、注入等等,也要建立在对其验证流程的分析基础之上,有了分析结果,写代码就是手工活,所以我们这里暂不讨论。
该程序的破解方法应该还有,欢迎大家补充。这8种修改方法是本轮教学中为拓宽学员破解思路和修改方式的一个总结归纳,借此文来告诉初学者,学习软件破解要重过程,轻结果。不要为了破解而破解,不要为了发布破解而破解。
感谢校长详细分析。慢慢吸收。 感谢校长详细分析,让人非常受教 该帖 是作业贴 PYG学员需将本帖做成视频 我一会根据校长和我自己的知识。。做成视频
1是学习新知识
2是巩固方法
3是加深记忆
4是备忘录呵呵
后两种有点看不懂啊~~怎么办啊
视频已经上传
[ 本帖最后由 yanhuohua999 于 2009-11-10 12:24 编辑 ] 占位留影,待编辑 收到,留作视频贴,也算是个小结。 晚上再好好总结吸收吸收 小弟向N大学习了/:014 后面的三种要好好吸收下。。争取晚上写好InstantDemo的作业后把N大的这个作业录好视频。。。