Internet Download Manager 6.42.11.2
【思路想法】
在启动idm时,会弹出注册窗体,大致猜测伪代码过程:
if(已注册){
主程序();
}else{
验证窗口();
}
所以应该只要找到这个if else语句就能进行强制跳转,完成定向爆破。
【分析工具】
1、Detect it easy
2、IDA pro
3、dbgx96(原版)
【爆破过程】
先试试主程序是否有壳:

1.png (35.89 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
用detect it easy试一试,结果如下:

2.png (51.95 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
应该是没有壳的,直接上IDA,但是我这里出现了问题,用IDA分析时,IDA跑自动分析,跑着跑着就卡死了,具体情况未知,我猜测是有反静态分析的代码在里面,我的IDA版本是IDA8,如果有大佬知道具体情况的,欢迎讨论。

3.png (318.54 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
所以只能用dbg来动态分析,具体分析过程如下:
从程序入口开始,先F8步过,找哪一个call会弹出注册窗体,一层一层地找:

4.png (237.77 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
每找一层就标记一个跳转注释设置断点,然后关闭注册窗口重新调试,整个过程还是比较痛苦的......因为前面几层都是在调用windows函数库,做创建窗体的准备:

5.png (221.81 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
比如这些库类函数。

6.png (49.91 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
之后找到了这一步,程序在循环读取文件地址,

7.png (240.55 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
大概率要进入到主程序判断了,果不其然,在读取完文件地址之后,找到一个离得很远的跳转指令

8.png (240.55 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
跳转之后更加明显了,提示注册失败的字符串正在被读取:

9.png (243.06 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
在读取完这一部分字符之后,紧跟着就是bool类型的判断函数,判断ebx和esi是否相同,
00451F63 | 3BF3 | cmp esi,ebx |

10.png (240.25 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
这里ebx和esi应该就是判断注册状态,图中显示的是跳转将要执行,因为我已经在自己电脑上破解过,之前未破解的时候是跳转不会执行,就会进入这一行:
00451F96 | E8 E2441A00 | call idman.5F647D | 注册窗体函数

11.png (58.46 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
直接定向爆破,把:
00451F65 | 74 68 | je idman.451FCF | 注册窗体前跳转,找到了!!!
改为:
00451F65 | EB 68 | jmp idman.451FCF | 注册窗体前跳转,找到了!!!
即不管注册情况如何,始终跳过弹出注册的窗口,直接运行主程序

12.png (61.38 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
改完后运行,

13.png (135.37 KB, 下载次数: 0)
下载附件
2025-2-5 14:50 上传
程序正常启动,未弹出注册提示。最后打个补丁保存,完成破解。
【后话】
目前该破解在自己的PC上完美运行,所有功能正常,然后再没弹出注册窗口。不过在运行的时候,程序会去修改注册表,我猜应该是将注册成功的信息写入Windows注册表,之间很多原理我还没搞明白。寥寥几笔写完了整个过程,但是一共调试了近十个小时(找弹窗函数确实难得找,有没有更简单的方法呢?),顺带一提,期间我试过查找字符串,我没有找到的,因为IDM的字符串文件不在程序里面自带,而是以翻译的形式存储在一个文件夹里面,相当于字符串是动态读取的。
新人第一次发帖,如有不恰当的地方,欢迎各路大神批评指正。