Repository navigation
Paranoia 0.5.0
Paranoia 0.5.0 brings a typed decompiler, RISC-V and MIPS, library signatures and Python scripting.
Downloads
- Paranoia-Setup-0.5.0.exe: the Windows installer (per-user, no admin rights needed)
- Paranoia-0.5.0-portable.exe: a portable build in a single file
These builds are not code-signed yet, so Windows SmartScreen may ask for confirmation the first time you launch one. The release pipeline will sign builds once a certificate is configured (docs/SIGNING.md).
New
- Decompiler v2 (x86 / x64):
- Registers become variables:
a1…for parameters andv1…for locals. A register gets a new variable when it is overwritten at the top level and no jump crosses that point. - Variables are declared with types. Types come from API prototypes (
HANDLE v3 = CreateFileW(a1, GENERIC_READ, …),DWORDfor a&varpassed asLPDWORD), from stack slot sizes and from register widths. Signatures use__fastcall. switchstatements are rebuilt from jump tables.- Loops come out as
while,while (1)withbreak/continue, andfor (init; cond; step).
- Registers become variables:
- Better function boundaries on x64 PE: chained
.pdataentries are now treated as chunks of their parent function, not as separate functions. This removes about 90% of the false tail calls in kernel32. - RISC-V disassembly:
- RV32 and RV64 with the I, M, A, F, D, C and Zicsr extensions.
- Compressed instructions are shown in their expanded form, with the usual aliases (
li,mv,ret,beqz, …). auipc/luipairs are resolved to data references and call targets.
- MIPS disassembly:
- MIPS32 and MIPS64, big- and little-endian.
- Branch delay slots are handled in the analysis.
lui+addiu/lwpairs andjalr t9calls are resolved.
- Library signatures (FLIRT-style):
- Reads IDA FLAIR
.patfiles. - Writes
.patfiles from any binary that has symbols (paranoia sigmake, or Create signature file in the menu). - A built-in MSVC x64 runtime library is applied automatically.
- Recognised library functions are highlighted.
- Reads IDA FLAIR
- Python scripting:
- Scripts run in your own CPython, so all your Python libraries are available.
- Common IDAPython calls work unchanged (
import idc, idautils:Functions,get_func_name,set_name,XrefsTo,get_bytes,patch_bytes,decompile,jumpto, …). - The console switches between JavaScript and Python and includes examples.
paranoia script <binary> <script.py>runs the same scripts headless, like IDA's batch mode.
Known limitations
- MIPS is covered by decoder tests on known encodings; it has not been checked on a full MIPS binary yet.
- IDA's compressed
.sigsignature files are not read; use.patfiles. - Pseudocode is available for x86 / x64 only.
See the roadmap for how Paranoia compares with IDA Pro today and what comes next.