Skip to main content

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

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 after N records.
  • --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-idb can 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 .i64 fixtures.

License

This project inherits the Apache 2.0 license through python-idb. See LICENSE once it's added to the repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

i64_parser-1.0.1.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

i64_parser-1.0.1-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

File details

Details for the file i64_parser-1.0.1.tar.gz.

File metadata

  • Download URL: i64_parser-1.0.1.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

Hashes for i64_parser-1.0.1.tar.gz
Algorithm Hash digest
SHA256 5f0a426e1f131535932082fed66bd272f01b57f8a9fc0d775c3b7df80886fd8e
MD5 6b2426c4b7174eb62410d85ee4292d0e
BLAKE2b-256 7ca49768406c6cbb80db019a3bc6a59d4b57f86280f5f08947e39cab47088395

See more details on using hashes here.

File details

Details for the file i64_parser-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: i64_parser-1.0.1-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

Hashes for i64_parser-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 757c2272ebab3b80bf7269517b347d7a3718be82ad34cce106c259f183159cdb
MD5 d28cbd645169c3cf4e70f68ba365d5a1
BLAKE2b-256 6f4e4270ea5793a59b1bc1d6c19f61169ecd16d966215c9b9a07794287ab893b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page