Android攻防笔记之APP签名

本文详细介绍了Android应用的签名机制,包括签名证书的提取、APP签名的作用和工作原理。通过实例解析了如何检查APP证书,如查看公钥证书的内容、序列号和指纹。此外,还阐述了手动对Android APP进行签名的步骤,以及如何验证APP签名的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、签名证书的提取
     APP签名是将开发者ID与其所开发的APP以hash函数关联实现的,它保证了app的唯一性,不会被其他APP冒充。在Android中,所有APP安装之前必须被签名。它的工作原理是,利用hash函数对APP中内容(资源、文件等)进行签名,如下图所示。在apk文件内容被签名之后,hash函数会和开发者的证书绑定一起发布出来,而证书是由开发者的私钥加密的(不是可信第三方)。



     接下来,我们开始检查APP证书了。首先,解压apk文件。解压之后打开META-INF文件夹。我们这里以百度手机助手为例,如下图所示。BDMOBILE.RSA是公钥证书的自签名文件,BDMOBILE.SF是关于APP内容签名的文件,MANIFEST.MF主要是声明了资源,与BDMOBILE.SF相似。
打开BDMOBILE.RSA文件,在dos中输入keytool -printcert -file (BDMOBILE.RSA具体路径),如下图所示:



     上图就是公钥证书的内容,声明了所有者,发布者,序列号,有效期,证书指纹和签名算法。
CERT.RSA是一个X.509 v3证书,包括所有者,发布者,序列号,有效期,证书指纹五部分。
所有者是用来声明公钥所有者,也就是开发者。包含了开发者单位,组织,国家等信息。
发布者是用来声明证书颁发者的,把所有者和证书关联起来,通俗一点就是,就是为密钥所有者提供担保证明。
序列号是证书号,用来唯一标识证书的。
证书指纹是用来检验证书是否被篡改过。

     使用记事本打开BDMOBILE.SF文件



     MANIFEST.MF中内容和BDMOBILE.SF差不多,这里就不一一重复了。

     权威的数字签名是利用可信第三方的私钥对证书加密的,而在Android APP中,证书是由自己的私钥签名的。这样Android管理器无法验证证书中的所有者,颁发者等信息是否正确。

二、对Android APP签名

     在我们开发Android APP时,IDE会自动给Android进行签名。然而,为了进一步了解签名过程我们需要掌握“手工签名”。
     首先,我们需要在本地建立一个密钥库存放签名用的公私密钥对及相关信息。在dos中输入以下命令即可。

  

 可以通过keystore -genkey -help命令查看详细命令

     

查看已有的密钥库命令: keytool -list -v -keystore (具体路径)

现在使用新的密钥存储器对百度手机助手进行签名
命令为:jarsigner -verbose -sigalg sha1 -keystore 密钥存储器的路径 apk文件的路径 密钥别名


三、验证APP签名

验证命令:jarsigner -vertify -verbose apk文件路径
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值