这个问题在这里已有答案:
是否有一些工具可以将原始六角形拆卸成装配说明?例如:假设我们根据this在线反汇编程序将 \xeb\x1d 反汇编成 jmp 0x1f . 那么有一些离线工具吗?我试过ndisasm它没有给我正确的输出 .
ndisam -b32
foo给了我:
OUTPUT:
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
OUTPUT:
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,但我想要一些更灵活的东西 .
1 回答
正如评论所建议的那样,您的问题是您已将字符串
\xeb\x1d
作为ASCII输出到您尝试反汇编的文件中 . 你可能做过类似的事情:你可以这样做但你想告诉
echo
来解释转义字符\
. 这可以使用-e
选项完成 .您希望它不使用
-n
选项在末尾添加换行符 . 这在ECHO手册页中有记录:这可能有效:
使用NDISASM来反汇编字节:
现在应该 生产环境 :
如果不使用中间文件(如
foo
),您可以将ECHO输出传输到NDISASM并以这种方式对其进行反汇编 . 这一行将采用shell代码字符串并输出反汇编:最后需要
-
来告诉NDISASM从标准输入而不是显式文件中反汇编输入 .我们现在已经彻底改变了IT行业! ;-)