信息收集
查程序编写信息
- 所用工具Detect It Easy
Delphi编写,根据此信息选择DeDeDark进行反编译进一步收集可用信息
反编译程序进行信息收集
- 所用工具DeDeDark
载入要分析的主程序点击[开始处理]进行分析
注:主程序即软件主题程序(长见软件安装完毕生成快捷方式所对应的程序)
分析成功探测此窗口
注:点击OK后,会有两个窗体逐个弹出,若想分析更全面可点击Yes(其为扩展分析窗体)
- 运行软件收集信息,之后针对这些信息进行针对信息查找
弹出注册窗体,使用spy++查询其窗口类名进行针对分析
- TfrmReg_GB窗口类名对应信息
1 |
|
- 加载过程关键信息
1 |
|
动态调试分析
使用x64dbg进行调试分析
- 运行程序至弹出注册窗体
- 填写信息点击注册
弹出注册码错误提示,根据之前找到的窗口信息下断点进行分析
右键转到005F82D0地址(表达式选项)
在此处下断点,再次注册测速
成功断下,进行深入分析
- 单步分析看下运行流程
1 2 |
|
- 调用关键信息下的判断指令分析
为方便调试这里下个断点
正常运行发现此跳转会执行,查看执行结果
弹出错误注册信息,分析这里是个关键判断(用来判断注册信息是否正确)
- 重新注册并修改指令或ZF至0使其跳转不执行,查看运行结果
弹出注册成功窗体,初步判断这里可用修改汇编指令je-jne使其输入错误注册信息弹出注册成功的窗体或内存劫持使其跳转不执行达到同样的效果
- 卸载软件,开启火绒剑监控分析注册成功后有没有什么操作
发现注册成功会有一个文件写入操作,期内含有输入的注册信息
- 重新运行后发现还是弹出注册窗体
判断对注册文件有验证操作,还需深入分析下
分析注册流程
利用之前发现关键调用信息地址进行分析
1 |
|
进call查看
此处下断点
重新运行,发现此处出现4处调用,并读取了注册信息
运行判断后输入al=0 跳转执行,出现错误提示
若al=1 跳转执行,出现正确提示
标志位爆破
根据之前分析的结果进行关键点修改,使其输出的判断结果为al=1
修改汇编指令为mov al,1 之后跟着返回令ret这样会出现验证结果填写的信息都为正确的注册信息
重新运行发现读取错误的配置文件,也到达了正确的注册效果
不在弹出注册窗体
总结
监控软件运行,可查看其输入文件(如注册配置信息)
修改关键判断输出,解决注册验证流程,使其不起正确的作用也是一个不错的办法