相关疑难解决方法(0)

x86_64 ASM - 指令的最大字节数?

完整指令在x64 asm代码中需要的最大字节数是多少?

像跳转到地址这样的东西可能占用多达9个字节我想:FF 00 00 00 00 11 12 3F 1F但我不知道这是否是x64指令可以使用的最大字节数

c 64-bit x86 assembly x86-64

30
推荐指数
3
解决办法
2万
查看次数

指令长度

我正在查看汇编中的不同指令,我对如何决定不同操作数和操作码的长度感到困惑.

这是你应该从经验中得知的东西,还是有办法找出哪个操作数/运算符组合占用了多少字节?

例如:

push %ebp ; takes up one byte
mov %esp, %ebp ; takes up two bytes
Run Code Online (Sandbox Code Playgroud)

所以问题是:

在看到给定的指令后,如何推断出其操作码需要多少字节?

x86 assembly instruction-set machine-code code-size

5
推荐指数
2
解决办法
3790
查看次数

为什么x86 int寄存器的数量是8?

最近我开始学习x86汇编语言和CPU架构.我注意到int寄存器的总数是8,但对于x86-64,它是16.

为什么?必须有一些解释.

cpu x86 assembly x86-64 cpu-registers

3
推荐指数
1
解决办法
1815
查看次数

如何按指令读取二进制可执行文件?

有没有办法以编程方式从x86架构上的二进制可执行文件中读取给定数量的指令?

如果我有一个简单的C程序的二进制文件hello.c:

#include <stdio.h>

int main(){
    printf("Hello world\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在使用编译后gcc,反汇编函数main如下所示:

000000000000063a <main>:
 63a:   55                      push   %rbp
 63b:   48 89 e5                mov    %rsp,%rbp
 63e:   48 8d 3d 9f 00 00 00    lea    0x9f(%rip),%rdi        # 6e4 <_IO_stdin_used+0x4>
 645:   e8 c6 fe ff ff          callq  510 <puts@plt>
 64a:   b8 00 00 00 00          mov    $0x0,%eax
 64f:   5d                      pop    %rbp
 650:   c3                      retq   
 651:   66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
 658:   00 00 …
Run Code Online (Sandbox Code Playgroud)

c assembly binaryfiles instructions

1
推荐指数
1
解决办法
388
查看次数

X86汇编 - 如何计算指令操作码长度(以字节为单位)

我正在尝试学习X86汇编(用于学习逆向工程).我学习了C#和C\C++语言以及IL

可能我的主要问题是英语,因为我是波斯语,而且我也找不到任何有用的文件来学习用波斯语写的X86程序集.所以我决定做我为学习C#和C++所做的事情.我试过阅读X86样本和你好世界,但我失败了因为我无法理解我必须选择哪个注册表以及其他只能通过查看源代码无法解决的问题.

所以我决定改变策略并做一个挑战:写一个X86反汇编程序 我很生气,我知道.但我们不能说这是不可能的.第一个认为我需要理解(但没有记住)的是这些表:http://ref.x86asm.net/coder32.html

我对操作码很好,但我不明白如何计算操作数的大小或者寄存器十六进制字节呢?

对不起,我的英语不好.

PS.我想用C#做它

c# assembly

0
推荐指数
1
解决办法
980
查看次数