首页
社区
课程
招聘
[原创]第一次写NDK程序,实现了一个获取apk包公钥的程序,还请指教!谢谢
2014-12-25 13:50 8834

[原创]第一次写NDK程序,实现了一个获取apk包公钥的程序,还请指教!谢谢

2014-12-25 13:50
8834
由于编码能力较差,目前在多加练习,于是就有了这个程序。
程序主要功能是获取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元/年,续费同价!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (5)
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JackJoker 2014-12-25 13:58
2
0
不错,赞一个。
雪    币: 1551
活跃值: (2887)
能力值: ( LV11,RANK:180 )
在线值:
发帖
回帖
粉丝
zhenwo 1 2014-12-25 19:43
3
0
洪七公 哈哈 哈哈
雪    币: 3
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bbxt 2015-1-7 19:35
4
0
小白来学习!
雪    币: 34
活跃值: (45)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
步平凡 2015-1-7 21:42
5
0
赞一个!非常感谢分享!
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
音乐不凡 2015-1-7 22:29
6
0
不错,顶一个
游客
登录 | 注册 方可回帖
返回