Krainium/DarkDex
GitHub: Krainium/DarkDex
DarkDex 是一款 Android 应用脱壳工具,通过读取运行时进程内存来提取被加壳保护的真实 dex 文件。
Stars: 0 | Forks: 0
# 🟣 DarkDex
🧬 DarkDex 用于从加壳的 Android 应用中提取真实的 dex。它通过读取运行中的应用内存来重建 dex,即使文件头被擦除也能正常工作。因此它支持爱加密(ijiami)(包括第四代 vmp)、其他加壳工具以及普通应用。
它包含两部分。
🖥️ darkdex.sh 运行在 redroid 宿主机上。它从 Android 沙箱外部读取目标进程的内存,因此应用内部无法检测到它的存在。
📱 darkdex.apk 运行在手机或模拟器上。root 模式会进行完整的内存转储。非 root 模式则会提取磁盘上的 dex。
## 📥 设置
克隆项目
```
git clone https://github.com/Krainium/DarkDex.git
cd DarkDex
```
### 🖥️ 宿主机工具 (darkdex.sh)
你需要一台运行 redroid 的 Linux 宿主机,redroid 就是在 Docker 中运行的 Android。请使用 arm64 镜像以便运行 arm 应用。宿主机内核需要 binder 模块。
在宿主机上加载 binder
```
sudo modprobe binder_linux devices="binder,hwbinder,vndbinder"
```
启动 redroid 并连接 adb
```
docker run -itd --privileged --name redroid \
-v ~/redroid_data:/data -p 5555:5555 \
redroid/redroid:11.0.0 \
androidboot.redroid_width=720 androidboot.redroid_height=1280
adb connect localhost:5555
```
在宿主机上构建 native 核心
```
cd native
g++ -O2 -std=c++17 -o darkdex_carve darkdex_carve.cpp
g++ -O2 -std=c++17 -o darkdex_recover darkdex_recover.cpp
g++ -O2 -std=c++17 -o darkdex_intel darkdex_intel.cpp
cd ..
```
运行它。传入一个 apk,它会自动为你安装;或者传入一个已安装的包名。
```
./host/darkdex.sh app.apk
./host/darkdex.sh com.some.app
```
转储文件会保存在 dumps// 目录下,其中包含提取的 dex、恢复的 dex,以及一个情报文件(intel file),里面记录了后端 URL、类映射(class map)和加壳工具 ID(packer id)。
### 📱 应用程序 (darkdex.apk)
从发布页面获取 apk 并安装
```
adb install -r -g darkdex.apk
```
或者自行构建
```
cd app
./gradlew :app:assembleDebug
adb install -r -g app/build/outputs/apk/debug/app-debug.apk
```
打开 DarkDex,从列表中选择一个应用,它就会开始转储。在已 root 的设备或模拟器上,徽章会变绿,你将获得完整的内存转储。如果没有 root,它会提取磁盘上的 dex。此外还有一个搜索框和一个强制非 root 模式的开关。
## 🔧 工作原理
完整的分析文档位于 ijiami.md 中。
## 📸 截图
✨ 启动画面

📲 带 root 徽章、搜索框和开关的应用界面

🧩 带模式徽章的转储结果

💻 在终端中运行的转储过程

## 🎓 仅供学习使用
请仅对你拥有或已获授权测试的应用使用此工具。仅供研究和学习之用。
标签:Cutter, DEX, 主机友好, 云资产清单, 内存提取, 后台面板检测, 安卓, 脱壳, 请求拦截, 逆向工程