是否可以以某种方式复制/粘贴十六进制转储中的数据部分或代码中的代码行(在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

评论


谢谢,我假设如果选择并二进制复制了5个字节,那么它们将从我进行二进制粘贴的地方开始,而正如您所说的,我必须选择正确数量的目标字节。我看到在执行二进制复制粘贴时,它会粘贴两个中的较短者:1)复制的字节,以及2)选定的粘贴字节。

– Markbotix
16年1月31日在9:15

如果我选择了5个源字节(从反汇编或十六进制转储窗口中),请点击“ ctrl-insert”或右键单击并选择“ binary copy”,然后拖动并选择其他4个字节并粘贴二进制文件(“ shift-insert”或右键单击执行“二进制粘贴”),它将覆盖4个字节。如果我选择7并执行二进制粘贴,则只会更改前5个。

– Markbotix
16年1月31日在9:15

在突出显示列符号的答案中,您没有提到“代码”。对于使用Ollydbg 2.01的我来说,我需要这样做:-options(alt-'O')->代码->转储->启用复选框“地址栏中的突出符号名称”

– Markbotix
16年1月31日在9:16