逆向调试入门-OllyDbg的使用
source link: https://blog.51cto.com/apple0/5380939
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
逆向调试入门-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.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
运行到这里,程序窗口调出,程序运行完毕。
我们在前面一点下一个断点。下断点的快捷键是F2
将程序重新加载,(CTRL+F2)
F9运行到断点处
F7进行单步步入。
F8,一步一步进行
我们发现调出函数了。
我们下断点失败。
那我们将断点提前。
然后再进入一层call
因为这里是push/push/push,然后再call
在这个函数里面一步步调试,发现了字符。
对字符进行修改
汇编指令:
00401031 |. 68 1C204200 push 0042201C ; |Text = "第?,BB,"",B8,"鯳in32程序"
注意字节数,不能超
显示51cto
在下面的区域,Ctrl + G 进行搜索
找到该地址
我们点击一下“I”,会发现是“49”
显示51cto
下面修改为
使用OD修改完毕,
需要保存文件
选中修改区域
复制到可执行文件
右键,保存文件
最终,我们运行修改之后的程序
本节结束。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK