天天看点

Android安卓APK反编译分析、简单修改内容、二次打包签名

一、需求:想要修改一个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.

纯手打,累。有用请点赞关注