此功能正常,但提供了所有从零开始的机器地址:
xed -i Halt7.obj
我真的需要机器地址以其COFF目标文件的偏移量开始。
这是我尝试过的:他们给我帮助信息(选项列表),该信息指示我的选项规范中存在语法错误。
xed -i -as 0xb4 Halt7.objxed -ir -as 0xb4 Halt7.objxed -i -as 0xb4 -ae 0x121 Halt7.objxed -ir -as 0xb4 -ae 0x121 Halt7.obj
以下一项是必需的:
-i input_file(解码pecoff格式的文件)-ir raw_input_file(解码未格式化的原始二进制文件)
可选参数:
-as addr(开始拆卸的地址。使用0x作为十六进制地址)-ae addr(结束拆卸的地址。使用0x作为十六进制地址)
此选项正确地反汇编了文件,但显示了从零偏移量开始的地址。xed -i Halt7.obj
XDIS 0:PUSH BASE 55推送ebpXDIS 1:DATAXFER BASE 8BEC mov ebp,espXDIS 3:PUSH BASE 51推ecxXDIS 4:DATAXFER BASE C745FC00000000 mov dword ptr [ebp-0x4],0x0XDIS b:DATAXFER BASE 8B45FC mov eax,dword ptr [ebp-0x4]XDIS e:PUSH BASE 50推式eaxXDIS f:CALL BASE E80C000000调用0x20XDIS 14:BINARY BASE 83C404添加esp,0x4XDIS 17:DATAXFER BASE B801000000 mov eax,0x1XDIS 1c:DATAXFER BASE 8BE5 mov esp,ebpXDIS 1e:POP BASE 5D pop ebpXDIS 1f:RET BASE C3退出
这是我想要实现的,语法由下面的Peter Cordes提供xed -i Halt7.obj -b 0xb4
XDIS b4:PUSH BASE 55推送ebpXDIS b5:DATAXFER BASE 8BEC mov ebp,espXDIS b7:PUSH BASE 51 push ecxXDIS b8:DATAXFER BASE C745FC00000000 mov dword ptr [ebp-0x4],0x0XDIS bf:DATAXFER BASE 8B45FC mov eax,dword ptr [ebp-0x4]XDIS c2:PUSH BASE 50推式eaxXDIS c3:CALL BASE E80C000000调用0xd4XDIS c8:BINARY BASE 83C404添加esp,0x4XDIS cb:DATAXFER BASE B801000000 mov eax,0x1XDIS d0:DATAXFER BASE 8BE5 mov esp,ebpXDIS d2:POP BASE 5D pop ebpXDIS 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
,它只是平坦的,在函数顶部没有标记。