在逆向安卓应用时经常遇到程序将自身的包签名参与到相关校验中,因此需要将程序代码中获取到的签名导出成二进制数据来分析利用。
PackageManager pm = this.getPackageManager(); PackageInfo packageInfo = pm.getPackageInfo(this.getPackageName(),PackageManager.GET_SIGNATURES); Signature signs = packageInfo.signatures[0]; Byte[] sign = signs.toByteArray();
以上代码最终将获取的签名转换为字节流使用,那么如何在不动态调试的情况下获知该签名的实际二进制数据呢,方法如下:
1、将APK文件解压缩
2、找到Cert.rsa文件并改名为Cert.p7b
3、使用Windows自带工具打开签名文件
4、导出签名文件,即可得到与程序代码获取到的相同字节流的数据文件。