Open reverse engineering — PE/ELF/Mach-O, x86/x64/AArch64, graphs, pseudocode. Rust engine, no network. Desktop · CLI · browser.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗An open, local-first reverse-engineering platform. Disassembly, graphs, a decompiler, debugging and scripting for PE, ELF and Mach-O — in a private desktop app built on Rust.
PSB-C · SIGNED · ATTESTED · SBOM · NO-TELEMETRY · LOCAL-FIRST · AUDIT:NONE · DISCLOSURE:OK
Altumptic Product Security Baseline labels — what each one means and the evidence: docs/PSB.md
Download · Features · Security · Keyboard · Command line · Build · Roadmap
shell32.dll (24 449 functions, 1.47 M instructions) in about two seconds on a mid-range laptop.| Area | What you get |
|---|---|
| Formats | PE / PE32+ (.NET detection, forwarders, TLS callbacks, .pdata with chained unwind info), ELF (PIE, PLT/GOT imports, symbol versions), Mach-O (universal binaries, dyld bind opcodes, chained fixups, export trie) |
| Architectures | x86 and x86-64 (iced-x86), AArch64, ARM32 and Thumb-2 (yaxpeax-arm), RISC-V RV32/RV64GC, MIPS32/64 and PowerPC 32/64 (own decoders) |
| Auto-analysis | Recursive-descent function discovery from entry points, exports, symbols and exception tables; basic blocks; switch-table recovery; no-return awareness; import thunks |
| Listing | Code and data in one view: sub_ / loc_ labels, db/dw/dd/dq, strings, offset, extrn, auto names (aHelloWorld, qword_…), XREF comments, jump arrows, argument labels from API prototypes |
| Decompiler | x86 / x64 (Tab / F5): typed variables (HANDLE v3 = CreateFileW(a1, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, …)), expression propagation, switch, while / for / do-while with break / continue; type a variable (Y) and struct fields render as ctx->FileName, with the type flowing into the functions it is passed to, back through typed call results, and along pointer fields — so linked lists and trees stay readable (p = ctx->next; p->id) |
| Graph & xrefs | Control-flow graph with pan, zoom and minimap; xrefs dialog (X), call graph, stack frames |
| Editing | Rename (N), comments (;), bookmarks, code / data / string / undefine (C D A U), create function (P), operand display (H R B M), local C types, undo / redo — saved per file hash |
| Hex & patching | Hex view with data inspector, byte patching, NOP / invert / force-jump patches, save the patched file |
Stated here so nobody has to find them the hard way (full list in the roadmap):
npm run app).Download from Releases:
Paranoia-Setup-<version>.exe — Windows installer (per-user, no admin rights)Paranoia-<version>-portable.exe — single-file portable buildSHA256SUMS, SHA256SUMS.sigstore.json and the CycloneDX SBOMs — checksums, their signature and the bill of materials (from v0.5.1; see VERIFY.md for what each release contains)The executables are not Authenticode-signed yet, so Windows SmartScreen may ask for confirmation on first launch. Check the download instead:
Get-FileHash .\Paranoia-<version>-portable.exe -Algorithm SHA256 # compare with SHA256SUMS
cosign verify-blob SHA256SUMS --bundle SHA256SUMS.sigstore.json \
--certificate-identity-regexp '^https://github\.com/Altumptic/paranoia/\.github/workflows/ci\.yml@refs/tags/v' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
gh attestation verify Paranoia-<version>-portable.exe --repo Altumptic/paranoia
Step by step: docs/VERIFY.md.
%APPDATA%\Paranoia; nothing else is stored (data inventory).eval; the JavaScript console runs in an isolated worker; the engine opens only files you chose; starting the debugger or a Python script needs a native confirmation; Electron fuses lock the binary down.Details: security design and threat model · baseline status and exceptions · report a vulnerability: SECURITY.md.
| Keys | Action | Keys | Action |
|---|---|---|---|
Ctrl O | Open file | Space | Listing ↔ graph |
Ctrl K / G | Go to address, name, string | Tab / F5 | Pseudocode |
Esc / Alt ← | Back | Alt → | Forward |
Enter / double-click | Follow operand | X | Cross references |
N | Rename | ; | Comment |
Y | Type variable (pseudocode) | Alt M / Ctrl M | Bookmark / list bookmarks |
P | Create function | Alt M / Ctrl M | Bookmark / list bookmarks |
C / D / A / U | Code / data / string / undefine | Ctrl Z / Ctrl Y | Undo / redo |
H / R / B / M | Operand: hex ↔ dec / char / binary / enum | Ctrl ` | Script console |
Alt B / Alt T / Alt I | Search bytes / text / immediate | 1–6 | Overview, listing, graph, pseudocode, calls, hex |
F2 / F9 / F7 / F8 / F4 | Breakpoint / run / step into / step over / run to cursor | Ctrl B / Ctrl J | Toggle sidebar / inspector |
paranoia info sample.exe
paranoia functions sample.exe
paranoia disasm sample.exe --at main -n 40
paranoia pseudo sample.exe main
paranoia xrefs sample.exe CreateFileW
paranoia strings --referenced sample.exe --json
paranoia script sample.exe analyse.py --at 140001000 # Python, headless
paranoia sigmake app.exe --pdb app.pdb -o app.pat # FLAIR .pat from symbols
paranoia sigapply app.exe libc.sig # apply IDA .sig (or .pat) signatures
paranoia ssa app.exe main # a function in SSA form (phi nodes, constants, dead code)
paranoia sigapply other.exe app.pat
Requirements: Rust 1.82+, Node.js 20+.
# engine + CLI
cargo build --release -p paranoia-engine -p paranoia-cli
cargo test --workspace
# desktop app (dev loop with hot reload)
cd apps/desktop
npm ci
npm run wasm # engine for the browser build (rustup target add wasm32-unknown-unknown)
npm run app:dev
# Windows installer + portable exe in apps/desktop/out/
npm run dist
The browser build (npm run dev, then open http://localhost:1420) runs the same engine as WebAssembly in a Web Worker.
Windows note. Everything builds with the
x86_64-pc-windows-gnutoolchain without a C compiler. If your checkout path contains spaces and you hitdlltoolerrors, setCARGO_TARGET_DIRto a path without spaces.
AI assistants: start with AGENTS.md — one page with the repo map, commands, invariants and recipes, so you never have to rediscover the project.
crates/
paranoia-core analysis engine: loaders, disassemblers, analysis, decompiler, debug info, signatures
paranoia-engine native engine process for the desktop app (JSON over stdio), workspace store, debugger
paranoia-db workspace store on redb (annotations, recent files)
paranoia-wasm the engine compiled to WebAssembly with a plain C ABI
paranoia-cli `paranoia` command-line tool
apps/desktop React + TypeScript UI, Electron shell, electron-builder packaging
assets/brand logo and app icon sources
docs/ architecture, security design, verification, baseline status, roadmap
Issues and pull requests are welcome — see CONTRIBUTING.md. Report crashes on specific files with their SHA-256 rather than attaching malware, and report vulnerabilities privately as described in SECURITY.md.
| Debug info | PDB symbols (found next to the binary, GUID-checked); PDB and DWARF struct / union / enum definitions as searchable debug-info types (for Y and the decompiler); DWARF names, globals and source lines |
| Signatures | FLIRT library recognition: reads IDA .sig and .pat files, writes .pat; built-in MSVC x64 runtime library |
| Debugger | Windows x64 / 32-bit and Linux x86-64 programs: breakpoints (F2), run (F9), step into / over (F7 / F8), run to cursor (F4), registers and stack |
| Scripting | Python in your own interpreter — import idc, idautils works for common calls — and JavaScript, both with the pn API; headless paranoia script batch mode |
| Triage | Hashes, entropy map, section map, checksec-style mitigations (ASLR, DEP, CFG, RELRO, PIE, canaries, FORTIFY) |