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

[分享]OD分析与破解

2022-10-27 16:36
7138

预览软件

首先运行软件,了解软件的基本功能。打开软件,只有两个按钮,点击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,修改此处,保存数据,打开程序,弹出破解成功的窗口。
图片描述
图片描述
图片描述


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

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