【软件版本】
Internet Download Manager 6.42.11.2
【思路想法】
在启动idm时,会弹出注册窗体,大致猜测伪代码过程:
if(已注册){
主程序();
}else{
验证窗口();
}
所以应该只要找到这个if else语句就能进行强制跳转,完成定向爆破。
【分析工具】
1、Detect it easy
2、IDA pro
3、dbgx96(原版)
【爆破过程】
先试试主程序是否有壳:
用detect it easy试一试,结果如下:
应该是没有壳的,直接上IDA,但是我这里出现了问题,用IDA分析时,IDA跑自动分析,跑着跑着就卡死了,具体情况未知,我猜测是有反静态分析的代码在里面,我的IDA版本是IDA8,如果有大佬知道具体情况的,欢迎讨论。
所以只能用dbg来动态分析,具体分析过程如下:
从程序入口开始,先F8步过,找哪一个call会弹出注册窗体,一层一层地找:
每找一层就标记一个跳转注释设置断点,然后关闭注册窗口重新调试,整个过程还是比较痛苦的……因为前面几层都是在调用windows函数库,做创建窗体的准备:
比如这些库类函数。
之后找到了这一步,程序在循环读取文件地址,
大概率要进入到主程序判断了,果不其然,在读取完文件地址之后,找到一个离得很远的跳转指令
跳转之后更加明显了,提示注册失败的字符串正在被读取:
在读取完这一部分字符之后,紧跟着就是bool类型的判断函数,判断ebx和esi是否相同,
00451F63 | 3BF3 | cmp esi,ebx |
这里ebx和esi应该就是判断注册状态,图中显示的是跳转将要执行,因为我已经在自己电脑上破解过,之前未破解的时候是跳转不会执行,就会进入这一行:
00451F96 | E8 E2441A00 | call idman.5F647D | 注册窗体函数
直接定向爆破,把:
00451F65 | 74 68 | je idman.451FCF | 注册窗体前跳转,找到了!!!
改为:
00451F65 | EB 68 | jmp idman.451FCF | 注册窗体前跳转,找到了!!!
即不管注册情况如何,始终跳过弹出注册的窗口,直接运行主程序
改完后运行,
程序正常启动,未弹出注册提示。最后打个补丁保存,完成破解。
没有回复内容