教程导航
- Android Apk反编译系列教程(一)如何反编译APK
- Android Apk反编译系列教程(二)APK重打包
- Android Apk反编译系列教程(三)Android Studio调试smali代码
背景简介
APK反编译分析的时候,难免需要对APK进行重打包来辅助反编译的分析。比如通过重打包给APK添加可调试功能或者添加可抓https包的功能,都需要应用到重打包的技术。
操作步骤
(一)APKTool反编译
// 清除framwork,避免framwork过期,拉取最新的framwork资源
apktool empty-framework-dir --force
// 开始反编译
apktool d -f org.fedorahosted.freeotp.apk
- 如果出现resourceId找不到等framework相关的问题,详情参见:ibotpeaches.github.io/Apktool/doc…
(二)修改反编译的资源代码或者smali代码
以反编译的包支持debug和支持charles https抓包为例
(1)修改manifest
<application
// 支持debug
android:debuggable="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
// 支持https抓包
android:networkSecurityConfig="@xml/network_security_config"
android:supportsRtl="true"
android:theme="@style/AppTheme">
(2)在res目录下新建xml文件夹,新建network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
(三)重新编译APK
(1)apktool编译:编译修改后的代码生成新的apk
apktool b org.fedorahosted.freeotp -o new.apk
(3)zipalign对齐:将新生成的apk对齐
- 参数详解参见:developer.android.com/studio/comm…
- 4:按照4个字节的边界对齐
zipalign -f -v -p 4 new.apk new_zip_align.apk
(4)apksigner签名:只有签名后的apk才可以安装
- --ke:签名文件
- --ks-key-alias:签名文件alias
- --ks-pass pass:112112:签名文件密码
- pass:112112 (pass一定要,指的是显示指定密码),详情参见:developer.android.com/studio/comm…
apksigner sign --ks /Users/weishenhong/Desktop/wsh/code/android/android_learning/app/keystore --ks-key-alias key0 --ks-pass pass:112112 --out rebuild_signed.apk new_zip_align.apk
(5)安装apk
adb install -r -t rebuild_signed.apk
至此,你重打包的apk就成功安装了。
相关链接
- zipalign文档:developer.android.com/studio/comm…
- www.jianshu.com/p/e1e2fd05b…
- apksigner文档:developer.android.com/studio/comm…