汇编:是否可以将变量的值(mov)移动到内存地址?

时间:2017-05-10 15:54:22

标签: assembly x86-64

根据https://www.ethicalhacker.net/columns/heffner/intro-to-assembly-and-reverse-engineering

mov 0xffffffb4,0x1
  

将数字1移动到0xffffffb4。

问题是,当我尝试使用以下C代码时,

int a = 1;
int b = 13;
int c = 133;

与该代码等效的汇编语言是这样的。 (我从GDB那里得到了这个)

   0x00000000004004ee <+8>:     mov    DWORD PTR [rbp-0x4],0x1
   0x00000000004004f5 <+15>:    mov    DWORD PTR [rbp-0x8],0xd
   0x00000000004004fc <+22>:    mov    DWORD PTR [rbp-0xc],0x85

请注意,我的汇编代码将数字1移动到寄存器RBP。

但是,根据该URL的说明,它将数字1移动到0xffffffb4,0xffffffb4看起来像内存地址。

所以我的问题是:

  1. 是否可以将数字1移动到内存地址而不是注释中提到的寄存器?
  2. 我还在Immunity Debugger上对此进行了测试,发现变量的值被移动到寄存器ESP中。

    1. 为什么GDB会将值移动到Base Pointer(RBP),而Immunity Debugger会将其移动到堆栈指针(ESP)?
    2. Click here for Immunity Debugger screenshot

0 个答案:

没有答案