APK包的一些修改心得apk反编译
工具/原料
- 安卓手机一部
一、单纯修改apk中未加密资源
什么资源没有加密?非res文件夹下的资源,以及res中的图片。
1、直接用WinRAR/7-Zip解压缩apk包。
需要了解:META-INF就是签名;res就是文件类资源(图片及xml),classes.dex就是代码部分,resources.arsc就是字符串之类的资源。
2、修改/assets/operate_type.xml 文件。
3、删除META-INF 签名文件夹。
4、打包apk。
5、进行签名:
目前网络上提供的工具签名方法都是这个:
java -jar SignApk.jar platform.x509.pem platform.pk8 aa.apk aa_signed.apk
┌─ SignApk.jar 是签名工具
├─ platform.pk8 是私钥
├─ platform.x509.pem 是相对应的证书/公钥
└─ 使用SignApk.jar进行签名,其会自动删除META-INF 签名文件夹,并生成新签名。
6、签名后的apk即可进行安装使用。
二、签名的方法
除上文的签名外,还有一种方法,目前签名是成功,验证成功,但是apk无法安装,报apk签名错误。
(1)生成keystore文件
keytool -genkey -keystore test.keystore -alias CERT -keyalg RSA -validity 2000
keytool 在Java/jdk/bin 目录下
(2)使用keystore进行签名
jarsigner -verbose -keystore test.keystore -signedjar aa_sig.apk aa.apk CERT
jarsigner 在Java/jdk/bin 目录下
(3)验证签名
jarsigner -verify aa_sig.apk
jarsigner 在Java/jdk/bin 目录下
三、解包工具的使用,修改apk中加密资源
1、对apk进行解包:(包为aa.apk,解包后文件夹为aa)
java -jar apktool.jar d aa.apk aa
2、修改aa文件夹中资源
3、对文件夹aa进行打包成New-aa.apk
java -jar apktool.jar b aa New-aa.apk
4、签名apk
java -jar SignApk.jar platform.x509.pem platform.pk8 New-aa.apk New-aa_signed.apk
5、安装apk测试
四、其他相关工具
1、有一个Arsc修改器,可以在直接从apk解压出arsc资源而不解包情况下修改string等。(此方法完全可以被apktool方法替代,一是部分资源不能进行修改,工具封锁了吧…二是字符串可能直接写在代码中,在classes.dex中,这个工具也不管用。)
2、有一个dex2jar工具,直接将apk包中的dex变成jar,从而使用jd-gui进行查看java源码代码。(个人感觉效果不好。还不如直接用apktool弄出smali文件,直接修改方便。)
五、修改xml的一些心得
凡是看着文章的大部分人都是要美化去广告什么的。这就要面临修改xml,修改了几次,有点小经验,算作结尾:
1、仅仅用作展示的图片、文字,一般可以在xml中进行注释掉。而一些不需要的按钮图片,注释掉可能出问题,比如调用,此时可以修改为不显示,或者直接把他的宽度高度修改为0
注释方法是<!– 注释的内容 –>
修改不显示的方法是加入android:visibility=”invisible”
修改宽度高度方法是android:layout_width=”0.0dip” 和 android:layout_height=”0.0dip”
2、所有的资源都可以任意修改。比如一个logo图片是12060的,你可以修改为120120,由长方形修改为正方形。我一般是把资源导入到eclipse中边看着边修改。同时,也可以加入新的资源图片等,然后对应着修改xml布局。有了res图片资源和xml布局权限,界面完全可控。除非程序代码中强写的或者还有初始化布局。
差点忘记附件了…apk相关工具.传了这么多年附件。
附上我修改的一点点效果:(模拟器和魅族M9真机)
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。