mov ebx,esi和lea ebx有什么区别,[esi]

时间:2015-02-13 17:03:03

标签: assembly x86 shellcode execve

我正在使用shellcoders手册进行练习。

Section .text

  global _start

_start:

  jmp short GotoCall

shellcode:
  pop esi
  xor eax, eax
  mov byte [esi + 7], al
  lea ebx, [esi]
  mov long [esi + 8], ebx
  mov long [esi + 12], eax
  mov byte al, 0x0b
  mov ebx, esi
  lea ecx, [esi + 8]
  lea edx, [esi + 12]
  int 0x80

GotoCall:

  Call shellcode
  db ‘/bin/shJAAAAKKKK’

此代码工作正常,但我不理解行lea ebx, [esi]mov ebx, esi,它们都将相同的值存储到ebx中。事实上,如果我通过gdb运行它,我可以看到寄存器值不会改变。

据我所知,mov访问地址的值,而lea只访问地址。如果这个场景中的mov指令在es ebx周围有esi,[esi] - 然后我可以看到差异,但事实并非如此,我错过了什么?

0 个答案:

没有答案