$ show skylot/jadx
jadx is a production-grade Android DEX/APK to Java source decompiler, providing both a command-line tool (jadx-cli) and a feature-rich Swing GUI (jadx-gui). The architecture is a multi-module Gradle project with a plugin system for input formats (DEX, Java class files, Smali, AAB, XAPK), decompilation passes, resource handling, and deobfuscation. The core decompilation pipeline uses a visitor pattern over a custom intermediate representation (IR) with type inference, SSA construction, region-based control flow, finally block extraction, and code generation. The codebase is actively maintained with a large test suite, but exhibits technical drift through deprecated APIs, complex state machines, and some unmaintained code paths. The plugin system and zip reader module are well-isolated and potentially reusable.
The LLM identified 2 files worth highlighting for reuse:
A self-contained module providing a custom ZIP reader with security features (zip bomb detection, path traversal prevention) and a fallback parser for malformed ZIP files. It uses an interface-based design (IZipEntry, IZipParser) and includes a dedicated security layer (JadxZipSecurity, DisabledZipSecurity). This module has no internal jadx dependencies and can be extracted for use in other Java projects requiring robust ZIP input handling.
A call graph builder and exporter that uses clean interface abstractions (ICallGraph, ICallGraphNode, ICallGraphEdge) and provides DOT and JSON export formats. The builder filters by package and resolves only references. While currently tied to jadx's internal class model, the API layer is designed for reuse in other static analysis tools needing call graph construction and visualization.