首页
社区
课程
招聘
[原创]Internet Download Manager 逆向分析(非注册机)
2023-10-7 21:28 11065

[原创]Internet Download Manager 逆向分析(非注册机)

2023-10-7 21:28
11065
目录

Internet Download Manager 逆向分析(非注册机)

写在前面

文章仅供学习,切勿用于商业用途,出于版权原因,文章不提供资源下载。

看雪论坛上较早之前已经有前辈对IDM的序列号算法进行过逆向分析

[原创]IDM 最新版本的 6.31 build 2 逆向 分析 破解 分享-软件逆向-看雪-安全社区|安全招聘|kanxue.com

以及最近有师傅尝试对本篇文章对象相同的版本进行了逆向分析,但是比较遗憾的是该文章并没有完全对IDM过注册限制进行逆向分析,但是值得一题的是作者提供了较为详细的处理过注册限制一般方法,还是比较值得初学者学习的。

IDM 6.4.1逆向分析笔记_idm注册序列号-CSDN博客

绕过注册验证

这里笔者不打算从注册表出发。

首先不妨禁用IDM的动态基址,方便我们IDA跟踪。修改如下

修改后程序正常运行,也可以验证这里没有完整性校验。

提示

可以看到提示IDM试用期已到,从这个对话框入手可能找到无限使用的逻辑,但是不一定有监视注册表读写方便,笔者不从这里下手。

点击确定后可以看到提示注册

不如就从这里入手,比较简单的想法是对获取编辑框文本的函数下断点。经过测试,这里获取内容的API是GetDlgTiemTextA,下断后随意填写内容,确定后成功断下,进行两层栈回溯,来到0051FCC5

在IDA中

笔者对ShowErrorDlg函数进行了简单的重命名,它的行为很容易确定,这里不多解释。

可以看到这里对输入的长度进行了判断,所以可以猜测注册逻辑在这附近,可以看到有很多全局变量例如dword_75CE00充当着标志的作用,我们猜测有一个全局变量标志着是否注册。

简单绕过错误输入的提示框,patch点如下:

1
2
3
4
5
6
0051FE5C nop
0051FF50 nop
0051FF54 jmp
0051FFF6 nop
0051FFFE nop
0051FE5C nop

patch后再次运行,输入后发现程序直接退出,没有提示错误输入,我们重新跟踪函数0051FB70,跟踪到如下位置时

发现像一个全局变量写入了0,并尝试Post一个消息,我们查看这个变量的一些引用。在004039E6位置

可以猜测到这是与注册相关。我们尝试在程序启动时修改这个字段的值

默认为1,我们修改为0,尝试运行

绕过假序列号验证

经过上面测试,基本上可以确定这个标志的作用,但是还有其他的一些验证对注册码进行了校验,简单的跟踪方法是,在xdbg中搜索这个字符串,对其引用位置下断,筛选有效位置。笔者这里对静态字段750D2C中的内容在PE中进行修改。

我们继续绕过假冒序列号验证,笔者这里通过字符串筛选的有效位置为:00451E97

向上回溯,简单的发现如下

尝试修改v112为0,放行程序

可以看到程序运行了起来。老手段,将返回值为3的地方patch为0即可(00450B87)。


但是过了一段时间之后,另一个验证接踵而至。

绕过定时结束程序

提示过后过一段时间程序自动退出,笔者尝试在一些退出函数中下断,没有收获什么有用的信息,根据这个对话框进行回溯也没有什么结果,因为退出的逻辑与显示对话框的逻辑是分开的。读者可以尝试线程相关的函数。笔者在分析中发现程序大量使用了SetTimer函数,猜测可能是检测到非法注册信息后使用定时器来结束程序,当然因为定时器太多,分析起来也比较麻烦。

这里从750D2C字段下手,因为不管是使用定时器或者线程定时检测注册信息,还是使用定时器去结束进程,在调用这些逻辑之前大概率是会再次读取750D2C这个字段的。尝试对这个字段下硬件访问断点。

重新跑起来,筛选敏感位置0046B4DF,再其下方我们发现取了一些随机值,然后设置了一些定时器,如下:

这个函数中设置了很多定时器,我们在定时器位置下断,尝试直接让J_SetTimer返回绕过。绕过后程序果然没有退出,也没有提示假序列号,经过尝试关键的位置在0046BC0D,如下,绕过两个Timer即可

饭后甜点

如上,可以看到在下载东西时还会验证,简单的跳过这个MessageBox(0046C76A)即可

还有一个注册窗口,对CreateDialogIndirectParamA下断栈回溯,找到patch点:004921F8,直接跳过窗口创建即可,如下

还有一个小检查,对MessageBoxW下断跳过即可 patch:00472CCA

程序会启动进程IDMGrHlp.exe经过测试命令行ch = 3如下时表示检测到了注册码

1
"C:\Users\25327\Desktop\IDMD\IDMGrHlp.exe" /ch 3 /w 1511788

笔者处理方法也非常粗暴,patch:0048F8F6,可能去IDMGrHlp.exe里Patch比较好,但是在这里patch后暂时没发现什么异常。

总结

很少见到MFC图形界面程序了,但是开始定位定时结束的逻辑时因为方向出了一些问题导致花了一些时间。总的来说暴力破解肯定是不如注册机优雅,但确实是比较有效率。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2023-10-8 09:16 被Sw1ndler编辑 ,原因: 新增检测绕过
收藏
点赞7
打赏
分享
最新回复 (9)
雪    币: 19410
活跃值: (29069)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋狝 2023-10-8 09:42
2
2
感谢分享
雪    币: 5055
活跃值: (3812)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_rjdrqvpa 2023-10-8 10:52
3
0

大佬,idm还有个限制,就是下载某些hls?视频,会弹窗:由于法律原因,IDM无法下载此受保护的数据。对于这些受保护的音频、视频和数据,IDM可能无法通过相应的技术测试,因此IDM不支持下载此类内容。

如图:


大佬,有兴趣分析一下,解开这个限制?

雪    币: 32049
活跃值: (7105)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ninebell 2023-10-8 11:09
4
0
hosts 检测呢?
雪    币: 111
活跃值: (1409)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
真难取 2023-10-8 11:17
5
0
别费劲了,Neat Download Manager 免费小巧无广告,更好用。
雪    币: 2093
活跃值: (1820)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
洪七公. 2023-10-8 12:04
6
1
感谢分享
雪    币: 1063
活跃值: (2429)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Sw1ndler 2023-10-8 14:59
7
0
ninebell hosts 检测呢?
哈哈我没留意host验证,可能把那个标志位和关闭进程的Timer绕过了之后,误伤了hosts验证的逻辑吧,改了那两个位置,其他的只是一些干扰弹窗对程序使用没什么影响,我就见一个补一个没再去深究了。这么patch确实有点难看。
雪    币: 1063
活跃值: (2429)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Sw1ndler 2023-10-8 15:00
8
0
mb_rjdrqvpa 大佬,idm还有个限制,就是下载某些hls?视频,会弹窗:由于法律原因,IDM无法下载此受保护的数据。对于这些受保护的音频、视频和数据,IDM可能无法通过相应的技术测试,因此IDM不支持下载此类内容。 ...
这个的限制应该是一些视频用了加密吧,限制应该不在IDM这里。想要IDM能解析就得给它加一部分功能了。
雪    币: 32049
活跃值: (7105)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ninebell 2024-2-19 11:37
9
0

@Sw1ndler
我的简单爆破方法如下:
1)先定位Full ,其上印象中是好像 cmp xxx, [YYY]定位过去把YYY
(取反,见1改0;反之0改1)
2)注册码不输了,不久也会弹玩笑注册码要退出。。。
那是启动过程中卷标检测Scan (时间久了忘记叫啥了,得看笔记)那处不远有个call(NOP或ret)

要是改的时机不佳的话,会出现几种下场:

  • 出现玩笑注册码提示,之后退出(这说明改的时机比较晚,错过了)

  • 。。。。。。。。。,找到了其上一层的调用点ret后(提示仍出,但死活退出不了啦)

  • 找到最上层,根本上解决检测


3)还有一个升级检测也得修改下

相传有人的修改版本还修改了一个下载线程数为128破限制啥的。。这个没跟过,就不清楚了。。。这个还真没研究过。。

@Sw1ndler
还有一个MindMaster 11.05的在线AI点数没有弄明白,初始化为500点,不知这个能不能突破限制?大侠有时间研究下。。。
其他离线功能很好爆破的。。。随便找个功能限制的菜单项,断点能打到后跟过去。。记录下。。凭着感觉改了下就成功了。。后来发现其他菜单项调用公共点方式一样一样的。。打开二进制忍者。。慢慢伪代码一级一级定位到深层(最深层有个全局常量)。。。然后就会衍生出三四种爆破版本出现。。
1)最直接的爆破版本(无左上角Pro字样,不用登录
2)有左上角Pro字样版本(不用登录
3)需要登录后显示Pro+永久vip会员字样版本
其实哪种无所谓,最开心的是把二进制忍者的入门功能研究明白了。

最后于 2024-2-19 11:43 被ninebell编辑 ,原因:
雪    币: 163
活跃值: (359)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
烧砖窑的专家 2024-3-28 15:03
10
0
大佬,你的ida f5是增强插件吗?可否分享
游客
登录 | 注册 方可回帖
返回