-
-
[原创]IdaPro6.6安装程序密钥算法还原
-
发表于:
2020-9-14 18:04
4789
-
ida是一款常用的静态分析工具,但是需要安装后才能使用,网上可以找到安装后的绿色版或者密钥进行安装,但是没有找到破解版安装包。作为逆向工程初级从业人员,业余分析该工具的密钥算法练练手是不错的选项,对于入门学习者,可以通过复现破解还原过程积累逆向工程经验(萌新第一次发帖,希望各位带佬嘴下留情)。
文章中所有的材料均存放于链接:https://pan.baidu.com/s/16bdMjrWxsP2KfA1MqzE3dQ
提取码:71tr
第一步:
多数安装包都可以通过压缩文件解压,因此首先尝试是否可以解压,选中安装包右键用压缩工具打开发现不能解压,说明该安装包必须在运行时解压内部文件。
第二步:
将安装包拖入到od中进行调试,安装包程序正常运行,猜测可能未进行反调试操作。持续点击下一步直至输入密钥,随机输入密钥单机下一步,弹出密钥错误提示框。在弹窗函数下断点,仍然弹出窗口,如下图所示。
此时保持安装包窗口状态,不要单击确定按钮,回到od,单击k进入堆栈调用窗口,发现程序并没有调用弹窗函数,且也没有调用窗口创建函数,猜测该安装程序并非单一进程。
第三步:
未验证安装程序为多进程的猜想,使用od重新载入该安装程序,在creatfile函数处下断点,监控到进程往系统的临时文件夹创建了一个文件,如下图所示。
为证明该文件即为安装子进程,给创建进程的函数下一个断点,如下图所示。
od按下F8运行,此时出现安装程序。表明:主进程在系统临时文件夹创建一个临时安装进程,并将自身地址作为命令行参数启动,安装进程进行密钥检测并解压主进程进行安装。
第四步:
在了解程序的框架之后对安装程序进程密钥相关算法进行逆向还原,ida打开该文件,如下图所示。
入口函数接口较为复杂,无法直接定位到算法函数,因此先使用od附加调试(调试时进入线程窗口激活所有线程)定位至算法函数再进行代码还原,如下图进行附加调试。
选中对应的进程
程序在弹窗函数断点
栈回溯找到调用源
并在函数478FFC处发现疑似密钥计算函数(此处在条件跳转指令进行比较的内存处下内存写入断点可以定位,这里就不演示了),如下图所示。
第五步:
对密钥校验算法进行还原,使用ida打开安装子进程文件,F5反编译,如下图所示:
原始idb文件
根据自己的理解和动态调试结果修改的idb文件
第六步:
还原idb文件为源代码,如下:
编译并于源程序比对测试,如下图所示:
还原代码计算的hashcode
安装子进程计算的hashcode
通过代码计算的hashcode与源程序计算的hashcode相同,算法还原成功(待完全待验证,欢迎补充)。合法hashcode为“73 4D 89 77 37 77 82 3E 11 C1 E6 25 51 B3 D3 51 00 CF 9C C7”,可通过计算碰撞还原合法密钥(欢迎尝试)。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)