如何在 x86 中获取指令十六进制代码?
how to I get Instruction hex code in x86?
section .data
section .text
global _start
_start:
mov eax, loop ; eax <- addr of loop
mov ebx, new
mov ecx, new
mov esi, 2
loop:
mov edx, [eax] ; edx <- instruction of loop, but not worked
mov [ebx], edx
add eax, esi
add ebx, esi
cmp eax, ecx
jne loop
mov ecx, ebx
new:
x86 code picture
这段代码中我想要的是将循环的十六进制指令代码放入edx中。
如果看到这里,mov edx和[eax]都存入了循环,我认为指令码是0x1389108b,但实际存的值是0x13cc10cc。我不知道如何得到这个值 0x1389108b.
loop
处的指令是 8b 10,下一条指令是 89 13。但是,您在每条指令处都设置了断点,因此调试器已将每条指令的第一个字节覆盖为断点指令。断点的代码是 cc,所以这就是您的程序读取的内容。如果你 运行 它没有设置断点,你会得到你期望的值。
section .data
section .text
global _start
_start:
mov eax, loop ; eax <- addr of loop
mov ebx, new
mov ecx, new
mov esi, 2
loop:
mov edx, [eax] ; edx <- instruction of loop, but not worked
mov [ebx], edx
add eax, esi
add ebx, esi
cmp eax, ecx
jne loop
mov ecx, ebx
new:
x86 code picture
这段代码中我想要的是将循环的十六进制指令代码放入edx中。
如果看到这里,mov edx和[eax]都存入了循环,我认为指令码是0x1389108b,但实际存的值是0x13cc10cc。我不知道如何得到这个值 0x1389108b.
loop
处的指令是 8b 10,下一条指令是 89 13。但是,您在每条指令处都设置了断点,因此调试器已将每条指令的第一个字节覆盖为断点指令。断点的代码是 cc,所以这就是您的程序读取的内容。如果你 运行 它没有设置断点,你会得到你期望的值。