Hack APK&签名回编译

准备工作

前提是安装好JDK并配置环境变量,然后下载以下反编译工具

反编译过程

1.反编译apk
 
sudo apktool d cyj.apk

则在当前目录会生成名为cyj的文件夹,存放的是反编译后的内容

2.反编译源代码
 
unzip cyj.apk -d src #获取dex文件
sh d2j-dex2jar.sh ../src/classes.dex #将dex文件转为jar
3.阅读源代码

将上一步生成的classes-dex2jar.jar文件使用jd-gui工具打开,即可看到源代码(一般情况下,都会被混淆)

4.修改smali文件

第三步可以修改java代码来实现hack的效果,但本人更推荐修改smali文件。因为反编译后的java代码跟原始结构还是会存在一些差异。smali文件存放在cyj/smali下面,和class文件基本是一一对应的。可以互相对比来理解代码逻辑。

5.回编译

修改smali文件之后,需还原成apk

 
sudo apktool b cyj

则会在cyj/dist下生成新的apk,但此时还不可使用

5.加签名
 
keytool -genkeypair -alias "cheng" -keyalg "RSA" -keystore "cheng.keystore" #生成keystore
sudo jarsigner -sigalg SHA1withRSA -digestalg SHA1 -verbose -keystore cheng.keystore -signedjar cyj_signed.apk cyj.apk cheng #加签名

最终生成的cyj_signed.apk就是hack后的apk了。