How ko1dyz/obfuscapk works
Obfuscapk is a black-box Android application obfuscator. Its principal workflow accepts an APK or, with the documented BundleDecompiler integration, an AAB; decompiles it, applies selected plugins sequentially to shared application state, then rebuilds and signs the output. The plugin set covers code transformation, renaming, encryption, and resource/manifest changes; VirusTotal is an optional integration. The README documents the end-to-end toolchain, while excerpts and the source index support the core orchestration and plugin relationships shown here. Some tool and plugin internals were not sampled, so those links are documented or marked unverified.
Main entry points: main.py Workflow runner · obfuscation.py APK work state · tool.py APK toolchain · cli.py CLI options
Components 26
Application workflow
- CLI options
src/obfuscapk/cli.py - Workflow runner
src/obfuscapk/main.py - APK work state
src/obfuscapk/obfuscation.py
Plugin system
- Plugin discovery
src/obfuscapk/obfuscator_manager.py - Plugin contracts
src/obfuscapk/obfuscator_category.py
Obfuscation techniques
- Code transforms
src/obfuscapk/obfuscators - Reflection transforms
src/obfuscapk/obfuscators/reflection/reflection.py - Advanced reflection
src/obfuscapk/obfuscators/advanced_reflection/advanced_reflection.py - Rename transforms
src/obfuscapk/obfuscators - Arithmetic branches
src/obfuscapk/obfuscators/arithmetic_branch/arithmetic_branch.py - Call indirection
src/obfuscapk/obfuscators/call_indirection/call_indirection.py - Method overloading
src/obfuscapk/obfuscators/method_overload/method_overload.py - Encryption transforms
src/obfuscapk/obfuscators - Constant strings
src/obfuscapk/obfuscators/const_string_encryption/const_string_encryption.py - Resource strings
src/obfuscapk/obfuscators/res_string_encryption/res_string_encryption.py - Asset encryption
src/obfuscapk/obfuscators/asset_encryption/asset_encryption.py - Library encryption
src/obfuscapk/obfuscators/lib_encryption/lib_encryption.py - Manifest changes
src/obfuscapk/obfuscators/random_manifest/random_manifest.py
Build and integrations
- APK toolchain
src/obfuscapk/tool.py - Bundle decompiler
src/obfuscapk/toolbundledecompiler.py - VirusTotal check
src/obfuscapk/obfuscators/virus_total/virus_total.py
Other components
- CLI user
- Apktool
- BundleDecompiler
- Signing and alignment
- Obfuscated app
Connections 37
- CLI user → CLI options: supplies options
README.md - CLI options → Workflow runner: starts workflow
src/obfuscapk/cli.py - Workflow runner → Plugin discovery: gets plugins
src/obfuscapk/main.py - Plugin discovery → Plugin contracts: filters categories
src/obfuscapk/obfuscator_manager.py - Workflow runner → APK work state: creates state
src/obfuscapk/main.py - Workflow runner → APK toolchain: uses tools
src/obfuscapk/main.py - APK toolchain → Apktool: decompiles and rebuilds
README.md - Workflow runner → Bundle decompiler: supports bundles
src/obfuscapk/main.py - Bundle decompiler → BundleDecompiler: invokes
README.md - Workflow runner → Signing and alignment: prepares output
README.md - Workflow runner → Code transforms: runs selected plugins
README.md - Workflow runner → Reflection transforms: dispatches
src/obfuscapk/main.py - Workflow runner → Advanced reflection: dispatches
src/obfuscapk/main.py - Workflow runner → Rename transforms: dispatches
README.md - Workflow runner → Arithmetic branches: dispatches
src/obfuscapk/main.py - Workflow runner → Call indirection: dispatches
src/obfuscapk/main.py - Workflow runner → Method overloading: dispatches
src/obfuscapk/main.py - Workflow runner → Encryption transforms: dispatches
README.md - Workflow runner → Constant strings: dispatches
src/obfuscapk/main.py - Workflow runner → Resource strings: dispatches
src/obfuscapk/main.py - Workflow runner → Asset encryption: dispatches
src/obfuscapk/main.py - Workflow runner → Library encryption: dispatches
src/obfuscapk/main.py - Workflow runner → Manifest changes: dispatches
src/obfuscapk/main.py - Workflow runner → VirusTotal check: optionally checks
src/obfuscapk/main.py - Code transforms → APK work state: modifies
README.md - Reflection transforms → APK work state: reads and updates
src/obfuscapk/obfuscators/reflection/reflection.py - Advanced reflection → APK work state: reads and updates
src/obfuscapk/obfuscators/advanced_reflection/advanced_reflection.py - Arithmetic branches → APK work state: reads and updates
src/obfuscapk/obfuscators/arithmetic_branch/arithmetic_branch.py - Call indirection → APK work state: reads and updates
src/obfuscapk/obfuscators/call_indirection/call_indirection.py - Method overloading → APK work state: reads and updates
src/obfuscapk/obfuscators/method_overload/method_overload.py - Constant strings → APK work state: reads and updates
src/obfuscapk/obfuscators/const_string_encryption/const_string_encryption.py - Resource strings → APK work state: reads and updates
src/obfuscapk/obfuscators/res_string_encryption/res_string_encryption.py - Asset encryption → APK work state: reads and updates
src/obfuscapk/obfuscators/asset_encryption/asset_encryption.py - Library encryption → APK work state: reads and updates
src/obfuscapk/obfuscators/lib_encryption/lib_encryption.py - Manifest changes → APK work state: reads and updates
src/obfuscapk/obfuscators/random_manifest/random_manifest.py - APK toolchain → Obfuscated app: builds app
README.md - Signing and alignment → Obfuscated app: aligns and signs
README.md