android 签名工具 autoSign jarsigner
来源:互联网 发布:单片机连接马达 编辑:程序博客网 时间:2024/06/10 22:03
android 签名工具 autoSign jarsigner
PackageManagerService
处理各种应用的安装、卸载、管理等工作,开机时由systemServer启动此服务。就是说之前安装过的应用或者系统应用信息都会在开机扫描过程中存到mPackages这个hashMap中。
开机后用户的安装操作也会同样存到这个hashMap里面。getPackageInfo,调用generatePackageInfo,里面调用的是PackageParser中的generatePackageInfo
autoSign 签名工具
把new.apk文件(需要签名的apk文件)复制到签名软件的目录下,再用记事本打开Sign.bat,将其修改为如下代码:
java -jar signapk.jar testkey.x509.pem testkey.pk8 new.apk new_signed.apk
最后双击一下Sign.bat即可签名完成
jarsigner 签名工具
1、生成签名
用AndroidStudio或者ecplise来生成一个keystore,也可以通过执行命令:
//keytool -genkey -keystore abc.keystore -alias abc.keystore -keyalg RSA -validity 20000 keytool -genkey -keystore my.keystore -keyalg RSA -validity 10000 -alias my
//-keystore 后跟签名文件 -alias 后跟签名文件的别名,一般和普通名字一样, 执行命令后会出现密码、开发者等相关信息录入项,填入相关信息即可
2、签名打包
签名文件my.keystore和apk拷到同一个目录下,执行命令:
//jarsigner -verbose -keystore abc.keystore -signedjar 123x.apk 123.apk abc.keystorejarsigner -verbose -keystore my.keystore -signedjar my_signed.apk my.apk my//my.keystore即你的签名文件, my.apk即需要进行签名的apk, my_signed.apk即Android签名后的APK文件java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apk update_signed.apk
意义:
以testkey.x509.pem 这个公钥文件和 testkey.pk8 这个私钥文件对 update.apk 进行签名,签名后保存为 update_signed.apk
1、
Manifest manifest = addDigestsToManifest(inputJar); //创建Manifest, JarFile inputJar = new JarFile(new File(args[2]), false); //输入Jar文件manifest.getEntries().remove("META-INF/CERT.SF");manifest.getEntries().remove("META-INF/CERT.RSA");outputJar.putNextEntry(new JarEntry("META-INF/MANIFEST.MF")); //为MANIFEST.MF,创建Jar文件实体类、JarOutputStream outputJar = new JarOutputStream(new FileOutputStream(args[3])); outputJar.setLevel(9);manifest.write(outputJar);//遍历Apk中所有文件,对非文件夹非签名文件的文件逐个生成SHA1数字签名信息,再base64编码,然后再写入MANIFEST.MF文件中。SHA1生成的摘要信息,如果修改了某个文件,Apk安装校验时,取到的该文件的摘要与MANIFEST.MF中对应的摘要不同,则安装不成功
2、
Signature signature = Signature.getInstance("SHA1withRSA"); //对生成的Manifest使用SHA1withRSA算法 signature.initSign(privateKey); //用私钥签名, PrivateKey privateKey = readPrivateKey(new File(args[1])); outputJar.putNextEntry(new JarEntry("META-INF/CERT.SF")); //为CERT.SF, 创建Jar文件实体类、输出 writeSignatureFile(manifest, new SignatureOutputStream(outputJar, signature));//经该函数,生成CERT.SF签名文件
//用私钥通过RSA算法对manifest里的摘要信息进行加密(安装的时候只能通过公钥解密,解密之后才能获得正确的摘要,再对比摘要是否一致,不同则安装不成功)
3、 outputJar.putNextEntry(new JarEntry("META-INF/CERT.RSA"));
//为CERT.RSA, 创建Jar文件实体类、输出
writeSignatureBlock(signature, publicKey, outputJar);
// 对输出Jar文件进行私钥签名,公钥加密
//最后就是如何生成CERT.RSA,打开这个文件看到的是乱码,说明整个文件都被编码加密了,而且这个文件和公钥有关,从源码中看出他是通过PKCS7将整个文件加密了
4、copyFiles(manifest, inputJar, outputJar);
- android 签名工具 autoSign jarsigner
- 自动签名工具AutoSign
- android[工具or命令]jarsigner - JAR 签名和校验工具
- jarsigner - JAR 签名和校验工具
- jarsigner - JAR 签名和校验工具
- jarsigner - JAR 签名和校验工具
- jarsigner - JAR 签名和校验工具
- jarsigner - JAR 签名和校验工具
- jarsigner - JAR 签名和校验工具
- 使用jarsigner工具签名.apk文件
- jarsigner - JAR 签名和校验工具
- jarsigner - JAR 签名和校验工具
- APK签名工具-jarsigner和apksigner
- jarsigner签名
- Android apktool 解包打包 jarsigner 签名
- android jarsigner 签名apk简单使用说明
- jarsigner 工具
- Android签名用keytool和jarsigner制作apk文件
- 572. Subtree of Another Tree
- Joining a thread 等另一个线程执行完(die)
- 常见Linux OS防火墙命令汇总(不断更新中...)
- Android 开发者的 RxJava入门教程
- 【数据库管理】ORA-01017错误及部分的常见典型案例
- android 签名工具 autoSign jarsigner
- rand()函数与srand()函数的对比与使用
- python 爬虫第一步
- 用RxJava实现事件总线(Event Bus)
- VS“提示无法启动调试未安装Silverlight”的解决办法
- 二分法查找
- android 逆向工程apktool dex2jar jd-gui Jadx Smali2Java
- bzoj2438 [中山市选2011]杀人游戏
- 无限极分类之查找家谱树