Tool

paranoid-deobfuscator

Python command-line tool that recovers the strings hidden by the Paranoid and LSParanoid Android string-obfuscation plugins, so that smali code becomes readable for static analysis. It scans a smali directory for the obfuscator's string-lookup method and encoded chunk array, decodes the chunks with Python ports of the libraries' DeobfuscatorHelper and RandomHelper classes, and rewrites each lookup call in place as a const-string instruction with a marker comment. Helper commands list the recovered strings, save the chunks to a file and decode a single string from saved chunks.

Targets
App
Category
Android tools
Relationship
Foundation tool
Sources reviewed

Requirements & limits

  • Latest release at review: v3.0.2, published 2025-02-18 and uploaded to PyPI the same day; install it with pip or pipx. pyproject.toml requires Python 3.10+ with click 8 (8.1.7 or later) and NumPy 2 (2.1.3 or later), and CI runs pytest on Python 3.10 to 3.13 on every push. The reviewed main commit of 2025-03-26 adds only tests and a donation link after that release.
  • It works on a smali directory decoded from an APK or DEX file the user supplies, which the README pairs with Apktool or smali/baksmali for decoding and rebuilding, and it overwrites the smali files in place. The README supports only apps obfuscated with Paranoid v0.3.0 or later, released 25 January 2020; a commented-out README warning about Windows refers to issue #14, which is closed.
  • The command stops when it finds more than one candidate string-lookup method or obfuscated string array, which the source says is not supported yet, and logs a warning for lookup calls it cannot follow. It restores string constants only, not names or other obfuscation. Tests cover string encoding, smali parsing, Paranoid decoding and the issue #18 regression.
  • Apache-2.0 (copyright 2024 Giacomo Ferretti); the decoding modules state that they were converted from Paranoid's and LSParanoid's Java helpers. Analyzed apps keep their own terms. This review ran nothing, and the sources establish no REA connection.

About this entry

The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.

Report an outdated entry Suggest a translation fix

Primary sources

  1. README.md GitHub · giacomoferretti/paranoid-deobfuscator · Revision 028bd05
  2. paranoid_deobfuscator/commands/deobfuscate.py GitHub · giacomoferretti/paranoid-deobfuscator · Revision 028bd05
  3. paranoid_deobfuscator/commands/helpers.py GitHub · giacomoferretti/paranoid-deobfuscator · Revision 028bd05
  4. paranoid_deobfuscator/paranoid/DeobfuscatorHelper.py GitHub · giacomoferretti/paranoid-deobfuscator · Revision 028bd05
  5. pyproject.toml GitHub · giacomoferretti/paranoid-deobfuscator · Revision 028bd05
  6. .github/workflows/run_tests.yml GitHub · giacomoferretti/paranoid-deobfuscator · Revision 028bd05
  7. LICENSE GitHub · giacomoferretti/paranoid-deobfuscator · Revision 028bd05
  8. https://github.com/giacomoferretti/paranoid-deobfuscator/releases/tag/v3.0.2
  9. https://pypi.org/project/paranoid-deobfuscator/3.0.2/

More in Apps

All 136 entries in Apps