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.0.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.0-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

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

Hashes for i64_parser-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c076ae894401936e9822e9eea20c3caacbd2280822910eeb36b9085a7991f30e
MD5 7cbfa201b0f55cc61dc58c9c2c70ffa9
BLAKE2b-256 e97939438a89ec84b5d163251a3693c43cda2b172ee9b32362d77dbf4b1d58b4

See more details on using hashes here.

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

Hashes for i64_parser-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 397e77f5d7f1336ef38cfc60f613a10d11fdcf8155dc81e1f9918e80a7e46693
MD5 98cb9cb26497d284e64ae53e62dd3149
BLAKE2b-256 6214858dddecc311c9d8ffae59caca0aaf708131de1857d0eeb859c8dc02ee40

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