Pydasm:反汇编有限长度的可执行 shellcode

逆向工程 拆卸 Python 反汇编者 外壳代码
2021-06-11 00:51:36

如何使用Python 中的pydasm 库反汇编可执行代码的前 200 个字节我想知道如何设置缓冲区的大小来反汇编它。

1个回答

从 pydasm 的README.txt稍微修改的版本

import pydasm
import binascii

# Open, and read 200 bytes out of the file,
# while converting buffer to hex string
with open('file.bin','r') as f:
    buffer = binascii.hexlify(f.read(200))


# Iterate through the buffer and disassemble 
offset = 0
while offset < len(buffer):
   i = pydasm.get_instruction(buffer[offset:], pydasm.MODE_32)
   print pydasm.get_instruction_string(i, pydasm.FORMAT_INTEL, 0)
   if not i:
     break
   offset += i.length

添加:

您也可以播放seek()到文件的某个位置,然后从那里读取。如果你想读取嵌入到某个文件中的 shellcode 并且你知道相对位置,它特别有用。您必须open()使用带有“b”选项的文件才能使其工作。有关详细信息,请参阅Python 文件对象库参考