本帖最后由 gxr2016 于 2017-11-8 21:34 编辑
下载网站:
http://www.simpopdf.com/
本次以Simpo PDF Merge & Split为例讲解。
下载安装程序,OD载入程序,程序未加壳,目测为VC编译的。
F9运行程序,出现注册对话框,随意输入假码,注册,出现错误提示
运用暂停法,来到关键处
011113D9 |. 83F8 14 cmp eax,0x14 ; 比较注册码位数是否为20位。
011113DC 0F85 A2010000 jnz PDFMerge.01111584
011113E2 |. 8B5424 10 mov edx,dword ptr ss:[esp+0x10]
011113E6 |. 52 push edx ; PDFMerge.<ModuleEntryPoint>
011113E7 |. E8 542CFFFF call PDFMerge.01104040 ; 关键CALL
011113EC |. 3BC3 cmp eax,ebx
011113EE |. 0F84 90010000 je PDFMerge.01111584
在011113D9处下断,F9运行程序,重新注册,程序被断下。
011113DC 0F85 A2010000 jnz PDFMerge.01111584//此处必须NOP掉
011113E7 |. E8 542CFFFF call PDFMerge.01104040 //此CALL为关键CALL,F7进CALL,一路F8
程序再终来到
0110444B . 33CC xor ecx,esp
0110444D E8 76E60E00 call PDFMerge.011F2AC8
01104452 . 81C4 EC000000 add esp,0xEC
此时寄存器EAX为0,所以要使得EAX为1,必须修改0110444D处代码
直接改为MOV EAX,1
F9运行程序,出现注册成功提示框。
我们在主窗口--右键--查找--所以命令,输入cmp eax,0x14,在找到
找到的命令
地址 反汇编 注释
01103DAF cmp eax,0x14
011043FD cmp eax,0x14
011113D9 cmp eax,0x14 比较注册码位数是否为20位。
011231A6 cmp eax,0x14
0113CA96 cmp eax,0x14
011785A1 cmp eax,0x14
011790F3 cmp eax,0x14
0117BC94 cmp eax,0x14
0117CFE3 cmp eax,0x14
011A9C82 cmp eax,0x14
012060C7 cmp eax,0x14
在这11处,都下断点。
重新加载程序,激活两处修改
Patches
地址 大小 状态 旧 新 注释
0110444D 5. 已删除 call PDFMerge.011F2AC8 mov eax,0x1
011113DC 6. 已删除 jnz PDFMerge.01111584 nop
F9运行程序,程序被断下。
01103DAF |. 83F8 14 cmp eax,0x14
01103DB2 74 04 je short PDFMerge.01103DB8
01103DB4 |. 33C0 xor eax,eax ; kernel32.BaseThreadInitThunk
01103DB6 |. EB 06 jmp short PDFMerge.01103DBE
修改01103DB2处代码,改为jmp short 01103DB8
保存所有修改。运行新保存文件,程序无注册提醒,功能正常,没有水印。
总结一下,修改地址:
Patches
地址 大小 状态 旧 新 注释
01103DB2 2. 激活 je short PDFMerge.01103DB8 jmp short PDFMerge.01103DB8
0110444D 5. 激活 call PDFMerge.011F2AC8 mov eax,0x1
011113DC 6. 激活 jnz PDFMerge.01111584 nop
教程结束,谢谢大家。
视频教程及逆向文件
|