首页
社区
课程
招聘
[分享]OD分析与破解
2022-10-27 16:36 6496

[分享]OD分析与破解

2022-10-27 16:36
6496

预览软件

首先运行软件,了解软件的基本功能。打开软件,只有两个按钮,点击file只有exit选项;点击help,显示与软件开发者相关的信息。
图片描述
图片描述
图片描述
运行后没有发现有价值的东西,接下来使用OD进行分析。

使用OD进行动态分析

使用OD打开程序,首先查看字符信息。初步确定运行软件时,会通过cmp eax,-1进行判断是否有名为CRACKME3.KEY的文件,若文件不存在,eax=-1,跳转不执行,不加载后续功能点代码。
图片描述
图片描述
那么我们在该程序目录下创建一个CRACKME3.KEY文件,并写入一些英文字符。
图片描述
重新使用OD进行调试,发现eax值不为-1,跳转实现,继续向下运行。
图片描述
读取文件内容,并与0x12(10进制为18)进行比较,这一步即为判断文件中字符串长度是否满足18位,小于18则跳转到之前,不继续向下运行。
图片描述
文件中字符长度大于18位,跳转不实现,继续向下运行,读取出前18位,并调用了一个函数,按F7跟进查看。
图片描述
首先执行了两个XOR操作,将EAX和ECX寄存器清空,往下走进入循环,将前14个字符分别与A-N进行异或,并将每个异或的结果相加放入[4020F9]地址中,循环结束返回ECX=E,也就是循环次数。
图片描述
图片描述
将[4020F9]与12345678进行异或,之后[4020F9]与EAX的值进行比较,相同则使用sete将EAX的低位设为1;比较前调用了一个函数,跟进去看看,发现EAX值为key文件中第15位到18位的四位字符。
图片描述
将EAX的低位进行AND操作,al=1,结果为TURE,ZF不被置1,跳转不实现,继续向下运行。分析过程结束,接下来就是破解。
图片描述

test用于将两个操作数按位AND运算,当AND结果为0时,ZF(zero flag)置1,既只有当两操作数AND结果为0,test将ZF置1;test不会写回到目的操作数。

破解方法

修改跳转方式:

将以下三个点进行修改,保存修改数据,重新打开程序,发现还是和之前一样,没有变化。
图片描述
图片描述
图片描述
再次使用OD打开,往下走,发现还有一处判断点,判断al是否为1,修改此处,保存数据,打开程序,弹出破解成功的窗口。
图片描述
图片描述
图片描述


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_pmxzjzqc 2023-11-15 14:49
2
0
非常好,感谢分享经验
游客
登录 | 注册 方可回帖
返回