APK反编译 修改APK源码文件 重新打包APK踩坑日记

1.准备软件

下载地址:
链接: https://pan.baidu.com/s/1PLUKrjNHio9EYDl9eCckXw 提取码: rhvr

2.软件用途

解压下载的压缩包, 有以上三个文件
baksmali-2.0.3.jar工具, 可将解压缩后apk目录下的classes.dex文件转为smali文件, 后面对源码的修改, 就是针对smali文件的修改

smali-2.0.3.jar工具, 可将smali文件重新转为classes.dex文件, 用重新生成的dex文件替换之前解压apk目录下的dex文件, 这样apk源码的修改就成功了

sign_tool目录下的signapk.jar是个签名工具, 替换了dex文件的apk要重新签名, 才能正常安装到手机

3.解压apk获取classes.dex文件

apk文件可通过zip工具直接解压, 或通过修改apk为压缩文件类型在通过zip解压工具解压
解压后的apk目录下, 有classes.dex文件, apk源码全部编译到了该文件

4.修改smali类型源码文件

但classes.dex文件是无法直接查看或修改的
我们需要将classes.dex文件转为smali类型的文件, 才能修改查看源码

步骤:
进入apk的解压目录下, 可以看到classes.dex

使用cmd命令转化dex文件为smali文件:
java -jar baksmali-2.0.3.jar -x classes.dex

执行完后会在当前目录生成out目录, 可以在该目录找到与源码对应的smali文件
可以使用文本编辑工具, 修改smali文件, 推荐使用Notepad++修改smali类型文件

5.重新打包

smali源码文件修改完后, 需要重新打包回dex文件, 新的dex替换老的dex, 即可实现对apk的修改

在有out目录的同级目录下cmd命令:
java -jar smali-2.0.3.jar -o classes.dex out
执行完后, 会生成新的classes.dex, 老的dex会被覆盖

使用系统自带的压缩工具, 将新classes.dex替换到apk并保存实现源码替换

最后重要的一步, 重新签名apk文件
把替换好dex文件的apk复制到sign_tool目录下
执行cmd命令:
java -jar signapk.jar platform.x509.pem platform.pk8 test.apk newtest.apk

说明:
test.apk是需要重新签名的apk文件
newtest.apk是新签名后的apk文件

至此, 大功告成, 完结撒花~

原文地址:https://www.cnblogs.com/wslio/p/13534044.html