十六进制IDA pro,反汇编程序中的地址在哪里

时间:2016-02-24 15:36:48

标签: assembly hex ida disassembly

ASM

......
.text:000000000062D153   lea   rax, aaa ; "aaaaaaaaaaa"
.text:000000000062D15A   lea   rdx, bbb ; "bbbbbbbbbbbbbbbb"
......
.rodata:0000000000F63221 aaa     db 'aaaaaaaaaaa',0                                               
.rodata:0000000000F6322D bbb     db 'bbbbbbbbbbbbbbbb',0 
.rodata:0000000000F6323E align 20h
......

HEX

......
000000000062D153  48 8D 05 C7 60 93 00
000000000062D15A  48 8D 15 CC 60 93 00
......

我不明白,这个地址“aaa”(F63221)在十六进制48 8D 05 C7 60 93 00? 如何用十六进制替换a到b,得到?

 .text:000000000062D15A                 lea     rdx, aaa ; "aaaaaaaaaaa" 

1 个答案:

答案 0 :(得分:3)

000000000062D153  48 8D 05 C7 60 93 00

实际上是:

lea    rax, [rip+0x9360c7]

这是RIP相对地址,偏移量在指令的最后4个字节中(C7 60 93 00 = 0x009360C7)。该寻址模式是指相对于下一条指令的存储器(不是当前的,因为RIP指向下一条指令)。如果您进行数学运算,您会发现0x0062D15A + 0x009360C70x00F63221

要引用bbb,您需要计算0x00F6322D - (0x0062D15A + 7)。这给出了0x9360CC的偏移值。