[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:
parent
5800eda575
commit
258ddaabe8
|
|
@ -2,8 +2,11 @@ package org.lsposed.lspd.service;
|
|||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.Log;
|
||||
|
||||
import org.lsposed.lspd.BuildConfig;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
@ -29,6 +32,10 @@ public class LogcatService implements Runnable {
|
|||
@Override
|
||||
public void run() {
|
||||
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();
|
||||
Log.i(TAG, "stopped");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -158,13 +158,14 @@ public class ParasiticManagerHooker {
|
|||
} else if (arg instanceof ProviderInfo) info = (ProviderInfo) arg;
|
||||
}
|
||||
if (ctx != null && info != null) {
|
||||
var packageName = getManagerPkgInfo(null).applicationInfo.packageName;
|
||||
if (!info.applicationInfo.packageName.equals(packageName)) return;
|
||||
if (originalContext == null) {
|
||||
var isDefaultManager = info.applicationInfo.packageName.equals(BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME);
|
||||
info.applicationInfo.packageName = isDefaultManager ? BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME + ".origin" : BuildConfig.MANAGER_INJECTED_PKG_NAME + ".origin";
|
||||
info.applicationInfo.packageName = packageName + ".origin";
|
||||
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);
|
||||
info.applicationInfo.packageName = isDefaultManager ? BuildConfig.DEFAULT_MANAGER_PACKAGE_NAME : BuildConfig.MANAGER_INJECTED_PKG_NAME;
|
||||
info.applicationInfo.packageName = packageName;
|
||||
}
|
||||
param.args[ctxIdx] = originalContext;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -19,4 +19,8 @@ public class SystemProperties {
|
|||
public static boolean getBoolean(@NonNull String key, boolean def) {
|
||||
throw new UnsupportedOperationException("Stub");
|
||||
}
|
||||
|
||||
public static int getInt(@NonNull String key, int def) {
|
||||
throw new UnsupportedOperationException("Stub");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue