package mobi.acpm.inspeckage.hooks; import android.view.SurfaceView; import android.view.Window; import android.view.WindowManager; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XSharedPreferences; import de.robv.android.xposed.callbacks.XC_LoadPackage; import mobi.acpm.inspeckage.Module; import static de.robv.android.xposed.XposedHelpers.findAndHookMethod; /** * Created by acpm on 20/11/15. */ public class FlagSecureHook extends XC_MethodHook { public static final String TAG = "Inspeckage_FlagSecure:"; private static XSharedPreferences sPrefs; public static void loadPrefs() { sPrefs = new XSharedPreferences(Module.class.getPackage().getName(), Module.PREFS); sPrefs.makeWorldReadable(); } public static void initAllHooks(final XC_LoadPackage.LoadPackageParam loadPackageParam) { findAndHookMethod(Window.class, "setFlags", "int", "int", new XC_MethodHook() { protected void beforeHookedMethod(MethodHookParam param) throws Throwable { loadPrefs(); if (sPrefs.getBoolean("flag_secure", false)) { if ((Integer) param.args[0] == WindowManager.LayoutParams.FLAG_SECURE) { param.args[0] = 0; param.args[1] = 0; } } } }); //Build.VERSION.SDK_INT >= 17 findAndHookMethod(SurfaceView.class, "setSecure", boolean.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { loadPrefs(); if (sPrefs.getBoolean("flag_secure", false)) { param.args[0] = false; } } }); } }