APK包的一些修改心得apk反编译
最近一直在弄apk,还买了一本书,感觉学习起来很吃力,还是想通过修改反编译一些apk来的快,来的省事。希望本文能对各位美化新手有所帮助。
一、单纯修改apk中未加密资源
- 01
什么资源没有加密?非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即可进行安装使用。
二、签名的方法
- 01
除上文的签名外,还有一种方法,目前签名是成功,验证成功,但是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中加密资源
- 01
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测试
四、其他相关工具
- 01
1、有一个Arsc修改器,可以在直接从apk解压出arsc资源而不解包情况下修改string等。(此方法完全可以被apktool方法替代,一是部分资源不能进行修改,工具封锁了吧…二是字符串可能直接写在代码中,在classes.dex中,这个工具也不管用。) 2、有一个dex2jar工具,直接将apk包中的dex变成jar,从而使用jd-gui进行查看java源码代码。(个人感觉效果不好。还不如直接用apktool弄出smali文件,直接修改方便。)
五、修改xml的一些心得
- 01
凡是看着文章的大部分人都是要美化去广告什么的。这就要面临修改xml,修改了几次,有点小经验,算作结尾: 1、仅仅用作展示的图片、文字,一般可以在xml中进行注释掉。而一些不需要的按钮图片,注释掉可能出问题,比如调用,此时可以修改为不显示,或者直接把他的宽度高度修改为0 注释方法是<!– 注释的内容 –> 修改不显示的方法是加入android:visibility=”invisible” 修改宽度高度方法是android:layout_width=”0.0dip” 和 android:layout_height=”0.0dip” 2、所有的资源都可以任意修改。比如一个logo图片是120*60的,你可以修改为120*120,由长方形修改为正方形。我一般是把资源导入到eclipse中边看着边修改。同时,也可以加入新的资源图片等,然后对应着修改xml布局。有了res图片资源和xml布局权限,界面完全可控。除非程序代码中强写的或者还有初始化布局。 差点忘记附件了…apk相关工具.传了这么多年附件。 附上我修改的一点点效果:(模拟器和魅族M9真机)