|
修改android framework关掉app签名检查- 修改android framework关掉app签名检查
- https://android.googlesource.com/platform/frameworks/base/+/ccbf84f/services/java/com/android/server/pm/PackageManagerService.java
- 检查两个包的签名
- public int checkSignatures(String pkg1, String pkg2) {
- synchronized (mPackages) {
- final PackageParser.Package p1 = mPackages.get(pkg1);
- final PackageParser.Package p2 = mPackages.get(pkg2);
- if (p1 == null || p1.mExtras == null
- || p2 == null || p2.mExtras == null) {
- return PackageManager.SIGNATURE_UNKNOWN_PACKAGE;
- }
- return compareSignatures(p1.mSignatures, p2.mSignatures);
- }
- }
- 如果是我们想豁免的包, 就不检查
-
- public int checkUidSignatures(int uid1, int uid2) {
- // Map to base uids.
- uid1 = UserHandle.getAppId(uid1);
- uid2 = UserHandle.getAppId(uid2);
- ....
- return compareSignatures(s1, s2);
- }
- }
- 检查签名
- static int compareSignatures(Signature[] s1, Signature[] s2) {
- if (s1 == null) {
- return s2 == null
- ? PackageManager.SIGNATURE_NEITHER_SIGNED
- : PackageManager.SIGNATURE_FIRST_NOT_SIGNED;
- }
- if (s2 == null) {
- return PackageManager.SIGNATURE_SECOND_NOT_SIGNED;
- }
- HashSet set1 = new HashSet();
- for (Signature sig : s1) {
- set1.add(sig);
- }
- HashSet set2 = new HashSet();
- for (Signature sig : s2) {
- set2.add(sig);
- }
- // Make sure s2 contains all signatures in s1.
- if (set1.equals(set2)) {
- return PackageManager.SIGNATURE_MATCH;
- }
- return PackageManager.SIGNATURE_NO_MATCH;
- }
- 如果需要用Frida进行Hook , 请参考
复制代码
|
|