Разберите раздел Windows PE .data - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь разобрать файлы Windows PE32 с помощью Python, но на основании вывода я не уверен, правильно ли я делаю.

В настоящее время я пытаюсь разобрать раздел .dataPE-файла с библиотекой pefile и capstone.

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

...