How codinggay/blackdex works
BlackDex is an Android APK dex-dumping app backed by a virtualized Android runtime. Its main user journey is to choose an APK in the app, request a dump, and retrieve extracted DEX output; the README documents both installed and not-yet-installed APKs, plus optional deep instruction repair. The repository also contains package/user management, virtual process and activity services, Android API reflection, and native hooking/instrumentation. UI-to-dump-service wiring is not fully shown in the excerpts, so uncertain connections are omitted or marked unverified.
Main entry points: DexDumpRepository.kt Dump repository · BPackageManagerService.java Package registry · BStorageManagerService.java Virtual storage · MainActivity.kt Dump screen
Components 18
App experience
- App startup
app/src/main/java/top/niunaijun/blackdex/app/App.kt - Runtime loader
app/src/main/java/top/niunaijun/blackdex/app/AppManager.kt - Dump screen
app/src/main/java/top/niunaijun/blackdex/view/main/MainActivity.kt - Dump controls
app/src/main/java/top/niunaijun/blackdex/view/main/MainViewModel.kt - Dump settings
app/src/main/java/top/niunaijun/blackdex/view/setting/SettingFragment.kt
Dump runtime
- Dump repository
app/src/main/java/top/niunaijun/blackdex/data/DexDumpRepository.kt - Dump records
app/src/main/java/top/niunaijun/blackdex/data/entity/DumpInfo.kt - Dump service
Bcore/src/main/java/top/niunaijun/blackbox/core/system/dump/BDumpManagerService.java
Virtual Android
- APK installation
Bcore/src/main/java/top/niunaijun/blackbox/core/system/pm/BPackageInstallerService.java - Package registry
Bcore/src/main/java/top/niunaijun/blackbox/core/system/pm/BPackageManagerService.java - Virtual processes
Bcore/src/main/java/top/niunaijun/blackbox/core/system/BProcessManager.java - Activity services
Bcore/src/main/java/top/niunaijun/blackbox/core/system/am/BActivityManagerService.java - Virtual users
Bcore/src/main/java/top/niunaijun/blackbox/core/system/user/BUserManagerService.java - Virtual storage
Bcore/src/main/java/top/niunaijun/blackbox/core/system/os/BStorageManagerService.java - API reflection
Bcore/black-fake/src/main/java/reflection/MirrorReflection.java
Hooking layer
- Native hooks
Bcore/src/main/cpp/Dobby/include/dobby.h - DEX extraction
Bcore/src/main/cpp/DexDump.cpp
Other components
- Operator
Connections 15
- Operator → Dump screen: selects APK
- App startup → Runtime loader: starts loader
app/src/main/java/top/niunaijun/blackdex/app/App.kt - Dump screen → Dump controls: requests dump
app/src/main/java/top/niunaijun/blackdex/view/main/MainActivity.kt - Dump controls → Dump repository: delegates
- Dump repository → Dump records: records results
app/src/main/java/top/niunaijun/blackdex/data/DexDumpRepository.kt - Dump repository → Dump service: requests dump
- Dump settings → Runtime loader: configures runtime
app/src/main/java/top/niunaijun/blackdex/view/setting/SettingFragment.kt - Dump service → DEX extraction: extracts DEX
README.md - APK installation → Package registry: installs packages
Bcore/src/main/java/top/niunaijun/blackbox/core/system/pm/BPackageInstallerService.java - Activity services → Virtual processes: starts processes
Bcore/src/main/java/top/niunaijun/blackbox/core/system/am/BActivityManagerService.java - Virtual processes → Package registry: reads app info
Bcore/src/main/java/top/niunaijun/blackbox/core/system/BProcessManager.java - Virtual users → Package registry: deletes user packages
Bcore/src/main/java/top/niunaijun/blackbox/core/system/user/BUserManagerService.java - Virtual storage → API reflection: accesses platform API
Bcore/src/main/java/top/niunaijun/blackbox/core/system/os/BStorageManagerService.java - Virtual storage → Virtual users: maps user storage
Bcore/src/main/java/top/niunaijun/blackbox/core/system/os/BStorageManagerService.java - DEX extraction → Native hooks: uses native hooks