OllyDbg[OD]逆向DLL的一个小问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OllyDbg[OD]逆向DLL的一个小问题相关的知识,希望对你有一定的参考价值。

这几天在研究软件逆向,碰到很多问题,其中有一个是:
我先用dumpbin工具吧DLL的函数导出表导出来,得到类似于以下的例子:

ordinal hint RVA name

8 0 0001EBA7 CsrAllocateCaptureBuffer
9 1 0001EC08 CsrAllocateMessagePointer
10 2 00027371 CsrCaptureMessageBuffer

我从里面得到了函数的RVA,并且用LoadPE知道了基址RVA为7C920000,我的问题是:

我如何使OD停在我希望停在的函数地址上?比如:CsrAllocateCaptureBuffer函数,我应该使用什么断点或则什么方法呢?

谢谢大家

参考技术A bpx API不可以么?其他的方法不清楚了。

逆向调试入门-OllyDbg的使用

逆向常用的调试工具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


本节结束。


以上是关于OllyDbg[OD]逆向DLL的一个小问题的主要内容,如果未能解决你的问题,请参考以下文章

OllyDbg逆向破解入门攻略?拿来吧你!

OllyDbg逆向破解入门攻略?拿来吧你!

Windows 逆向OD 调试器工具 ( OD 工具简介 | OD 工具与 CE 工具对比 )

逆向调试入门-OllyDbg的使用

使用 OllyDbg 反汇编动态链接库

[小白教程]动态调试工具Ollydbg的简单使用