【逆向调试入门-OllyDbg的使用】胸怀万里世界, 放眼无限未来。这篇文章主要讲述逆向调试入门-OllyDbg的使用相关的知识,希望能为你提供帮助。
逆向常用的调试工具OllyDbg,界面简单,使用起来也简单。
学习中,主要通过对160个CrackME小程序进行调试,从而了解程序设计的思想。
基础条件
1、基础的汇编指令
2、基础的计算机术语
3、使用一款Ring3级别的调试工具(ring0给操作系统使用,驱动加载之后运行在ring0,就是所谓的“rootkit”)
4、了解一般程序设计的流程
建议:
如果是初学者,不建议直接上手IDA,F5分析。
学习逆向调试,跟盖房子是一样的,先一步一脚印学习,长期处于入门阶段。
学习完爆破基础之后,再进行算法的分析。
软件:
网络上下载OllyDbg,原版本是英文,我们方便讲解,使用中文版。
打开OD界面:
此时OD调试器为空,并没有载入任何的程序。
将程序放入OD中
整体的界面
上边是OD的菜单导航栏,很多功能你如果不用快捷键的话,需要手动点击。
中间这一块是程序的汇编代码,执行的过程。
右边这一块是CPU中的寄存器的状态
下边是十六进制的数据,右边是程序当前的堆栈情况。
看“设置API断点”
我们以后得和这些函数打交道了。
毕竟,无论什么编程语言写出来的程序,最后都是调用API函数。
OD的快捷方式,我们不需要记住,要用到的时候,查询即可。
动手才是验证真理的唯一手段
参考文章:
https://www.52pojie.cn/thread-709699-1-1.html
https://www.bilibili.com/video/av849837850
https://bbs.pediy.com/thread-214024.htm
https://bbs.pediy.com/thread-262102.htm
下面我们对一个程序进行修改,并保存。
这是简单的一个helloword程序。
在实际中,我们应该对原程序进行拷贝一份进行分析。
思路:
1、先运行一遍程序,观察它怎么运行。
2、猜这个程序调用了哪些API函数。
3、开始调试,将标题文字改掉,将显示内容改掉。
Ctrl+F2
重新载入该程序。
其他窗口不用关注,这个程序关注中间汇编部分。
F8,单步步过。
可以发现(任何程序运行的时候,系统都会分配一段内存给它)
call一个函数,可以知道是一个windows核心函数
不用理这些函数,我们继续进行F8
运行到这里,程序窗口调出,程序运行完毕。
004011CEE8 32FEFFFFcall Hello.00401005
我们在前面一点下一个断点。下断点的快捷键是F2
将程序重新加载,(CTRL+F2)
F9运行到断点处
F7进行单步步入。
F8,一步一步进行
我们发现调出函数了。
我们下断点失败。
那我们将断点提前。
然后再进入一层call
因为这里是push/push/push,然后再call
有问题
在这个函数里面一步步调试,发现了字符。
对字符进行修改
汇编指令:
0040102C|.68 30204200push00422030;
|Title = "I love fishc.com"
00401031|.68 1C204200push0042201C;
|Text = "第?,BB,"",B8,"鯳in32程序"
注意字节数,不能超
显示51cto
在下面的区域,Ctrl +
G 进行搜索
找到该地址
我们点击一下“I”,会发现是“49”
显示51cto
下面修改为
this is modify
使用OD修改完毕,
需要保存文件
选中修改区域
复制到可执行文件
右键,保存文件
最终,我们运行修改之后的程序
本节结束。
推荐阅读
- 资金穿透分析
- 漫画趣解大数据算法建模(买瓜)
- MySQL数据库(29)(流程结构 if while)
- 基于grpc从零开始搭建一个准生产分布式应用 - 工程构建
- HarborHarbor镜像仓库
- Python代码自动提取Win10内置的锁屏壁纸
- #云原生征文#深入Kubernetes(k8s)概念
- 实模式与保护模式详解一(寄存器)
- 安卓大学生考勤签到app毕业设计