-
-
[原创]Internet Download Manager 逆向分析(非注册机)
-
发表于:
2023-10-7 21:28
13896
-
[原创]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点如下:
patch后再次运行,输入后发现程序直接退出,没有提示错误输入,我们重新跟踪函数0051FB70
,跟踪到如下位置时
发现像一个全局变量写入了0,并尝试Post一个消息,我们查看这个变量的一些引用。在004039E6
位置
可以猜测到这是与注册相关。我们尝试在程序启动时修改这个字段的值
默认为1,我们修改为0,尝试运行
经过上面测试,基本上可以确定这个标志的作用,但是还有其他的一些验证对注册码进行了校验,简单的跟踪方法是,在xdbg中搜索这个字符串,对其引用位置下断,筛选有效位置。笔者这里对静态字段750D2C
中的内容在PE中进行修改。
我们继续绕过假冒序列号验证,笔者这里通过字符串筛选的有效位置为:00451E97
向上回溯,简单的发现如下
尝试修改v112为0,放行程序
可以看到程序运行了起来。老手段,将返回值为3的地方patch为0即可(00450B87)。
但是过了一段时间之后,另一个验证接踵而至。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2023-10-8 09:16
被Sw1ndler编辑
,原因: 新增检测绕过