逆向调试入门-OllyDbg的使用

【逆向调试入门-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修改完毕,
需要保存文件





选中修改区域





复制到可执行文件





右键,保存文件





最终,我们运行修改之后的程序





本节结束。



    推荐阅读