是否有一些工具可以将原始六角形拆卸成装配说明?例如:假设我们根据this在线反汇编程序将 \ xeb \ x1d 反汇编为 jmp 0x1f 。那么有一些离线工具吗?我试过ndisasm它没有给我正确的输出。
ndisam -b32
foo给了我:
输出:
00000000 5C pop esp<br>
00000001 7833 js 0x36<br>
00000003 315C7865 xor [eax+edi*2+0x65],ebx<br>
00000007 620A bound ecx,[edx]
应该是jmp 0x1f。 我也试过像objdump:
objdump -D -b binary -mi386 -M intel foo
输出:
00000000 <.data>:<br>
0: 5c pop esp <br>
1: 78 33 js 0x36 <br>
3: 31 5c 78 65 xor DWORD PTR [eax+edi*2+0x65],ebx<br>
7: 62 0a bound ecx,QWORD PTR [edx]<br>
你能不能告诉我一些将原始十六进制代码反汇编成汇编语言的工具。
我也试过gdb,但我想要更灵活的东西。
答案 0 :(得分:3)
正如评论所建议的那样,您的问题是您已将字符串\xeb\x1d
作为ASCII输出到您尝试反汇编的文件中。你可能做过类似的事情:
echo '\xeb\x1d' >foo
您可以执行此操作,但您需要告诉echo
解释转义字符\
。这可以使用-e
选项完成。
您希望它不使用-n
选项在最后添加换行符。这在 ECHO 手册页中有记录:
-n do not output the trailing newline -e enable interpretation of backslash escapes
这可能有效:
echo -ne '\xeb\x1d' >foo
使用 NDISASM 来反汇编字节:
ndisasm -b32 foo
现在应该产生:
00000000 EB1D jmp short 0x1f
如果不使用中间文件(如foo
),您可以将 ECHO 输出传输到 NDISASM 并以这种方式进行反汇编。这一行将采用shell代码字符串并输出反汇编:
echo -ne '\xeb\x1d' | ndisasm -b32 -
最后需要-
告诉 NDISASM 从标准输入而不是显式文件中反汇编输入。
我们现在已经彻底改变了IT行业! ; - )