Android逆向(Apktool)
📌 1. 安装 apktool
✅ Windows 安装
1️⃣ 下载 apktool.jar
和 apktool.bat
- 🔗 apktool 官方 GitHub
- 下载
apktool.jar
和apktool.bat
放入C:\Windows\
2️⃣ 测试是否安装成功
apktool -version
📌 2. 反编译 APK
使用 apktool
反编译 APK(解包):
apktool d myapp.apk -o myapp
📌 说明
d
👉 反编译(decompile)myapp.apk
👉 目标 APK-o myapp
👉 输出文件夹myapp/
✅ 解包后目录结构
myapp/
├── AndroidManifest.xml # 应用核心配置
├── smali/ # 反编译的 Smali 代码
├── res/ # 资源文件(图片、布局)
├── assets/ # 应用资源文件
└── original/ # 原始信息
📌 3. 修改 APK
✅ 修改 AndroidManifest.xml
找到 myapp/AndroidManifest.xml
,可以:
- 开启调试模式
<application android:debuggable="true" />
- 修改权限
<uses-permission android:name="android.permission.INTERNET"/>
✅ 修改 strings.xml
可以修改应用 UI 文本,如 res/values/strings.xml
:
<string name="app_name">修改后的应用名称</string>
1️⃣ 打开 res/values/colors.xml
,修改主颜色:
<color name="colorPrimary">#1E88E5</color> <!-- 修改主色调 -->
<color name="colorPrimaryDark">#1565C0</color> <!-- 状态栏颜色 -->
<color name="colorAccent">#D32F2F</color> <!-- 按钮 & 主题颜色 -->
2️⃣ 修改 styles.xml
主题:
<style name="Theme.CustomApp" parent="Theme.MaterialComponents.Light.DarkActionBar">
<item name="colorPrimary">#1E88E5</item>
<item name="colorPrimaryVariant">#1565C0</item>
<item name="colorAccent">#D32F2F</item>
</style>
📌 4. 重新打包 APK
修改完成后,需要重新编译:
apktool b myapp -o newapp.apk
📌 如果出现错误
apktool b myapp --use-aapt2 -o newapp.apk
✅ APK 重新打包完成!
📌 5. 签名 APK(重要)
🚀 使用 keytool
生成签名
keytool
是 Java JDK 自带的工具,用于生成 Keystore(密钥库),然后你可以用 apksigner
或 jarsigner
给 APK 签名。
📌 1. 生成 Keystore
如果你还没有 Keystore
,需要先用 keytool
生成:
keytool -genkey -v -keystore my-release-key.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 10000
如果乱码运行chcp 936
检查 Keystore 是否正确生成
keytool -list -keystore my-release-key.keystore
📌 参数解析
-genkey -v
👉 生成密钥-keystore my-release-key.keystore
👉 密钥文件-alias myalias
👉 密钥别名-keyalg RSA
👉 加密算法-keysize 2048
👉 密钥长度-validity 10000
👉 密钥有效期(单位:天)
✅ 完成后会生成 my-release-key.keystore
文件!
📌 2. 用 apksigner
签名 APK
apksigner sign --ks my-release-key.keystore --ks-key-alias myalias --out signed.apk myapp.apk
📌 说明
--ks my-release-key.keystore
👉 Keystore 文件--ks-key-alias myalias
👉 Keystore 别名--out signed.apk
👉 输出签名后的 APKmyapp.apk
👉 需要签名的 APK
📌 6. 安装已修改的 APK
adb install signed.apk