zoukankan      html  css  js  c++  java
  • Android 签名比较

    一. keytool -list -printcert -jarfile "%filename%"

    二. 非常low方法:下载的应用安装能成功覆盖原应用则签名一致
    三.  

    作者:陈子腾
    链接:https://www.zhihu.com/question/20749413/answer/16715284
    来源:知乎
    著作权归作者所有,转载请联系作者获得授权。

    1. 查找apk里的rsa文件

    (Windows)
    > jar tf HelloWorld.apk |findstr RSA

    (Linux)
    $ jar tf HelloWorld.apk |grep RSA


    META-INF/CERT.RSA

    2. 从apk中解压rsa文件

    jar xf HelloWorld.apk META-INF/CERT.RSA

    3. 获取签名的fingerprints

    keytool -printcert -file META-INF/CERT.RSA

    ...
    Certificate fingerprints:
    MD5: BC:6D:BD:6E:49:69:2A:57:A8:B8:28:89:04:3B:93:A8
    SHA1: 0D:DF:76:F4:85:96:DF:17:C2:68:1D:3D:FF:9B:0F:D2:A1:CF:14:60
    Signature algorithm name: SHA1withRSA
    Version: 3
    ...

    4. 清理工作,删除rsa文件

    (Windows)
    rmdir /S /Q META-INF

    (Linux)
    rm -rf META-INF


    如果你想知道两个apk是不是用的同一个签名,那比一下它们签名的MD5码(或SHA1码)是不是一样就行了。
    pasting

    四.

    作者:王仲禹
    链接:https://www.zhihu.com/question/20749413/answer/17436681
    来源:知乎
    著作权归作者所有,转载请联系作者获得授权。

    毕设做的是Android应用重打包检测,首先就需要批量检测Android应用之间签名是否一致。所以在这里介绍一下在终端中如何写脚本或者直接输入命令批量检测应用签名是否一致。

    Android应用的发布形式apk中包含的签名加密方法除了RSA还有DSA,所以不能只从apk中提取常见的META-INF/CERT.RSA,第一步应该是检查apk中具体的签名文件是什么。
    FILE="yourapp.apk"
    cert_XSA=`jar tf $FILE | grep SA`
    
    此时得到的cert_XSA可能是META-INF/*.RSA或者META-INF/*.DSA。

    接下来从apk中提取具体的签名文件。
    jar xf $FILE $cert_XSA
    
    此时会在当前目录得到cert_XSA文件。

    然后对于得到的签名文件,提取其中签名的MD5值
    keytool -printcert -file $cert_XSA | grep MD5 > "$FILE.certMD5"
    
    这时候yourapp.certMD5这个文件中就保存了yourapp.apkk中的签名MD5值。

    最后比较两个app的签名可以用diff
    FILE1="yourapp1.apk"
    FILE2="yourapp2.apk"
    # ...
    # ... 经过上述步骤得到$FILE1.certMD5和$FILE2.certMD5
    # ...
    certMD5_diff=`diff $FILE1.certMD5 $FILE2.certMD5`
    if [ "$certMD5_diff" = "" ]; then
    	echo "$FILE1.certMD5 == $FILE2.certMD5"
    fi
    
    若输出yourapp1.apk.certMD5 == yourapp2.apk.certMD5那么这两个应用的签名就一致。
    pasting
  • 相关阅读:
    国内顺利使用Google的另类技巧
    Java进程间通信
    Java 多线程(七) 线程间的通信——wait及notify方法
    转:关于copy_to_user()和copy_from_user()的一些用法
    转: pthread_detach()函数
    转:pthread_create()
    转: ubuntu配置NFS,挂载开发板
    转:全志A20 GPIO 总结文档
    转:Linux 内核中的 cdev_alloc和cdev_add
    转:1.1 cdev_init cdev_alloc 使用说明
  • 原文地址:https://www.cnblogs.com/wxmdevelop/p/6135287.html
Copyright © 2011-2022 走看看