Android APK 逆向工程工具集,支持完整的反编译、修改和重新打包流程。
首次使用需要下载必要工具:
cd /path/to/apk-decompiler/scripts
chmod +x setup_tools.sh
./setup_tools.sh
这会下载:
python3 scripts/decompile.py app.apk
输出目录结构:
app-decompiled/
├── smali-out/ # Smali 源码(可编辑)
├── apktool-out/ # 解码的资源文件
│ ├── AndroidManifest.xml
│ ├── res/
│ └── assets/
└── extracted/ # 原始 APK 内容
编辑相关文件:
smali-out/ - 修改 Smali 代码apktool-out/AndroidManifest.xml - 修改配置apktool-out/res/values/strings.xml - 修改文本python3 scripts/rebuild.py ./app-decompiled
输出:app-rebuilt.apk(已签名)
| 脚本 | 功能 |
|---|---|
| ------ | ------ |
setup_tools.sh | 下载并设置反编译工具 |
decompile.py | 反编译 APK |
rebuild.py | 重新打包并签名 |
analyze.py | 分析 APK 结构 |
# 基本反编译
python3 decompile.py app.apk
# 同时生成 JAR(可用 jadx 查看 Java 源码)
python3 decompile.py app.apk --java
# 只解码资源
python3 decompile.py app.apk --resources-only
# 只反编译 Smali
python3 decompile.py app.apk --smali-only
# 完整分析
python3 analyze.py app.apk
# 只看权限
python3 analyze.py app.apk --permissions
# 查看 Activities
python3 analyze.py app.apk --activities
# 查看应用类(需要先反编译)
python3 analyze.py app.apk --smali ./smali-out --classes
# 打包并签名
python3 rebuild.py ./project-dir
# 只签名 APK
python3 rebuild.py ./project-dir --sign-only app.apk
# 跳过签名
python3 rebuild.py ./project-dir --no-sign
grep -r "原始文本" ./apktool-out/res/values/
strings.xml:<string name="app_name">新名称</string>
find ./smali-out -name "MainActivity.smali"
# 修改返回值
.method public isEnabled()Z
const/4 v0, 0x1
return v0
.end method
编辑 apktool-out/AndroidManifest.xml:
参考 references/android-manifest.md
设置完成后,工具存储在 ~/.apk-tools/:
~/.apk-tools/
├── baksmali.jar # DEX → Smali
├── smali.jar # Smali → DEX
├── apktool.jar # 资源解码/打包
├── dex2jar/ # DEX → JAR
└── uber-apk-signer.jar # APK 签名
可设置环境变量:
export TOOLS_DIR=/custom/path
┌─────────────┐
│ app.apk │
└──────┬──────┘
│ decompile.py
▼
┌─────────────────────────┐
│ app-decompiled/ │
│ ├── smali-out/ │ ← 编辑 Smali 代码
│ └── apktool-out/ │ ← 编辑资源/Manifest
└──────┬──────────────────┘
│ rebuild.py
▼
┌─────────────────────┐
│ app-rebuilt.apk │
│ (已签名,可安装) │
└─────────────────────┘
共 1 个版本