一、背景
现有一个现成的 APK,需要修改它,并重新打包成 APK,现提供两种方式实现
二、修改 smali 的方式
- apktool d app-debug.apk
-
if-eqz
修改为if-nez
- apktool b app-debug
- sign app-debug/dist/app-debug.apk
sign.bat
jarsigner -verbose -keystore %~dp0xxx.keystore -signedjar %1_signed.apk %1 xxx_key_alias
- adb install -r app-debug/dist/app-debug_signed.apk
二、修改 dex 的方式
-
unzip app-debug.apk,如果 APK 采用的是 V2 签名,解压会失败,用
apktool d -s app-debug.apk
代替 -
IDA 载入目标 dex,IDA-View 视图中 alt+t/ctrl+t 搜索目标字符串,右键点击文本视图,看左侧地址,比如为
00001FAC
,点击十六进制视图,点击右键选择同步到 IDA-View,查看十六进制指令,这里为38
-
查看 Dalvik 指令码,发现 38 是
if-eqz
,39 是if-nez
-
以十六进制文件编辑器打开该 dex,找到 00001FAC 地址处,将 38 改成 39
-
用 dexfix 修复修改后的 dex 的 checksum
-
替换原始 dex
-
重新压缩成 APK,如果是 V2 签名,需要用 apktool b app-debug
-
sign app-debug/dist/app-debug.apk
-
adb install -r app-debug/dist/app-debug_signed.apk
网友评论