-
-
[原创]第一次写NDK程序,实现了一个获取apk包公钥的程序,还请指教!谢谢
-
2014-12-25 13:50
8834
-
[原创]第一次写NDK程序,实现了一个获取apk包公钥的程序,还请指教!谢谢
由于编码能力较差,目前在多加练习,于是就有了这个程序。
程序主要功能是获取apk包的public key,可以用来实现重打包检测。
以下是java版代码:
private static PublicKey[] getPublicKey(PackageInfo pi) {
PublicKey[] publicKeys = null;
try {
if (pi.signatures == null || pi.signatures.length == 0) {
return null;
}
publicKeys = new PublicKey[pi.signatures.length];
for (int i = 0; i < publicKeys.length; i++) {
byte[] signature = pi.signatures[i].toByteArray();
CertificateFactory certFactory = CertificateFactory
.getInstance("X.509");
InputStream is = new ByteArrayInputStream(signature);
X509Certificate cert = (X509Certificate) certFactory
.generateCertificate(is);
publicKeys[i] = cert.getPublicKey();
Log.d(TAG, "当前i为" + i + ">>>" + publicKeys[i].toString());
}
} catch (Exception ex) {
}
return publicKeys;
}
JNI程序的代码主要参考了非虫大大的书里的jnimethods工程,在其中学到了很多东西,感谢!
代码里面有带注释,相信结合上面的java代码不难看懂。
阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开
发者可享99元/年,续费同价!