检索现有Android应用程序的私钥

时间:2012-11-07 21:20:29

标签: android

  

可能重复:
  Lost my keystore for uploaded app on android market

我正在将新版Android应用推向Google Play商店,我希望它能够触发应用当前用户的更新,而不是将其视为新版本。我没有最初用于签署现有应用程序的私钥,所以我正在尝试以下方法来恢复它。

我能够进入第3步,但我不确定keytool -list -keystore my-signing-key.keystore命令的.keystore文件名是什么,有什么想法吗?

  1. 首先,解压缩APK并解压缩文件/META-INF/ANDROID_.RSA (此文件也可能是CERT.RSA,但应该只有一个.RSA 文件)。
  2. 然后发出此命令:

    keytool -printcert -file ANDROID_.RSA您将获得证书 像这样的指纹:

    MD5:B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB  SHA1:16:59:E7:E3:0C:AA:7A:0D:F2:0D:05:20:12:A8:85:0B:32:C5:4F:68  签名算法名称:SHA1withRSA

  3. 然后再次使用keytool打印出你的所有别名 签署密钥库:

    keytool -list -keystore my-signing-key.keystore

  4. 您将获得别名列表及其证书指纹:

    android_key, Jan 23, 2010, PrivateKeyEntry,
    Certificate fingerprint (MD5): B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB
    

    瞧!我们现在可以确定apk已经使用此密钥库签名,并使用别名'android_key'。

1 个答案:

答案 0 :(得分:6)

除非您拥有包含私钥的原始密钥库文件,否则无法从.apk中提取它。 .apk仅包含公钥和使用私钥生成的签名,但实际上并不包含私钥。

考虑一下 - 如果.apk包含实际的私钥,并且提取它的说明非常简单,那么任何人都可以从他们的应用程序中获取Google,Facebook,Microsoft或Amazon私钥,并签署任何恶意软件它。 (Apple不受这种攻击的影响,因为他们没有发布任何Android软件:-P)

所以,除非你有权访问用于签署之前.apk的原始密钥库文件(并且你知道密码 - 感谢@ 323go),否则我担心你运气不好。