[core] Skip non-manager packages (#1273)

Co-authored-by: LoveSy <shana@zju.edu.cn>
Co-authored-by: Wang Han <wanghan1995315@gmail.com>
This commit is contained in:
Howard Wu 2021-10-14 23:10:34 +08:00 committed by GitHub
parent 5800eda575
commit 258ddaabe8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 4 deletions

View File

@ -2,8 +2,11 @@ package org.lsposed.lspd.service;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import android.os.SystemProperties;
import android.util.Log; import android.util.Log;
import org.lsposed.lspd.BuildConfig;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -29,6 +32,10 @@ public class LogcatService implements Runnable {
@Override @Override
public void run() { public void run() {
Log.i(TAG, "start running"); Log.i(TAG, "start running");
// Meizu devices set this prop and prevent debug logs from being recorded
if (BuildConfig.DEBUG && SystemProperties.getInt("persist.sys.log_reject_level", 0) > 0) {
SystemProperties.set("persist.sys.log_reject_level", "0");
}
runLogcat(); runLogcat();
Log.i(TAG, "stopped"); Log.i(TAG, "stopped");
} }

View File

@ -158,13 +158,14 @@ public class ParasiticManagerHooker {
} else if (arg instanceof ProviderInfo) info = (ProviderInfo) arg; } else if (arg instanceof ProviderInfo) info = (ProviderInfo) arg;
} }
if (ctx != null && info != null) { if (ctx != null && info != null) {
var packageName = getManagerPkgInfo(null).applicationInfo.packageName;
if (!info.applicationInfo.packageName.equals(packageName)) return;
if (originalContext == null) { if (originalContext == null) {
var isDefaultManager = info.applicationInfo.packageName.equals(BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME); info.applicationInfo.packageName = packageName + ".origin";
info.applicationInfo.packageName = isDefaultManager ? BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME + ".origin" : BuildConfig.MANAGER_INJECTED_PKG_NAME + ".origin";
var originalPkgInfo = ActivityThread.currentActivityThread().getPackageInfoNoCheck(info.applicationInfo, HiddenApiBridge.Resources_getCompatibilityInfo(ctx.getResources())); var originalPkgInfo = ActivityThread.currentActivityThread().getPackageInfoNoCheck(info.applicationInfo, HiddenApiBridge.Resources_getCompatibilityInfo(ctx.getResources()));
XposedHelpers.setObjectField(originalPkgInfo, "mPackageName", isDefaultManager ? BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME : BuildConfig.MANAGER_INJECTED_PKG_NAME); XposedHelpers.setObjectField(originalPkgInfo, "mPackageName", packageName);
originalContext = (Context) XposedHelpers.callStaticMethod(XposedHelpers.findClass("android.app.ContextImpl", null), "createAppContext", ActivityThread.currentActivityThread(), originalPkgInfo); originalContext = (Context) XposedHelpers.callStaticMethod(XposedHelpers.findClass("android.app.ContextImpl", null), "createAppContext", ActivityThread.currentActivityThread(), originalPkgInfo);
info.applicationInfo.packageName = isDefaultManager ? BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME : BuildConfig.MANAGER_INJECTED_PKG_NAME; info.applicationInfo.packageName = packageName;
} }
param.args[ctxIdx] = originalContext; param.args[ctxIdx] = originalContext;
} else { } else {

View File

@ -19,4 +19,8 @@ public class SystemProperties {
public static boolean getBoolean(@NonNull String key, boolean def) { public static boolean getBoolean(@NonNull String key, boolean def) {
throw new UnsupportedOperationException("Stub"); throw new UnsupportedOperationException("Stub");
} }
public static int getInt(@NonNull String key, int def) {
throw new UnsupportedOperationException("Stub");
}
} }