Python toolchain that reads IDA Pro .i64/.idb databases without launching IDA
Project description
i64-parser
i64-parser is a Python toolchain that reads IDA Pro .i64/.idb databases without launching IDA.
It wraps the python-idb library with a clean CLI that exports the artifacts reverse engineers reach for most: functions, strings, data blobs, symbol names, segments, fixups, type library entries, and structure layouts.
Features
- Function decoding – Capstone-backed disassembly with address, opcodes, comments, and xrefs.
- String & data scans – ASCII/UTF‑16 string harvesting plus data segment slices with reference tracking.
- Symbol surfaces – Import/export tables, NAM-derived globals, IDA-resolved labels, and cross references.
- Type information – Typedef/struct/union/enum declarations rendered from the TIL section.
- Segments & fixups – Segment metadata (permissions, class, preview bytes) and raw fixup records.
- Structure introspection – Structure flags, member offsets, types, and comments straight from
$ structs. - JSON or text reports – Filtered, address-bounded views for quick inspection or downstream scripting.
Requirements
- Python 3.9+
python-idbcapstone
Install prerequisites:
pip install python-idb capstone
Usage
python -m src.main <path-to-database> [--report kind] [options]
Report kinds:
functions, strings, data, imports, exports,
names, globals, segments, fixups, structs, types, all
Common options:
--json– emit JSON instead of text.--limit N– stop afterNrecords.--start,--end– inclusive address filters (hex or decimal).--match REGEX– filter by name/text/type (varies per report).
Examples:
# Dump function disassembly
python -m src.main samples/kernel32.i64 --report functions --limit 10
# Export all metadata to JSON for automation
python -m src.main samples/kernel32.i64 --report all --json > kernel32.json
# Inspect segments with read/exec permissions
python -m src.main samples/kernel32.i64 --report segments --match "rx"
# List TIL typedefs containing "PEB"
python -m src.main samples/kernel32.i64 --report types --match PEB
Repository Layout
src/
main.py CLI entry point
i64_parser/
api.py Database orchestration / extraction API
data.py Non-code segment scanning
disasm.py Capstone disassembly glue
fixups.py `$ fixups` netnode scanner
functions.py Function chunk enumerator
globals.py NAM/global symbol collector
names.py Name resolution helpers
records.py Typed dataclasses for serialized output
references.py ReferenceResolver class
segments.py Segment table + scanner
strings.py ASCII/UTF-16 string extraction
structures.py `$ structs` reader
types.py TIL typedef/struct/enum harvesting
Workflow Notes
- All extraction methods are read-only; no database mutation occurs.
- When
python-idbcan emulate IDAPython APIs (e.g.,get_nlist_*), the tool prefers them; otherwise it falls back to raw netnode parsing. - New report types or filters can be added by introducing a record dataclass, scanner module, API façade, and CLI renderer—each component is isolated for clarity.
Roadmap
- Additional metadata surfaces: fixups by type, FlowChart/basic blocks, loader metadata.
- Optional writers (CSV/SQLite) for large-scale analytics.
- Tests driven by synthetic
.i64fixtures.
License
This project inherits the Apache 2.0 license through python-idb. See LICENSE once it's added to the repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file i64_parser-1.0.0.tar.gz.
File metadata
- Download URL: i64_parser-1.0.0.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c076ae894401936e9822e9eea20c3caacbd2280822910eeb36b9085a7991f30e
|
|
| MD5 |
7cbfa201b0f55cc61dc58c9c2c70ffa9
|
|
| BLAKE2b-256 |
e97939438a89ec84b5d163251a3693c43cda2b172ee9b32362d77dbf4b1d58b4
|
File details
Details for the file i64_parser-1.0.0-py3-none-any.whl.
File metadata
- Download URL: i64_parser-1.0.0-py3-none-any.whl
- Upload date:
- Size: 16.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
397e77f5d7f1336ef38cfc60f613a10d11fdcf8155dc81e1f9918e80a7e46693
|
|
| MD5 |
98cb9cb26497d284e64ae53e62dd3149
|
|
| BLAKE2b-256 |
6214858dddecc311c9d8ffae59caca0aaf708131de1857d0eeb859c8dc02ee40
|