I published my executable analyze and disassemble framework internally called "PE Decoder" (because Windows PE executables was implemented first). It supports following executable formats:
- NE (executable format of 16 bit Windows)
- PE (executable format in modern Windows and UEFI)
- ELF (UNIX-like systems)
Disassembler supports following CPUs:
- X86 (16, 32 and 64 bit, SSE instructions, based on DevDec486 from DevDecoder distribution)
- ARM (ported from DevDecoder distribution, support only 32 bit ARM without Thumb instructions)
- RISC-V (written by myself)
Executable decoder support listing imported/exported modules and symbols, exception tables for PE (x86_64 only) and ELF, symbol versions for ELF. Disassembler supports symbol name resolving and PIC (position-independent code) stubs name detection. PIC data symbol names detection is not work well for 32 bit x86 and ARM.
Source code:
https://github.com/X547/OberonUtils/tre ... %20Decoder.