1

逆向调试入门-OllyDbg的使用

 1 year ago
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的使用

原创

最爱大苹果 2022-06-14 09:56:44 博主文章分类:逆向学习 ©著作权

文章标签 保存文件 加载 程序运行 文章分类 其他 网络/安全 阅读数161

逆向常用的调试工具OllyDbg,界面简单,使用起来也简单。

学习中,主要通过对160个CrackME小程序进行调试,从而了解程序设计的思想。

逆向调试入门-OllyDbg的使用_加载

1、基础的汇编指令

2、基础的计算机术语

3、使用一款Ring3级别的调试工具(ring0给操作系统使用,驱动加载之后运行在ring0,就是所谓的“rootkit”)

4、了解一般程序设计的流程

如果是初学者,不建议直接上手IDA,F5分析。

学习逆向调试,跟盖房子是一样的,先一步一脚印学习,长期处于入门阶段。

学习完爆破基础之后,再进行算法的分析。

网络上下载OllyDbg,原版本是英文,我们方便讲解,使用中文版。

逆向调试入门-OllyDbg的使用_加载_02

打开OD界面:

逆向调试入门-OllyDbg的使用_程序运行_03

此时OD调试器为空,并没有载入任何的程序。

逆向调试入门-OllyDbg的使用_加载_04

将程序放入OD中

逆向调试入门-OllyDbg的使用_加载_05

整体的界面

逆向调试入门-OllyDbg的使用_保存文件_06

上边是OD的菜单导航栏,很多功能你如果不用快捷键的话,需要手动点击。

逆向调试入门-OllyDbg的使用_保存文件_07

中间这一块是程序的汇编代码,执行的过程。

逆向调试入门-OllyDbg的使用_保存文件_08

右边这一块是CPU中的寄存器的状态

逆向调试入门-OllyDbg的使用_程序运行_09

下边是十六进制的数据,右边是程序当前的堆栈情况。

逆向调试入门-OllyDbg的使用_加载_10

看“设置API断点”

我们以后得和这些函数打交道了。

毕竟,无论什么编程语言写出来的程序,最后都是调用API函数。

逆向调试入门-OllyDbg的使用_加载_11

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

下面我们对一个程序进行修改,并保存。

逆向调试入门-OllyDbg的使用_保存文件_12

这是简单的一个helloword程序。

在实际中,我们应该对原程序进行拷贝一份进行分析。

1、先运行一遍程序,观察它怎么运行。

2、猜这个程序调用了哪些API函数。

3、开始调试,将标题文字改掉,将显示内容改掉。

Ctrl+F2  重新载入该程序。

逆向调试入门-OllyDbg的使用_保存文件_13

其他窗口不用关注,这个程序关注中间汇编部分。

逆向调试入门-OllyDbg的使用_程序运行_14

F8,单步步过。

可以发现(任何程序运行的时候,系统都会分配一段内存给它)

逆向调试入门-OllyDbg的使用_程序运行_15

call一个函数,可以知道是一个windows核心函数

逆向调试入门-OllyDbg的使用_程序运行_16

不用理这些函数,我们继续进行F8

逆向调试入门-OllyDbg的使用_保存文件_17

运行到这里,程序窗口调出,程序运行完毕。

004011CE E8 32FEFFFF call Hello.00401005
逆向调试入门-OllyDbg的使用_加载_18

我们在前面一点下一个断点。下断点的快捷键是F2

逆向调试入门-OllyDbg的使用_加载_19

将程序重新加载,(CTRL+F2)

F9运行到断点处

F7进行单步步入。

逆向调试入门-OllyDbg的使用_保存文件_20

F8,一步一步进行

逆向调试入门-OllyDbg的使用_保存文件_21

我们发现调出函数了。

我们下断点失败。

那我们将断点提前。

逆向调试入门-OllyDbg的使用_保存文件_22

然后再进入一层call

逆向调试入门-OllyDbg的使用_程序运行_23

因为这里是push/push/push,然后再call

逆向调试入门-OllyDbg的使用_程序运行_24

在这个函数里面一步步调试,发现了字符。

逆向调试入门-OllyDbg的使用_加载_25

对字符进行修改

逆向调试入门-OllyDbg的使用_程序运行_26

汇编指令:

0040102C |. 68 30204200 push 00422030 ; |Title = "I love fishc.com"
00401031 |. 68 1C204200 push 0042201C ; |Text = "第?,BB,"",B8,"鯳in32程序"

注意字节数,不能超

显示51cto

逆向调试入门-OllyDbg的使用_程序运行_27

在下面的区域,Ctrl + G 进行搜索

找到该地址

逆向调试入门-OllyDbg的使用_保存文件_28

我们点击一下“I”,会发现是“49”

逆向调试入门-OllyDbg的使用_加载_29

显示51cto

逆向调试入门-OllyDbg的使用_程序运行_30

下面修改为

this is modify
逆向调试入门-OllyDbg的使用_保存文件_31

使用OD修改完毕,

需要保存文件

逆向调试入门-OllyDbg的使用_保存文件_32

选中修改区域

逆向调试入门-OllyDbg的使用_程序运行_33

复制到可执行文件

逆向调试入门-OllyDbg的使用_加载_34

右键,保存文件

逆向调试入门-OllyDbg的使用_加载_35

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

逆向调试入门-OllyDbg的使用_保存文件_36

本节结束。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK