我得到了一个小字节串,其十六进制表示形式如下:
6631C08A2500000000
是否有反汇编程序,它接受操作码作为直接输入参数,而不需要编译文件?
例如:
$ disassembler -directOpcode 6631C08A2500000000
0: 66 31 c0 xor ax,ax
3: 8a 25 00 00 00 00 mov ah,BYTE PTR ds:0x0
由于 Peter 的有用评论,我找到了一个利用 python2 和一些 shell 管道的解决方案:
$ python -c "print '6631C08A2500000000'.decode('hex')" | head -c -1 | ndisasm -b32 -
00000000 6631C0 xor ax,ax
00000003 8A2500000000 mov ah,[dword 0x0]
我用
head -c -1
来去掉尾随的换行符,否则我得到:
00000000 6631C0 xor ax,ax
00000003 8A2500000000 mov ah,[dword 0x0]
00000009 0A db 0x0a
尝试来自 capstone 项目的 cstool。
安装cstool:
$ sudo apt install capstone-tool
反汇编你的代码:
$ cstool x64att '6631C08A2500000000'
0 66 31 c0 xorw %ax, %ax
3 8a 25 00 00 00 00 movb 0(%rip), %ah