Android Apk去掉签名以及重新签名的方法
Android开发中很重要的一部就是用自己的密钥给Apk文件签名,不经过签名的Apk文件一般是无法安装的,就算装了最后也是失败。
网上流传的“勾选允许安装未知来源的应用”其实跟签不签名没啥关系,说白了就是允许安装不从电子市场上下载的应用而已。
近几日需要修改一个Apk中JNI调用的.so文件,苦于没有apk源代码,只好研究了一下签名相关的问题。当然有很多第三方工具可以做到,但其实JDK中已经提供了强大的签名工具jarsigner。
1.去除签名
其实很简单,用WinRAR打开apk,找到META-INF文件夹,删除MANIFEST.MF之外的所有其他文件即可。
2.签名
运行jarsigner,如果没有设置PATH环境变量,那可以从JDK安装路径下的bin目录中找到,比如我本机的就是C:\Program Files\Java\jdk1.8.0_31\bin\jarsigner.exe
jarsigner用法如下:
用法: jarsigner [选项] jar-file 别名 jarsigner -verify [选项] jar-file [别名...] [-keystore <url>] 密钥库位置 [-storepass <口令>] 用于密钥库完整性的口令 [-storetype <类型>] 密钥库类型 [-keypass <口令>] 私有密钥的口令 (如果不同) [-certchain <文件>] 替代证书链文件的名称 [-sigfile <文件>] .SF/.DSA 文件的名称 [-signedjar <文件>] 已签名的 JAR 文件的名称 [-digestalg <算法>] 摘要算法的名称 [-sigalg <算法>] 签名算法的名称 [-verify] 验证已签名的 JAR 文件 [-verbose[:suboptions]] 签名/验证时输出详细信息。 子选项可以是 all, grouped 或 summary [-certs] 输出详细信息和验证时显示证书 [-tsa <url>] 时间戳颁发机构的位置 [-tsacert <别名>] 时间戳颁发机构的公共密钥证书 [-tsapolicyid <oid>] 时间戳颁发机构的 TSAPolicyID [-altsigner <类>] 替代的签名机制的类名 [-altsignerpath <路径列表>] 替代的签名机制的位置 [-internalsf] 在签名块内包含 .SF 文件 [-sectionsonly] 不计算整个清单的散列 [-protected] 密钥库具有受保护验证路径 [-providerName <名称>] 提供方名称 [-providerClass <类> 加密服务提供方的名称 [-providerArg <参数>]]... 主类文件和构造器参数 [-strict] 将警告视为错误
比较常用的参数就是指定keystore的位置和签名后的文件,举例如下:
jarsigner -keystore C:\myKey.key -signedjar apk-signed.apk apk-unsigned.apk myKey
待签名的文件是apk-unsigned.apk,签名后的apk是apk-signed.apk。我们也可以不指定-signedjar参数,则在待签名的apk上直接签名。最后一个myKey是我的keystore的别名。
签名完成后再用WinRAR打开,会发现META-INF目录下多了MYKEY.RSA和MYKEY.SF两个文件,他们分别是:
MANIFEST.MF中保存了所有其他文件的SHA-1并base64编码后的值。
MYKEY.SF中也有其他文件的SHA-1并base64编码的值,而且还多一个MANIFEST.MF文件的SHA-1并base64编码后的值
MYKEY.RSA包含了公钥信息和发布机构信息
后两个文件的名称和我的key别名转换为大写后一致。
关于如何生成本机的keystore就不再赘述了,在AndroidStudio和Eclipse中都有相应的工具,图形界面,so easy。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍用PHP去掉文件头的Unicode签名(BOM)方法,包括了用PHP去掉文件头的Unicode签名(BOM)方法的使用技巧和注意事项,需要的朋友参考一下 废话不多说,直接上代码 以上这篇用PHP去掉文件头的Unicode签名(BOM)方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍给Android的APK程序签名和重新签名的方法,包括了给Android的APK程序签名和重新签名的方法的使用技巧和注意事项,需要的朋友参考一下 签名工具的使用 Android源码编译出来的signapk.jar既可给apk签名,也可给rom签名的。使用格式: -w 是指对ROM签名时需使用的参数 publickey.x509[.pem] 是公钥文件 privatekey.pk8 是
本文向大家介绍Android的APK应用签名机制以及读取签名的方法,包括了Android的APK应用签名机制以及读取签名的方法的使用技巧和注意事项,需要的朋友参考一下 发布过Android应用的朋友们应该都知道,Android APK的发布是需要签名的。签名机制在Android应用和框架中有着十分重要的作用。例如,Android系统禁止更新安装签名不一致的APK;如果应用需要使用system权限,
前言 随着区块链等相关技术的创新和突破,很多有形或无形资产都将实现去中心化,数字资产将无处不在。比如我们这里分享的 亿书 就是要把数字出版物版权进行保护,实现去中心化,解决业界多年来版权保护不力的难题。 无论数字资产,还是数字出版版权,都是有明确所有权的,当前实现数字资产所属的技术手段就是本篇要介绍的签名。而多重签名是对签名的扩展使用,给数字资产转移提供了安全保障和技术手段。本篇,从基本概念入手,
我尝试多次使用itext 5.5.13.1模拟不同用户的签名对文档进行签名,PdfStamper位于AppendMode上。如果文档没有签名,则证书级别为CERTIFIED_NO_CHANGES_ALLOWED或CERTIFIED_FORM_FILLING_AND_ANNOTATIONS,否则我不会为PdfSignatureAppearnce设置此参数。第二次签名后,第一次签名无效,因为文档已更改
由比特币的签名机制可知,如果丢失了私钥,没有任何办法可以花费对应地址的资金。 这样就使得因为丢失私钥导致资金丢失的风险会很高。为了避免一个私钥的丢失导致地址的资金丢失,比特币引入了多重签名机制,可以实现分散风险的功能。 具体来说,就是假设N个人分别持有N个私钥,只要其中M个人同意签名就可以动用某个“联合地址”的资金。 多重签名地址实际上是一个Script Hash,以2-3类型的多重签名为例,它的