gpt4 book ai didi

android - 从应用程序内部获取私钥

转载 作者:行者123 更新时间:2023-11-30 03:14:23 25 4
gpt4 key购买 nike

有什么方法可以获取当前 APK 签名所用的私钥?

该操作是完全安全的,因为对应用程序的任何修改(注入(inject))都需要新的签名和新的 key 对。因此,如果正在运行的代码可以访问私钥(开发人员知道这一点),那么它只能由原始代码而不是恶意代码访问。

X509Certificate 允许访问 PublicKey,但我需要访问 PrivateKey。

public static X509Certificate GetCertificate(Context context) {

PackageManager pm = context.getPackageManager();
String packageName = context.getPackageName();
PackageInfo packageInfo = null;
try {
packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}

Signature[] signatures = packageInfo.signatures;

byte[] cert = signatures[0].toByteArray();

InputStream input = new ByteArrayInputStream(cert);


CertificateFactory cf = null;
try {
cf = CertificateFactory.getInstance("X509");
} catch(CertificateException e) {
e.printStackTrace();
}
X509Certificate c = null;

try {
c = (X509Certificate) cf.generateCertificate(input);
} catch(CertificateException e) {

}

return c;
}

编辑:附带问题可以是:

有什么方法可以确保当前运行的代码在带有原始证书的 APK 中运行?(每个人都可以访问公钥,所以它不是一个很好的检查对象,但私钥只有原始开发人员知道,可以保护它(以某种方式)并检查包认证。)

最佳答案

私钥仅用于签署 APK,永远不会(理论上)离开签署地点。因此无法从 APK 中恢复它。

更新:不,代码本身无法检查其自身图像的有效性。如果图像已被更改,也可以轻松删除支票。

关于android - 从应用程序内部获取私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20396172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com