分解Windows PE.数据部分

2024-04-19 09:03:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python反汇编windowspe32文件,但是基于输出,我不确定是否正确。你知道吗

目前我正在尝试用pefile和capstone库反汇编PE文件的.data部分。你知道吗

import pefile
from capstone import *

def disassemble(fpath):
    pe = pefile.PE(fpath)
    for s in pe.sections:
        print(s.Name)
        md = Cs(CS_ARCH_X86, CS_MODE_32)
        for j in md.disasm(s.get_data(), pe.OPTIONAL_HEADER.ImageBase + s.VirtualAddress):
            print("0x%x:\t%s\t%s" % (j.address, j.mnemonic, j.op_str))

我希望(在.data部分)的输出类似于

.data 
example_var    DW    12345
example_var2   DB    'c'
...

但它以

<addr>     <instr>    <opstr>
0x4b601a   add        byte ptr [eax], al

有没有什么方法可以得到我想要的结果,或者这是不可能的,如果有,为什么?它还必须通过Windows而不是Linux进行反汇编


Tags: 文件inimportfordataexamplecsmd