一、需求:想要修改一个apk里面一串字符串
环境:
apktool----https://ibotpeaches.github.io/Apktool/install/
dex2jar----https://github.com/pxb1988/dex2jar/
JD-GUI----http://jd.benow.ca/
jdk1.8.0环境
二、先反编译解包分析:
(明确要修改哪里的话可以跳过这步,我做这一步是为了看到部分java源代码来分析他的逻辑流程,以及需要修改哪一块)
首先解压APK、把classes.dex捣鼓出来
然后用./d2j-dex2jar.sh classes.dex (注意先给定本目录下所有脚本执行权限 chmod +x * )
把dex反编译成*.jar文件
用JD-GUI打开之后分析一波
得出结论:我要修改的字符串包在ShowActivity.class里面
三、修改内容:
首先命令行下:apktool d 我的软件.apk
得到一个包文件夹,去并找到同名的.smali 文件,因为.smali文件中文本采用unicode编码。需使用sublime打开,搜索文本unicode编码替换成要修改文本的unicode即可。
注:unicode<>中文转换工具:http://tool.chinaz.com/tools/unicode.aspx
修改完后保存smali文件,执行命令打包:apktool b 包文件夹名 -o output.apk
接下里就生成一个output.apk,注意这个apk目前没有被签名,是不能被安装到手机里面的。
四、签名
首先生成jks密钥,我是用的Android Studio生成,具体参照这里https://blog.csdn.net/yy1300326388/article/details/48344411
注意:只能识别文件*.jks (也就是记得把密钥后缀改一改)
签名这里用了github上面一个大佬写的jar:
https://github.com/beilly/Android-Signature/releases/download/v1.0-alpha1/ApkSign-beilly.rar
下载来解压 然后命令行里运行:java -jar apkSign.jar
笨蛋操作就能签名完了
Over.
纯手打,累。有用请点赞关注