公司要求研究安卓加固的东西~做一下记录
对于防止apk包被二次打包问题,我做的是签名校验
// 获取当前签名,packageName->当前apk包名
public int getSignature(String packageName) {
PackageManager pm = this.getPackageManager();
PackageInfo pi = null;
int sig = 0;
try {
pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
Signature[] s = pi.signatures;
sig = s[0].hashCode();
} catch (Exception e1) {
sig = 0;
e1.printStackTrace();
}
Log.d(TAG, "签名:=="+sig);
return sig;
}
先拿到原本apk签名,在进入程序时调用getSignature方法拿到当前运行程序签名与原本apk签名进行对比。
if(getSignature("apk包名")!='原本apk签名'){
//签名不通过时代码逻辑
Toast.makeText(this,"app被重打包!!!",Toast.LENGTH_LONG).show();
}
希望有大佬能指点更多安全加固方面的问题,万分感谢!