文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 05:38

关注

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。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

您可能感兴趣的文章:Android签名机制介绍:生成keystore、签名、查看签名信息等方法给Android的APK程序签名和重新签名的方法android应用签名详细步骤Android获取apk程序签名信息代码示例Android APK使用Debug签名重新打包 Eclipse更改默认Debug签名iOS 基于AFNetworking下自签名证书配置的方法iOS中的ipa重签名(逆向必备)iOS之Https自签名证书认证及数据请求的封装原理IOS 签名错误codesign failed with exit code 1解决方法Android和iOS包批量重签名


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯