在 Ollydbg 中复制/粘贴代码或十六进制部分

逆向工程 ollydbg
2021-06-10 11:07:15

是否可以以某种方式复制/粘贴十六进制转储中的数据部分或代码中的代码行(CPU 窗口反汇编窗口的左上角)?

示例:克隆一个函数,然后进行一些更改。另一个例子,复制一段将参数放在堆栈上的代码,然后调用一个类似于打开消息框的函数,即复制一些4-5行。

我可以在“命令”列中的代码(反汇编)窗口中双击以打开“组装”对话框,复制文本(例如 CALL 004026F8),然后将其关闭(不更改此指令)然后转到一些 NOP 或0 或其他东西,双击(再次“命令”列)以再次打开程序集对话框并将其粘贴。这对于一两个指令来说是可以的,但如果我能选择几行并复制/粘贴它们会很好立刻。或者,如果我可以通过仅复制字节而不是代码行来在十六进制转储窗口中完成此操作。

我在十六进制转储窗口中看到“二进制复制”和“二进制粘贴”,但它们只对一个字节执行,而不是对选定区域执行。

我在一些视频中看到人们记下地址并运行单独的十六进制编辑器程序只是为了执行此类操作。

顺便说一句,通过在十六进制转储中选择一个数据区域,可以右键单击“在单独的转储窗口中打开”以打开一个仅包含此内容的窗口,然后将此选定的数据写入文件链接并且还可以将 .bin 文件(不是通过 File-Open,而是通过将它们拖放到窗口中)引入窗口。但我看不出如何在它们之间一次复制一个以上的字节。

我几乎不好意思问这个问题,但我喜欢 Olly 并且想成为一个“超级用户”。

1个回答

select -> ctrl+c 将整个显示复制为有用的文本,可用于所有 mdi 窗口中可用的笔记选项

CPU Disasm
Address          Hex dump   Command                                     Comments
01261970 _allmul /$  8B4424 MOV     EAX, DWORD PTR SS:[ESP+8]      ; multiargs._allmul(void)
01261974         |.  8B4C24 MOV     ECX, DWORD PTR SS:[ESP+10]
01261978         |.  0BC8   OR      ECX, EAX
0126197A         |.  8B4C24 MOV     ECX, DWORD PTR SS:[ESP+0C]

二进制副本仅复制字节

8B 44 24 08 8B 4C 24 10 0B C8 8B 4C 24 0C

二进制粘贴粘贴多个字节

要粘贴多个复制的字节,您的粘贴区域选择必须与复制一样大,如果您复制了 5 个字节并希望粘贴 5 个字节,请在粘贴前选择 5 个字节

使地址栏符号突出显示 options (alt + o ) dump -> highlight symbolic names在地址栏中使用