美文网首页
Apk去掉签名以及重新签名的方法

Apk去掉签名以及重新签名的方法

作者: wvqusrtg | 来源:发表于2018-11-01 17:05 被阅读48次

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。

参考另外一篇文章:

相关文章

  • Apk去掉签名以及重新签名的方法

    Android开发中很重要的一部就是用自己的密钥给Apk文件签名,不经过签名的Apk文件一般是无法安装的,就算装了...

  • Apk去掉签名+重新签名

    1.去除签名其实很简单,用WinRAR打开apk,找到META-INF文件夹,删除MANIFEST.MF之外的所有...

  • Android安装包验证签名(apk)

    1、去掉apk包的签名 //tips:未签名的包不能安装到手机上 (1)apk包改成zip格式,并解压zip包(...

  • APK重新签名的方法

    1. 生成签名证书在需要重新签名的apk目录下打开命令行工具(cmd):使用JDK自带的keytool工具, 运行...

  • Android反编译破解签名验证

    Android Studio无源码调试app 很多apk对签名做了验证,重新打包的apk没办法运行,不过签名验证都...

  • apk重新签名

    借鉴地址: https://www.jianshu.com/p/997018fe43a9 对apk进行反编译之后,...

  • apk重新签名

    在上传各大安卓应用市场的时候, 没有加固的apk是不允许提交的,他们会帮我们加固好apk,但是加固完之后的apk是...

  • apk重新签名

    对apk进行重新签名中遇到的问题记录如下 今天使用我周六写的工具对apk进行签名时,报了如下错误 jarsigne...

  • apk重新签名

    对apk进行反编译之后,如果想要将其修改后再次发布会遇到签名的问题。签名主要是为了保护APP不被篡改。 这里用到的...

  • Apk签名查看以及空白apk签名

    Apk签名查看 空白包签名 空白包签名SHA256withRSA问题处理

网友评论

      本文标题:Apk去掉签名以及重新签名的方法

      本文链接:https://www.haomeiwen.com/subject/skixxqtx.html