360加固保签名校验破解

360加固保签名校验破解

使用360加固的时候勾选上“签名校验”后,生成的APK使用其他证书重签名后安装到手机无法打开。

image-20210325105820436

经过分析,360加固保有两处签名校验。

  1. 打开App时使用系统API(PackageManager.getPackageInfo)获取签名信息(Signature),校验签名的的hashcode。
  2. 打开App后子线程用java.util.jar.JarFile对整个APK进行校验。

破解方法:

1
2
3
4
5
6
7
findAndHookMethod(Signature.class, "hashCode", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
int hashcode = -1158753816;
param.setResult(hashcode);
}});
1
2
3
4
5
6
7
8
9
10
findAndHookMethod(JarFile.class, "getJarEntry", String.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
String entryname = (String) param.args[0];
if(entryname.equals("AndroidManifest.xml")){
param.setResult(null);
}
}
});