- UID
- 75645
注册时间2014-5-13
阅读权限20
最后登录1970-1-1
以武会友
 
该用户从未签到
|
在破解apk 的时候经常会碰到一些 签名检测的程序. 如果我们可以使用 原始的签名 而又能随意修改文件, 这个就能很好的突破检测,这里我是通过修改系统 /system/framework 目录的模块patch 签名检测点
1.Patch Apk签名校验
源码文件路径
/Android/libcore/luni/src/main/java/java/util/jar/JarVerifier.java
//// verify 函数 此函数在 core.dex 模块中
void verify() {
byte[] d = digest.digest();
///让if 条件永远为 假
if (!MessageDigest.isEqual(d, Base64.decode(hash))) {
throw invalidDigest(JarFile.MANIFEST_NAME, name, jarName);
}
verifiedEntries.put(name, certificates);
}
2. Patch 覆盖安装
//文件路径 被编译到
/android/cm/frameworks/base/services/java/com/android/server/pm/PackageManagerService.java
//函数 在 services.dex 模块中
1.replacePackageLI
2.verifySignaturesLP
///Patch 点 可将 if中的 条件让其永远不成立
////// replacePackageLI
synchronized(mPackages) {
oldPackage = mPackages.get(pkgName);
///让if 条件永远为 假
if (compareSignatures(oldPackage.mSignatures, pkg.mSignatures)
!= PackageManager.SIGNATURE_MATCH) {
res.returnCode = PackageManager.INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES;
return;
}
}
///////////verifySignaturesLP 函数直接返回 true
测试环境
手机: NX403A
系统: 4.2.2
内核版本: 3.4.0
版本号: NX403A_CNCommon_v0.09
|
评分
-
查看全部评分
|