大飞哥自习室 发表于 2022-4-2 15:42

3.3 OD中的查找功能和编辑功能

OD的查找功能非常强大,并且可以在OD中修改程序的反汇编代码,从而保存反汇编代码以达到修改被调试程序的目的。
3.3.1OD的搜索功能
OD的搜索功能有很多,在CPU的主窗口中单击鼠标右键,在弹出的菜单中,有一个菜单项为“查找”,它有非常多的子菜单项,这里笔者介绍几个较为常用的查找功能。
1.命令
命令是用来搜索一条汇编指令使用的,使用快捷键Ctrl+F可以弹出查找命令的输入框,如图3-28所示。在查找命令窗口中可以使用模糊匹配,如图3-29所示。在图3-29中,在查找命令窗口输入“mov r32, eax”,会匹配出mov指令的目标操作数是32位寄存器,且源操作数是eax寄存器的所有指令,如mov esi, eax。

2.命令序列
命令序列可以同时按照多条汇编指令进行匹配,同样支持模糊匹配查询。按下Ctrl+S快捷键可以弹出“查找命令序列”窗口,如图3-30所示。
在图3-30中,通过使用any和r32来进行模糊查询,any 3表示小于等于3条任意指令,r32是代表32的寄存器。匹配到的汇编代码形式如下所示:


形式一:
PUSH EBP MOV EBP,ESP
ADD ESP,-144 XOR EAX,EAX
形式二:
PUSH EBP
CALL <JMP.&KERNEL32.GlobalFree> XOR EAX,EAX
形式三:
PUSH EBP XOR EBP,EBP

使用any模糊匹配可以忽略中间的任意条指令,合理地使用会识别出相应的汇编结构、函数起始或结尾等。
二进制字符串搜索是搜索特征码很好的方法,通过快捷键Ctrl+B可以打开“要查找的二进制字串”的对话框,如图3-31所示。
在查找二进制字串时,在HEX输入框中输入相应的十六进制数,在图3-31中输入的内容是“51 E8 ?? ?? ?? ?? 83 C4 0C”,在二进制字串中的“?”是通配符,同样是用来支持模糊搜索的。以

上的特征码,搜索到的内容如下形式:

3.二进制字符串

二进制字符串搜索是搜索特征码很好的方法,通过快捷键Ctrl+B可以打开“要查找的二进制字串”的对话框,如图3-31所示。
在查找二进制字串时,在HEX输入框中输入相应的十六进制数,在图3-31中输入的内容是“51 E8 ?? ?? ?? ?? 83 C4 0C”,在二进制字串中的“?”是通配符,同样是用来支持模糊搜索的。以上的特征码,搜索到的内容如下形式:

形式一:
51            PUSHECX
E8 30ED0900CALL004A3954    ; CALL 后面的地址是 004A3954 83C4 0C       ADDESP,0C
形式二:
51            PUSHECX
E8 FFDE0900CALL   004A3530 ; CALL 后面的地址是 004A3530


83C4 0C       ADDESP,0C
观察使用二进制字串搜索特征码搜索到的两段反汇编代码所对应的机器码,在 CALL指令后面对应的地址值是不相同的,在搜索特征码时,E8后面的?号对应的就是 CALL指令后的地址,在搜索时使用了 8
个“?”替换原来的地址,因此这段特征码搜索对应的汇编指令为:
PUSH ECX
CALL ????????
ADDESP, 0C
在使用“命令序列”搜索汇编指令时,模糊搜索针对的是寄存器,而使用“二进制字串”搜索汇编指令时,模糊搜索针对的是反汇编中的数值,如地址、常量等。

所有模块间的调用可以搜索进程内调用的所有 API 函数,并且可以在所有模块的调用上,或者某个调用 API 函数的地址进行设置断点。
5.所有文本字串参考
在调试程序时,通常是找到一个明显的线索来入手进行调试。在调试时,弹出的对话框中的字符串或程序中输出的字符串,都是明显入手调试的线索。通过搜索所有文本字符串参考,并进行设置断点,或者根据字符串调用的地址
来分析程序执行的流程,有助于快速地调试,找到关键的代码位置。
3.3.2    OD 修改的编辑功能
在调试程序的时候,经常会给程序打一些补丁。所谓的打补丁,就是修改反汇编的代码,以便改变程序执行的流程。如果需要在调试完成后也以此方式执行程序,就需要将修改后的程序进行保存,则下次执行时就会按照在
OD 中打过补丁的方式进行执行了。
1.OD 的修改功能
在 OD 中可以对反汇编代码或十六进制数据进行修改。
(1)修改代码
在反汇编窗口的任意反汇编代码上按下空格就可以编辑当前的代码,OD支持汇编代码的直接修改。当 CPU 执行到修改后的反汇编代码处时,CPU
是按照修改后的反汇编代码进行执行的。按下空格弹出修改的代码如图 3-32 所示。
在修改反汇编代码时,如果修改后的机器码长度比原反汇编代码的机器码长度长, OD是不允许修改的。如果需要将修改过的反汇编代码还原,在补丁窗口(Ctrl+P
可以切换至补丁窗口)中进行管理,也可以选中修改后的反汇编代码按下 Alt+Backspace键还原。
(2)修改十六进制数据
在 CPU 窗口的数据窗口中,选中要修改的数据,然后按下空格在弹出的如图 3-33 所示的对话框中进行数据修改。
在修改数据时,可以以 ASCII、UNICODE 和十六进制数据 3 种方式进行修改。修改后的数据同样可以通过选中修改后的数据然后按下 Alt+Backspace快捷键来还原修改的数据。


2.OD 的保存功能
保存文件的功能比较简单,先选中修改后的反汇编代码,然后单击鼠标右键,在弹出的菜单中选择“赋值到可执行文件”的“选择”子菜单项,在弹出的“文件”窗口中单击右键,在弹出的菜单中选择“保存”即可。

XeTI3 发表于 2022-4-2 15:42

感谢楼主

KiaIVZW 发表于 2022-4-2 15:44

谢谢分享

ByEij534 发表于 2022-4-2 15:56

感谢楼主

ClekToZdq 发表于 2022-4-2 15:57

好啊好啊~这不错~感想分享~

wtOEh5 发表于 2022-4-2 15:58

谢谢分享

wtOEh5 发表于 2022-4-2 16:04

谢谢分享

UpjaxeJ67380 发表于 2022-4-2 16:08

可以多发一些这类内容吗?我很喜欢!!

VXBlSUP138 发表于 2022-4-2 16:11

大佬牛批!顶!!

gLNw7 发表于 2022-4-2 16:14

谢谢分享
页: [1] 2 3 4 5 6 7 8
查看完整版本: 3.3 OD中的查找功能和编辑功能