英特尔 XED(反汇编程序)-as [开始反汇编的地址] 选项不起作用
Intel XED (disassembler) -as [Address to start disassembling] option doesn't work
这个工作正常但提供所有从零开始的机器地址:
xed -i Halt7.obj
我真的需要机器地址从它们的 COFF 目标文件偏移量开始。
这是我尝试过的方法:他们给了我帮助消息(选项列表),指出我的选项规范中存在语法错误。
xed -i -as 0xb4 Halt7.obj
xed -ir -as 0xb4 Halt7.obj
xed -i -as 0xb4 -ae 0x121 Halt7.obj
xed -ir -as 0xb4 -ae 0x121 Halt7.obj
需要满足以下条件之一:
-i input_file (decode pecoff-format file)
-ir raw_input_file (decode a raw unformatted binary file)
可选参数:
-as addr (Address to start disassembling.
Use 0x for hex addresses)
-ae addr (Address to end disassembling.
Use 0x for hex addresses)
Peter Cordes 提供的正确答案如下所示
此选项正确地反汇编了文件,但显示了从偏移量零开始的地址。
xed -i Halt7.obj
XDIS 0: PUSH BASE 55 push ebp
XDIS 1: DATAXFER BASE 8BEC mov ebp, esp
XDIS 3: PUSH BASE 51 push ecx
XDIS 4: DATAXFER BASE C745FC00000000 mov dword ptr [ebp-0x4], 0x0
XDIS b: DATAXFER BASE 8B45FC mov eax, dword ptr [ebp-0x4]
XDIS e: PUSH BASE 50 push eax
XDIS f: CALL BASE E80C000000 call 0x20
XDIS 14: BINARY BASE 83C404 add esp, 0x4
XDIS 17: DATAXFER BASE B801000000 mov eax, 0x1
XDIS 1c: DATAXFER BASE 8BE5 mov esp, ebp
XDIS 1e: POP BASE 5D pop ebp
XDIS 1f: RET BASE C3 ret
这是我想要实现的,语法由 Peter Cordes 提供,如下所示
xed -i Halt7.obj -b 0xb4
XDIS b4: PUSH BASE 55 push ebp
XDIS b5: DATAXFER BASE 8BEC mov ebp, esp
XDIS b7: PUSH BASE 51 push ecx
XDIS b8: DATAXFER BASE C745FC00000000 mov dword ptr [ebp-0x4], 0x0
XDIS bf: DATAXFER BASE 8B45FC mov eax, dword ptr [ebp-0x4]
XDIS c2: PUSH BASE 50 push eax
XDIS c3: CALL BASE E80C000000 call 0xd4
XDIS c8: BINARY BASE 83C404 add esp, 0x4
XDIS cb: DATAXFER BASE B801000000 mov eax, 0x1
XDIS d0: DATAXFER BASE 8BE5 mov esp, ebp
XDIS d2: POP BASE 5D pop ebp
XDIS d3: RET BASE C3 ret
-i -as
告诉它输入文件是 -as
。然后是杂散参数 0xb4
和 Halt7.obj
,它们不是任何选项的参数。
-i
或-ir
后的下一个选项必须保留文件名。
xed -as 0xb4 -ae 0x121 -i Halt7.obj
我认为-as
和-ae
只是限制了反汇编指令的范围。 他们不会更改任何反汇编指令旁边打印的地址。
我想你真正想要的是用 -b
:
设置 base 地址
xed -i a.out -b 0x55000
为 Linux PIE 可执行文件生成这样的反汇编。
# SECTION 13 .text addr 10e0 offset 10e0 size 1541
XDIS 560e0: WIDENOP BASE F30F1EFA nop edx, edi
XDIS 560e4: LOGICAL BASE 31ED xor ebp, ebp
XDIS 560e6: DATAXFER BASE 4989D1 mov r9, rdx
XDIS 560e9: POP BASE 5E pop rsi
XDIS 560ea: DATAXFER BASE 4889E2 mov rdx, rsp
XDIS 560ed: LOGICAL BASE 4883E4F0 and rsp, 0xfffffffffffffff0
XDIS 560f1: PUSH BASE 50 push rax
XDIS 560f2: PUSH BASE 54 push rsp
XDIS 560f3: MISC BASE 4C8D05E6050000 lea r8, ptr [rip+0x5e6] <__libc_csu_fini+0x55000>
XDIS 560fa: MISC BASE 488D0D6F050000 lea rcx, ptr [rip+0x56f] <__libc_csu_fini+0x54f90>
XDIS 56101: MISC BASE 488D3D62010000 lea rdi, ptr [rip+0x162] <__libc_csu_fini+0x54b8a>
XDIS 56108: CALL BASE FF15D22E0000 call qword ptr [rip+0x2ed2] <__libc_csu_fini+0x57900>
XDIS 5610e: SYSTEM BASE F4 hlt
...
没有 -b
选项,图像基础是 0
(.text 部分开始 0x10e0
进入文件)所以我们得到
# SECTION 13 .text addr 10e0 offset 10e0 size 1541
SYM _start:
XDIS 10e0: WIDENOP BASE F30F1EFA nop edx, edi
XDIS 10e4: LOGICAL BASE 31ED xor ebp, ebp
XDIS 10e6: DATAXFER BASE 4989D1 mov r9, rdx
XDIS 10e9: POP BASE 5E pop rsi
XDIS 10ea: DATAXFER BASE 4889E2 mov rdx, rsp
XDIS 10ed: LOGICAL BASE 4883E4F0 and rsp, 0xfffffffffffffff0
XDIS 10f1: PUSH BASE 50 push rax
XDIS 10f2: PUSH BASE 54 push rsp
XDIS 10f3: MISC BASE 4C8D05E6050000 lea r8, ptr [rip+0x5e6] <__libc_csu_fini>
XDIS 10fa: MISC BASE 488D0D6F050000 lea rcx, ptr [rip+0x56f] <__libc_csu_init>
XDIS 1101: MISC BASE 488D3D62010000 lea rdi, ptr [rip+0x162] <main>
XDIS 1108: CALL BASE FF15D22E0000 call qword ptr [rip+0x2ed2] <__libc_csu_fini+0x2900>
XDIS 110e: SYSTEM BASE F4 hlt
XDIS 110f: NOP BASE 90 nop
...
似乎 -b
选项弄乱了符号信息。没有它,输出将分解为函数。
但是对于 -b
,它只是平坦的,函数顶部没有标记。
这个工作正常但提供所有从零开始的机器地址:
xed -i Halt7.obj
我真的需要机器地址从它们的 COFF 目标文件偏移量开始。
这是我尝试过的方法:他们给了我帮助消息(选项列表),指出我的选项规范中存在语法错误。
xed -i -as 0xb4 Halt7.obj xed -ir -as 0xb4 Halt7.obj xed -i -as 0xb4 -ae 0x121 Halt7.obj xed -ir -as 0xb4 -ae 0x121 Halt7.obj
需要满足以下条件之一:
-i input_file (decode pecoff-format file) -ir raw_input_file (decode a raw unformatted binary file)
可选参数:
-as addr (Address to start disassembling. Use 0x for hex addresses) -ae addr (Address to end disassembling. Use 0x for hex addresses)
Peter Cordes 提供的正确答案如下所示
此选项正确地反汇编了文件,但显示了从偏移量零开始的地址。
xed -i Halt7.obj
XDIS 0: PUSH BASE 55 push ebp XDIS 1: DATAXFER BASE 8BEC mov ebp, esp XDIS 3: PUSH BASE 51 push ecx XDIS 4: DATAXFER BASE C745FC00000000 mov dword ptr [ebp-0x4], 0x0 XDIS b: DATAXFER BASE 8B45FC mov eax, dword ptr [ebp-0x4] XDIS e: PUSH BASE 50 push eax XDIS f: CALL BASE E80C000000 call 0x20 XDIS 14: BINARY BASE 83C404 add esp, 0x4 XDIS 17: DATAXFER BASE B801000000 mov eax, 0x1 XDIS 1c: DATAXFER BASE 8BE5 mov esp, ebp XDIS 1e: POP BASE 5D pop ebp XDIS 1f: RET BASE C3 ret
这是我想要实现的,语法由 Peter Cordes 提供,如下所示
xed -i Halt7.obj -b 0xb4
XDIS b4: PUSH BASE 55 push ebp XDIS b5: DATAXFER BASE 8BEC mov ebp, esp XDIS b7: PUSH BASE 51 push ecx XDIS b8: DATAXFER BASE C745FC00000000 mov dword ptr [ebp-0x4], 0x0 XDIS bf: DATAXFER BASE 8B45FC mov eax, dword ptr [ebp-0x4] XDIS c2: PUSH BASE 50 push eax XDIS c3: CALL BASE E80C000000 call 0xd4 XDIS c8: BINARY BASE 83C404 add esp, 0x4 XDIS cb: DATAXFER BASE B801000000 mov eax, 0x1 XDIS d0: DATAXFER BASE 8BE5 mov esp, ebp XDIS d2: POP BASE 5D pop ebp XDIS d3: RET BASE C3 ret
-i -as
告诉它输入文件是 -as
。然后是杂散参数 0xb4
和 Halt7.obj
,它们不是任何选项的参数。
-i
或-ir
后的下一个选项必须保留文件名。
xed -as 0xb4 -ae 0x121 -i Halt7.obj
我认为-as
和-ae
只是限制了反汇编指令的范围。 他们不会更改任何反汇编指令旁边打印的地址。
我想你真正想要的是用 -b
:
xed -i a.out -b 0x55000
为 Linux PIE 可执行文件生成这样的反汇编。
# SECTION 13 .text addr 10e0 offset 10e0 size 1541
XDIS 560e0: WIDENOP BASE F30F1EFA nop edx, edi
XDIS 560e4: LOGICAL BASE 31ED xor ebp, ebp
XDIS 560e6: DATAXFER BASE 4989D1 mov r9, rdx
XDIS 560e9: POP BASE 5E pop rsi
XDIS 560ea: DATAXFER BASE 4889E2 mov rdx, rsp
XDIS 560ed: LOGICAL BASE 4883E4F0 and rsp, 0xfffffffffffffff0
XDIS 560f1: PUSH BASE 50 push rax
XDIS 560f2: PUSH BASE 54 push rsp
XDIS 560f3: MISC BASE 4C8D05E6050000 lea r8, ptr [rip+0x5e6] <__libc_csu_fini+0x55000>
XDIS 560fa: MISC BASE 488D0D6F050000 lea rcx, ptr [rip+0x56f] <__libc_csu_fini+0x54f90>
XDIS 56101: MISC BASE 488D3D62010000 lea rdi, ptr [rip+0x162] <__libc_csu_fini+0x54b8a>
XDIS 56108: CALL BASE FF15D22E0000 call qword ptr [rip+0x2ed2] <__libc_csu_fini+0x57900>
XDIS 5610e: SYSTEM BASE F4 hlt
...
没有 -b
选项,图像基础是 0
(.text 部分开始 0x10e0
进入文件)所以我们得到
# SECTION 13 .text addr 10e0 offset 10e0 size 1541
SYM _start:
XDIS 10e0: WIDENOP BASE F30F1EFA nop edx, edi
XDIS 10e4: LOGICAL BASE 31ED xor ebp, ebp
XDIS 10e6: DATAXFER BASE 4989D1 mov r9, rdx
XDIS 10e9: POP BASE 5E pop rsi
XDIS 10ea: DATAXFER BASE 4889E2 mov rdx, rsp
XDIS 10ed: LOGICAL BASE 4883E4F0 and rsp, 0xfffffffffffffff0
XDIS 10f1: PUSH BASE 50 push rax
XDIS 10f2: PUSH BASE 54 push rsp
XDIS 10f3: MISC BASE 4C8D05E6050000 lea r8, ptr [rip+0x5e6] <__libc_csu_fini>
XDIS 10fa: MISC BASE 488D0D6F050000 lea rcx, ptr [rip+0x56f] <__libc_csu_init>
XDIS 1101: MISC BASE 488D3D62010000 lea rdi, ptr [rip+0x162] <main>
XDIS 1108: CALL BASE FF15D22E0000 call qword ptr [rip+0x2ed2] <__libc_csu_fini+0x2900>
XDIS 110e: SYSTEM BASE F4 hlt
XDIS 110f: NOP BASE 90 nop
...
似乎 -b
选项弄乱了符号信息。没有它,输出将分解为函数。
但是对于 -b
,它只是平坦的,函数顶部没有标记。