OD逆向系列3-多种方式破解实战
本文使用的例子可以关注公众号全栈编程笔记回复OD 逆向工具包进行下载
特别声明:例子和工具来源于网络,不保证安全性,在操作之前建议使用冰点还原或者你认为安全的工具保护系统。
本文介绍
本文使用密码登录.exe这个例子来介绍多种方式破解。这里例子的大致工作原理是在一个输入框中输入一个密码,如果错误会提示登录失败
如果输入正确的密码就会弹出一个新的窗口
破解目标,让他弹出来登录成功的窗口
破解方法
字符串破解法
1. 找到文件头
使用 OD 打开例子,按下Ctrl + G
进行搜索00401000
(exe 程序的文件头)
2. 智能搜索
可以搜索关键字,找到”登陆失败”这几个关键字
右击,找到中文搜索引擎中的只能搜索。Ctrl + F
搜索 “登陆失败” 找到位置
可以很容易分析发现,是由于这个跳转导致的弹出登录失败的窗口
那我们这里就可以简单的把这个跳转语句抹掉。点击这个语句,右击二进制,使用 nop 填充
再次点击登录按钮可以看到登录成功的窗口弹出来了。
弹窗断点法
因为报错信息是一个错误弹窗,我们可以下一个弹窗断点来找到报出错误的地方。
1. 设置消息框断点
2. 运行程序,使其弹出消息框
3. 寻找调用过程
点击
然后点击
点击 k 查看调用栈
右击第二个显示调用
也可以找到这个位置
Push 大法
push 大法就是让他跳过登录窗口直接到达目标窗口
1. 跳转到文件头
2. 找到窗口
Ctrl + F
搜索 push 10001
。push 10001
隔一条指令就是一个窗口,当然有些软件不止一个窗口,可以使用Ctrl + L
搜索下一个,把这些窗口复制下来。
3. 进行替换
输入Ctrl + B
搜索ff25
可以看到在搜索结果的上面他 push 进去了一个窗口,现在我们把他修改成我们刚才找到的窗口。
右键汇编 将push 0x52010001
修改为 push 0x5201000E
这个时候打开软件就直接跳出来登录成功了。
有多个窗口的情况下需要挨个尝试,直到找到想要的窗口。
直接跳转
有时候已经找到了关键的代码的时候可以直接使用 jmp 跳转。
比如我们已经找到了这段逻辑,判断 xxx,如果成立则验证成功。那我们可以直接跳转到判断的逻辑下面去,让他直接执行判断之后的逻辑。
这种和 push 大法比较相似,不同的是 push 大法修改的是窗口地址,这里直接把整条 push 都修改了,这里就不赘述了。
如何保存
使用 OD 修改之后可以立刻生效,但是下次打开程序就会失效了,这个时候我们需要把修改保存下来。
右键 保存到可执行文件,所有修改
这个时候会出来这样一个框,右键保存到文件即可