A QuarksLab liberou recentemente o que chamou de LIEF, uma biblioteca multiplataforma para parsear binários Mach-O, ELF e PE. Funciona de forma similar à nossa libpe, mas liberaram wrapper pra Python, suporte à escrita, etc. Devo dizer que tem muito mais funções.
Segue um exemplo em Python usando a LIEF para extrair informações de um PE com saída similar à do readpe, do toolkit to pev:
import lief pe = lief.parse('churrasco.exe') print(pe)
A saída é:
Dos Header ========== Magic: 5a4d Used Bytes In The LastPage: 90 File Size In Pages: 3 Number Of Relocation: 0 Header Size In Paragraphs: 4 Minimum Extra Paragraphs: 0 Maximum Extra Paragraphs: ffff Initial Relative SS: 0 Initial SP: b8 Checksum: 0 Initial IP: 0 Initial Relative CS: 0 Address Of Relocation Table: 40 Overlay Number: 0 OEM id: 0 OEM info: 0 Address Of New Exe Header: e0 Rich Header =========== Key: d089bb0a - ID: 0x9100 Build ID: 0x7809 Count: 1 - ID: 0x8400 Build ID: 0x7809 Count: 41 - ID: 0x1000 Build ID: 0x0000 Count: 100 - ID: 0x7b00 Build ID: 0xc627 Count: 7 - ID: 0x8300 Build ID: 0x7809 Count: 93 - ID: 0x9500 Build ID: 0x7809 Count: 18 - ID: 0x0000 Build ID: 0x0000 Count: 0 Header ====== Signature: 50 45 0 0 Machine: I386 Number Of Sections: 3 Pointer To Symbol Table: 0 Number Of Symbols: 0 Size Of Optional Header: e0 Characteristics: RELOCS_STRIPPED - EXECUTABLE_IMAGE - CHARA_32BIT_MACHINE Time Date Stamp: 4be33f4a ...
Tem muita coisa legal na LIEF. Experimenta substituir a linha print(pe) por help(pe) para ver todas as opções do que dá pra fazer com um PE e testa também com os outros formatos. Você vai se surpreender.
Se ficou curioso, a maneira mais fácil de instalar é com o pip:
$ pip install lief
A LIEF também tem headers para C e C++.
Editado por Fernando Mercês
Comentários Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.