GJ.*_*GJ. 2 debugging x86 assembly x86-64 disassembly
我内置了IDE x86 debbuger,它拆解了这个:
第一种情况:
65 48 8B 05 30 00 00 00
mov rax,gs:[rel $00000030]
Run Code Online (Sandbox Code Playgroud)
第二种情况:
65 48 8B 04 25 30 00 00 00
mov rax,gs:[+$0030]
Run Code Online (Sandbox Code Playgroud)
有什么不同?
我怀疑拆解有问题,但无法转换上层操作码.
我所知道的是:
65是gs前缀48是REX.W前缀8B是mov......第一个是RIP相对,第二个是绝对地址.
有关操作码的翻译,请参阅http://www.sandpile.org.正如Polynomial指出的那样,http: //ref.x86asm.net 甚至更好,但目前还不支持AVX或XOP.
8B- 操作码 - 给出为mov Gv, Ev,其中Gv表示寄存器目标,其中Ev是ar/m目的地.05- mod r/m - 表示rax为目标,rip相对为有效地址30 00 00 00 抵消 rip第二个:
8B- 操作码 - 给出为mov Gv, Ev,其中Gv表示寄存器目标,其中Ev是ar/m目的地.04- mod r/m - 表示rax为目标,具有sib有效地址25 - sib - address的格式为[basereg + indexreg*stride + offset],在这种情况下,base和index都是0.30 00 00 00 抵消.