android apk的重新签名

android apk的重新签名 

http://zhengjunwei2007.blog.163.com/blog/static/35297942201222741713492/

用到的工具:

java -jar
signapk.jar
公钥私钥
adb.exe install
 
参考的文章:
 
SignApk.jar是一个已包含在Android平台源码包中的工具。如果要使用SignApk.jar,你需要创建一个带有对应证书/公钥的私钥。而你可以使用 Openssl 来创建私钥/公钥对。
 
签名:
java -jar signapk.jar platform.x509.pem platform.pk8 MyDemo.apk MyDemo_signed.apk 得到具有对应权限的APK

查看是否签名过:
jarsigner -verify xxx.apk

优化APK:
zipalign -v 4 MyDemo_signed.apk MyDemo_new.apk

查循APK是否优化过:
zipalign -c -v 4 MyDemo.apk
 
一个需要重新签名的场景:
目的:
调用settings,并实现自己的动作。
技术难点:
自己的apk需要和settings为同一个签名才能调用。
实现思路:
卸载settings package, 删除settings中的签名,使用和自己apk同样的签名, 安装settingsapk,再安装自己的apk, 达到自己的apk调用settings的apk。
 
具体做法:
adb uninstall com.android.settings
用解压工具打开apk(不解压)
找到META-INF目录
删除CERT.RSA和CERT.SF
保存并退出压缩工具
 
重新签名
keytool -genkey -alias android123.keystore -keyalg RSA -validity 20000 -keystore android123.keystore
或者使用:
java -jar signapk.jar shared.x509.pem shared.pk8 phone.apk phone_sined.apk
 

什么是pre-installapk

就是Android系统预装的一些应用,例如Messaging、Contacts、Calendar等等。

pre-install apk的签名方式

给apk签名的一般方法有两种,一种是在Eclipse里使用“Android Tools -> Export SignedApplication Package…”这种方式签名;另一种是用命令行签名。这里就不详细描述了。

而pre-install apk的签名比较特殊,使用源码中的默认签名。可以查看Android的源代码得知。

$ signapkpublickey.x509[.pem] privatekey.pk8 input.jar output.jar

其中,*.x509.pem为x509格式公钥,pk8为私钥。

 

设计思路是这样的:首先apk其实就是一个压缩包,我们可以将其用rar解压出来,那么我们都数据怎样放入apk呢?其实只要把数据(电子书文件)放到安卓的assets目录即可,android端只要读取assets中的文件显示出来即可。但是如果只是修改assets,会发现当再次打包成apk时,程序不能运行。这是因为apk一旦修改就必须要更新数字签名才可以使用。可以到网上下载SignAPK.jar的jar包,实现了android的动态签名技术。

猜你喜欢

转载自kakukemeit.iteye.com/blog/1812624