diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/HookMain.java b/app/src/main/java/com/wuxianlin/luckyhooker/HookMain.java index de61a35..19307e9 100644 --- a/app/src/main/java/com/wuxianlin/luckyhooker/HookMain.java +++ b/app/src/main/java/com/wuxianlin/luckyhooker/HookMain.java @@ -35,19 +35,12 @@ public class HookMain implements IXposedHookZygoteInit, IXposedHookLoadPackage, public HookMain() { hooks.add(new HaiXing()); hooks.add(new KSWEB()); - hooks.add(new KuWo()); - hooks.add(new MgTv()); hooks.add(new MxPlayer()); hooks.add(new PacketCapture()); hooks.add(new PerfectPlayer()); - hooks.add(new PpTv()); hooks.add(new QiYi()); - hooks.add(new QqLive()); - hooks.add(new RootExplorer()); hooks.add(new ShowJava()); hooks.add(new SuperSU()); - hooks.add(new WkCast()); - hooks.add(new YouKu()); } @Override diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/MainActivity.java b/app/src/main/java/com/wuxianlin/luckyhooker/MainActivity.java index fbf7fd2..5b0855c 100644 --- a/app/src/main/java/com/wuxianlin/luckyhooker/MainActivity.java +++ b/app/src/main/java/com/wuxianlin/luckyhooker/MainActivity.java @@ -71,23 +71,14 @@ public static class PrefsFragment extends PreferenceFragmentCompat { private static final String[] switchPackageNames = new String[]{ HaiXing.hookPackageName, KSWEB.hookPackageName, - KuWo.hookPackageNames[0], - KuWo.hookPackageNames[1], - MgTv.hookPackageName, MxPlayer.hookPackageName, PacketCapture.hookPackageName, PerfectPlayer.hookPackageName, - PpTv.hookPackageNames[0], - PpTv.hookPackageNames[1], QiYi.hookPackageNames[0], QiYi.hookPackageNames[1], QiYi.hookPackageNames[2], - QqLive.hookPackageName, - RootExplorer.hookPackageName, ShowJava.hookPackageName, SuperSU.hookPackageName, - WkCast.hookPackageName, - YouKu.hookPackageName }; @Override diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/HaiXing.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/HaiXing.java index b10030a..bda05e1 100644 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/HaiXing.java +++ b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/HaiXing.java @@ -29,9 +29,9 @@ public void startHook(final XC_LoadPackage.LoadPackageParam lpparam) throws Thro XposedHelpers.findAndHookMethod("android.app.SharedPreferencesImpl", lpparam.classLoader, "getString", String.class, String.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - File mFile = (File)XposedHelpers.getObjectField(param.thisObject,"mFile"); + File mFile = (File) XposedHelpers.getObjectField(param.thisObject, "mFile"); if (!mFile.getName().equals("app_settings.xml")) return; - String key = (String)param.args[0]; + String key = (String) param.args[0]; if (key.equals("account_type")) param.setResult("VIP1"); } diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/KSWEB.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/KSWEB.java index c37dee3..b45e5b0 100644 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/KSWEB.java +++ b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/KSWEB.java @@ -40,9 +40,9 @@ public void startHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable XposedHelpers.findAndHookMethod("android.app.SharedPreferencesImpl", lpparam.classLoader, "getString", String.class, String.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - File mFile = (File)XposedHelpers.getObjectField(param.thisObject,"mFile"); + File mFile = (File) XposedHelpers.getObjectField(param.thisObject, "mFile"); if (!mFile.getName().equals("sec.xml")) return; - String key = (String)param.args[0]; + String key = (String) param.args[0]; if (key.equals("value")) param.setResult(getEncodedString(encrypt(getUUID() + "32eh2jrk345h34jgdcn34"))); else if (key.equals("type")) @@ -117,7 +117,7 @@ private static String getUUID() { try { return md5(new UUID((long) str.hashCode(), (long) Build.class.getField("SERIAL").get(null).toString().hashCode()).toString()); } catch (Exception e) { - return md5(new UUID((long) str.hashCode(), (long) ("HJ34KD87" + Settings.Secure.getString(HookUtils.getContext().getContentResolver(),"android_id")).hashCode()).toString()); + return md5(new UUID((long) str.hashCode(), (long) ("HJ34KD87" + Settings.Secure.getString(HookUtils.getContext().getContentResolver(), "android_id")).hashCode()).toString()); } } diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/KuWo.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/KuWo.java deleted file mode 100644 index b00e594..0000000 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/KuWo.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.wuxianlin.luckyhooker.hooks; - -import android.content.Context; -import android.os.Build; - -import com.wuxianlin.luckyhooker.Hook; - -import java.util.Arrays; -import java.util.List; - -import de.robv.android.xposed.XC_MethodHook; -import de.robv.android.xposed.XC_MethodReplacement; -import de.robv.android.xposed.XposedBridge; -import de.robv.android.xposed.XposedHelpers; -import de.robv.android.xposed.callbacks.XC_InitPackageResources; -import de.robv.android.xposed.callbacks.XC_LoadPackage; - -/** - * Created by wuxianlin on 2018/1/3. - */ - -public class KuWo implements Hook { - - public static final String[] hookPackageNames = new String[] {"cn.kuwo.player", "cn.kuwo.kwmusichd"}; - - @Override - public boolean canHook(String packageName) { - return Arrays.asList(hookPackageNames).contains(packageName); - } - - @Override - public void startHook(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - XposedBridge.log("start Hook KuWo:" + lpparam.packageName); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - XposedHelpers.findAndHookMethod("android.support.multidex.MultiDexApplication", lpparam.classLoader, "attachBaseContext", Context.class, new XC_MethodHook() { - @Override - protected void afterHookedMethod(MethodHookParam param) throws Throwable { - doHook(lpparam); - } - }); - } else - doHook(lpparam); - } - - private void doHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - XposedHelpers.findAndHookMethod("cn.kuwo.mod.vipreal.VipRealInfo", lpparam.classLoader, "getState", XC_MethodReplacement.returnConstant(1)); - XposedHelpers.findAndHookMethod("cn.kuwo.mod.vipreal.VipRealInfo", lpparam.classLoader, "getLeftDays", XC_MethodReplacement.returnConstant(365L)); - XposedHelpers.findAndHookMethod("cn.kuwo.mod.vipnew.ConsumptionQueryUtil", lpparam.classLoader, "hasBought", long.class, List.class, XC_MethodReplacement.returnConstant(true)); - XposedHelpers.findAndHookMethod("cn.kuwo.mod.mobilead.KuwoAdUrl$AdUrlDef", lpparam.classLoader, "getUrl", String.class, XC_MethodReplacement.returnConstant("")); - } - - @Override - public void startHook(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable { - } - -} diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/MgTv.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/MgTv.java deleted file mode 100644 index c08a10e..0000000 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/MgTv.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.wuxianlin.luckyhooker.hooks; - -import android.content.Context; -import android.os.Build; - -import com.wuxianlin.luckyhooker.Hook; -import com.wuxianlin.luckyhooker.HookUtils; - -import java.util.List; - -import de.robv.android.xposed.XC_MethodHook; -import de.robv.android.xposed.XC_MethodReplacement; -import de.robv.android.xposed.XposedBridge; -import de.robv.android.xposed.XposedHelpers; -import de.robv.android.xposed.callbacks.XC_InitPackageResources; -import de.robv.android.xposed.callbacks.XC_LoadPackage; - -/** - * Created by wuxianlin on 2017/9/25. - */ - -public class MgTv implements Hook { - - public static final String hookPackageName = "com.hunantv.imgo.activity"; - - @Override - public boolean canHook(String packageName) { - return hookPackageName.equals(packageName); - } - - @Override - public void startHook(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - XposedHelpers.findAndHookMethod("com.mgtv.ui.ImgoApplication", lpparam.classLoader, "attachBaseContext", Context.class, new XC_MethodHook() { - @Override - protected void afterHookedMethod(MethodHookParam param) throws Throwable { - doHook(lpparam); - } - }); - } else - doHook(lpparam); - } - - private void doHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - int versionCode = HookUtils.getPackageVersionCode(hookPackageName); - XposedBridge.log("start Hook MgTV:"+versionCode); - - String mgmiConfigManager = versionCode > 556100 ? "com.mgmi.platform.a" : "com.mgmi.platform.ConfigManager"; - String getAdHost = versionCode >= 5602100 ? "i" : versionCode > 556100 ? "h" : "getAdHost"; - String mgmiOfflineAdMananger = versionCode > 556100 ? "com.mgmi.d.a" : "com.mgmi.offline.OfflineAdMananger"; - String getOfflineVast = versionCode > 556100 ? "a" : "getOfflineVast"; - String mvpVodPlayerView = versionCode > 556100 ? "com.hunantv.player.vod.mvp.VodPlayerView" : "com.mgtv.ui.play.vod.mvp.VodPlayerView"; - String showJustLook = versionCode >= 5603100 ? "br" : versionCode >= 5602100 ? "bo" : versionCode > 556100 ? "showJustLookLayout" : "showJustLookPanel"; - String showJustLookRemind = versionCode >= 5603100 ? "bt" : versionCode >= 5602100 ? "bq" : "showJustLookRemind"; - String VodPlayerModel = versionCode > 556100 ? "com.hunantv.player.vod.mvp.VodPlayerModel" : "com.mgtv.ui.play.vod.mvp.VodPlayerModel"; - String getVideoUrl = versionCode >= 5602100 ? "g" : "getVideoUrl"; - final String getVideoDomains = versionCode >= 5604100 ? "J" : versionCode >= 5602100 ? "I" : "getVideoDomains"; - - XposedHelpers.findAndHookMethod(mgmiConfigManager, lpparam.classLoader, getAdHost, XC_MethodReplacement.returnConstant("http://127.0.0.1")); - XposedHelpers.findAndHookMethod(mgmiOfflineAdMananger, lpparam.classLoader, getOfflineVast, int.class, XC_MethodReplacement.returnConstant(null)); - XposedHelpers.findAndHookMethod(VodPlayerModel, lpparam.classLoader, getVideoUrl, new XC_MethodHook() { - protected void afterHookedMethod(MethodHookParam param) throws Throwable { - String url = (String) param.getResult(); - if (url.endsWith("m3u8")) return; - try { - url = url.replace(url.substring(0, url.indexOf("//") + 2), ""); - String m3u8name = url.substring(url.indexOf("/"), url.indexOf("m3u8")+4); - String mp4name = m3u8name.substring(0, m3u8name.lastIndexOf("/")); - String fidname = mp4name.substring(mp4name.lastIndexOf("/") + 1, mp4name.indexOf("_", mp4name.lastIndexOf("/"))); - List domains = (List) XposedHelpers.callMethod(param.thisObject, getVideoDomains); - param.setResult(domains.get(0) + "/vod.do?fmt=4&pno=1021&fid=" + fidname + "&file="+m3u8name); - } catch (Exception e) { - XposedBridge.log(e.toString()); - } - } - }); - XposedHelpers.findAndHookMethod(mvpVodPlayerView, lpparam.classLoader, showJustLook, XC_MethodReplacement.returnConstant(null)); - XposedHelpers.findAndHookMethod(mvpVodPlayerView, lpparam.classLoader, showJustLookRemind, XC_MethodReplacement.returnConstant(null)); - } - - @Override - public void startHook(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable { - } - -} diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/MxPlayer.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/MxPlayer.java index a51d122..3bb777d 100644 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/MxPlayer.java +++ b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/MxPlayer.java @@ -30,15 +30,15 @@ public void startHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable XposedHelpers.findAndHookMethod("com.mxtech.app.Apps", lpparam.classLoader, Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP ? "c" : "get", int.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - int input = (int)param.args[0]; - if (input==1 || input==2) + int input = (int) param.args[0]; + if (input == 1 || input == 2) param.setResult(1L); } }); XposedHelpers.findAndHookMethod(ContextWrapper.class, "checkPermission", String.class, int.class, int.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - String perm = (String)param.args[0]; + String perm = (String) param.args[0]; if (perm.equals("com.android.vending.CHECK_LICENSE") || perm.equals("android.permission.GET_ACCOUNTS")) param.setResult(0); diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/PerfectPlayer.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/PerfectPlayer.java index b5d26c0..8f450eb 100644 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/PerfectPlayer.java +++ b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/PerfectPlayer.java @@ -1,7 +1,5 @@ package com.wuxianlin.luckyhooker.hooks; -import android.content.Context; - import com.wuxianlin.luckyhooker.Hook; import java.io.File; @@ -31,9 +29,9 @@ public void startHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable XposedHelpers.findAndHookMethod("android.app.SharedPreferencesImpl", lpparam.classLoader, "getBoolean", String.class, boolean.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - File mFile = (File)XposedHelpers.getObjectField(param.thisObject,"mFile"); + File mFile = (File) XposedHelpers.getObjectField(param.thisObject, "mFile"); if (!mFile.getName().equals(hookPackageName + "_preferences.xml")) return; - String key = (String)param.args[0]; + String key = (String) param.args[0]; if (key.equals("pref_key_unlocked_full_version")) param.setResult(true); } diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/PpTv.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/PpTv.java deleted file mode 100644 index a9f7d10..0000000 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/PpTv.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.wuxianlin.luckyhooker.hooks; - -import android.content.Context; - -import com.wuxianlin.luckyhooker.Hook; - -import java.util.Arrays; - -import de.robv.android.xposed.XC_MethodHook; -import de.robv.android.xposed.XC_MethodReplacement; -import de.robv.android.xposed.XposedBridge; -import de.robv.android.xposed.XposedHelpers; -import de.robv.android.xposed.callbacks.XC_InitPackageResources; -import de.robv.android.xposed.callbacks.XC_LoadPackage; - -/** - * Created by wuxianlin on 2017/9/25. - */ - -public class PpTv implements Hook { - - public static final String[] hookPackageNames = new String[] {"com.pplive.androidphone", "com.pplive.androidpad"}; - - @Override - public boolean canHook(String packageName) { - return Arrays.asList(hookPackageNames).contains(packageName); - } - - @Override - public void startHook(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - XposedBridge.log("start Hook PpTv:" + lpparam.packageName); - XposedHelpers.findAndHookMethod("com.pplive.streamingsdk.PPStreamingSDK", lpparam.classLoader, "setConfig", String.class, new XC_MethodHook() { - @Override - protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - String config = (String) param.args[0]; - config = config.replace("platform=android3","platform=atv") - .replace("platform=apad","platform=atv") - .replace("appplt=aph","appplt=atv") - .replace("appplt=apd","appplt=atv"); - param.args[0] = config; - } - }); - XposedHelpers.findAndHookMethod("com.pplive.android.data.account.AccountPreferences", lpparam.classLoader, "isVip", Context.class, XC_MethodReplacement.returnConstant(true)); - XposedHelpers.findAndHookMethod("com.pplive.android.data.account.AccountPreferences", lpparam.classLoader, "getVipValidDate", Context.class, XC_MethodReplacement.returnConstant("2099-12-31 23:59:59")); - XposedHelpers.findAndHookMethod("com.pplive.android.data.account.AccountPreferences", lpparam.classLoader, "isSVip", Context.class, XC_MethodReplacement.returnConstant(true)); - XposedHelpers.findAndHookMethod("com.pplive.android.data.account.AccountPreferences", lpparam.classLoader, "getSVipValidDate", Context.class, XC_MethodReplacement.returnConstant("2099-12-31 23:59:59")); - XposedHelpers.findAndHookMethod("com.pplive.android.data.account.AccountPreferences", lpparam.classLoader, "getUsername", Context.class, XC_MethodReplacement.returnConstant("Android-Hacker")); - XposedHelpers.findAndHookMethod("com.pplive.android.data.account.AccountPreferences", lpparam.classLoader, "getLogin", Context.class, XC_MethodReplacement.returnConstant(true)); - } - - @Override - public void startHook(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable { - } - -} diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/QiYi.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/QiYi.java index 2f23555..c4acc1b 100644 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/QiYi.java +++ b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/QiYi.java @@ -16,7 +16,7 @@ public class QiYi implements Hook { - public static final String[] hookPackageNames = new String[] {"com.qiyi.video", "com.qiyi.video.pad", "tv.pps.mobile"}; + public static final String[] hookPackageNames = new String[]{"com.qiyi.video", "com.qiyi.video.pad", "tv.pps.mobile"}; @Override public boolean canHook(String packageName) { @@ -33,18 +33,6 @@ protected void beforeHookedMethod(MethodHookParam param) throws Throwable { param.setResult("59e36a5e70e4c4efc6fcbc4db7ea59c1"); //param.setResult("20485102b09bfb5842bf370463bed900"); //param.setResult("200852026c791ac910651df45b27da50"); - } else if ("phone.baidu.channel".equals(param.args[0])) { - param.setResult("google"); - //param.setResult("Play商店"); - //param.setResult("PPS_google"); - } else if ("guide_on".equals(param.args[0])) { - param.setResult("false"); - } else if ("qiyi.export.channel.ad.switch".equals(param.args[0])) { - param.setResult("false"); - } else if ("qiyi.export.channel.ad.ppsgame.switch".equals(param.args[0])) { - param.setResult("false"); - } else if ("qiyi.push.msg.value".equals(param.args[0])) { - param.setResult("1"); } } }); diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/QqLive.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/QqLive.java deleted file mode 100644 index bbf284b..0000000 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/QqLive.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.wuxianlin.luckyhooker.hooks; - -import android.content.Context; -import android.os.Build; - -import com.wuxianlin.luckyhooker.Hook; -import com.wuxianlin.luckyhooker.HookUtils; - -import de.robv.android.xposed.XC_MethodHook; -import de.robv.android.xposed.XposedBridge; -import de.robv.android.xposed.XposedHelpers; -import de.robv.android.xposed.callbacks.XC_InitPackageResources; -import de.robv.android.xposed.callbacks.XC_LoadPackage; - -/** - * Created by wuxianlin on 2017/9/25. - */ - -public class QqLive implements Hook { - - public static final String hookPackageName = "com.tencent.qqlive"; - - @Override - public boolean canHook(String packageName) { - return hookPackageName.equals(packageName); - } - - @Override - public void startHook(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - int versionCode = HookUtils.getPackageVersionCode(hookPackageName); - XposedBridge.log("start Hook QqLive:" + versionCode); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP && versionCode > 12708) { - XposedHelpers.findAndHookMethod("com.tencent.qqlive.ona.base.QQLiveApplication", lpparam.classLoader, "attachBaseContext", Context.class, new XC_MethodHook() { - @Override - protected void afterHookedMethod(MethodHookParam param) throws Throwable { - doHook(lpparam); - } - }); - } else - doHook(lpparam); - } - - private void doHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - XposedHelpers.findAndHookConstructor("com.tencent.qqlive.mediaplayer.config.MediaPlayerConfig$AdConfig", lpparam.classLoader, new XC_MethodHook() { - @Override - protected void afterHookedMethod(MethodHookParam param) throws Throwable { - XposedHelpers.setBooleanField(param.thisObject, "use_ad", false); - XposedHelpers.setBooleanField(param.thisObject, "pre_ad_on", false); - XposedHelpers.setBooleanField(param.thisObject, "offline_video_use_ad", false); - XposedHelpers.setBooleanField(param.thisObject, "pause_use_ad", false); - XposedHelpers.setBooleanField(param.thisObject, "ivb_use_ad", false); - XposedHelpers.setBooleanField(param.thisObject, "super_ivb_use_ad", false); - XposedHelpers.setBooleanField(param.thisObject, "loop_ad_on", false); - XposedHelpers.setBooleanField(param.thisObject, "postroll_use_ad", false); - XposedHelpers.setBooleanField(param.thisObject, "mid_ad_on", false); - } - }); - } - - @Override - public void startHook(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable { - } - -} diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/RootExplorer.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/RootExplorer.java deleted file mode 100644 index da52946..0000000 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/RootExplorer.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.wuxianlin.luckyhooker.hooks; - -import com.wuxianlin.luckyhooker.Hook; - -import de.robv.android.xposed.XC_MethodReplacement; -import de.robv.android.xposed.XposedBridge; -import de.robv.android.xposed.XposedHelpers; -import de.robv.android.xposed.callbacks.XC_InitPackageResources; -import de.robv.android.xposed.callbacks.XC_LoadPackage; - -/** - * Created by wuxianlin on 2016/2/26. - */ - -public class RootExplorer implements Hook { - - public static final String hookPackageName = "com.speedsoftware.rootexplorer"; - - @Override - public boolean canHook(String packageName) { - return hookPackageName.equals(packageName); - } - - @Override - public void startHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - XposedBridge.log("start Hook RootExplorer"); - XposedHelpers.findAndHookMethod("com.google.android.vending.licensing.LongTermCachePolicy", lpparam.classLoader, "allowAccess", XC_MethodReplacement.returnConstant(true)); - } - - @Override - public void startHook(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable { - } - -} diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/ShowJava.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/ShowJava.java index 504b06f..1853042 100644 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/ShowJava.java +++ b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/ShowJava.java @@ -1,6 +1,7 @@ package com.wuxianlin.luckyhooker.hooks; import com.wuxianlin.luckyhooker.Hook; +import com.wuxianlin.luckyhooker.HookUtils; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XC_MethodReplacement; @@ -25,13 +26,27 @@ public boolean canHook(String packageName) { @Override public void startHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { XposedBridge.log("start Hook ShowJava"); - XposedHelpers.findAndHookMethod("com.njlabs.showjava.ui.BaseActivity", lpparam.classLoader, "get", XC_MethodReplacement.returnConstant(true)); - XposedHelpers.findAndHookMethod("com.njlabs.showjava.ui.BaseActivity", lpparam.classLoader, "put", boolean.class, new XC_MethodHook() { - @Override - protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - param.args[0]=true; - } - }); + int versionCode = HookUtils.getPackageVersionCode(hookPackageName); + if (versionCode <= 21002) { + XposedHelpers.findAndHookMethod("com.njlabs.showjava.ui.BaseActivity", lpparam.classLoader, "get", XC_MethodReplacement.returnConstant(true)); + XposedHelpers.findAndHookMethod("com.njlabs.showjava.ui.BaseActivity", lpparam.classLoader, "put", boolean.class, new XC_MethodHook() { + @Override + protected void beforeHookedMethod(MethodHookParam param) throws Throwable { + param.args[0] = true; + } + }); + } else { + //30406//30502//30604--com.njlabs.showjava.activities.a.u()Z->com.njlabs.showjava.utils.d.b.d()Z + //30300//30200//30107--com.njlabs.showjava.activities.a.s()Z->com.njlabs.showjava.utils.c.b.d()Z + /*XposedHelpers.findAndHookMethod("com.njlabs.showjava.activities.a", + lpparam.classLoader, versionCode>30502?"u":"s", + XC_MethodReplacement.returnConstant(true));*/ + XposedHelpers.findAndHookMethod(versionCode >= 30406 ? + "com.njlabs.showjava.utils.d.b" : + "com.njlabs.showjava.utils.c.b", + lpparam.classLoader, "d", XC_MethodReplacement.returnConstant(true)); + + } } @Override diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/SuperSU.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/SuperSU.java index 32bea86..49c91f1 100644 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/SuperSU.java +++ b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/SuperSU.java @@ -27,8 +27,8 @@ public void startHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable XposedHelpers.findAndHookMethod("android.app.ApplicationPackageManager", lpparam.classLoader, "getApplicationInfo", String.class, int.class, new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - if(param.args[0].equals("eu.chainfire.supersu.pro")) - param.args[0]="eu.chainfire.supersu"; + if (param.args[0].equals("eu.chainfire.supersu.pro")) + param.args[0] = "eu.chainfire.supersu"; } }); } diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/WkCast.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/WkCast.java deleted file mode 100644 index 56ff11e..0000000 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/WkCast.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.wuxianlin.luckyhooker.hooks; - -import com.wuxianlin.luckyhooker.Hook; - -import java.io.File; - -import de.robv.android.xposed.XC_MethodHook; -import de.robv.android.xposed.XposedBridge; -import de.robv.android.xposed.XposedHelpers; -import de.robv.android.xposed.callbacks.XC_InitPackageResources; -import de.robv.android.xposed.callbacks.XC_LoadPackage; - -/** - * Created by wuxianlin on 2017/12/31. - */ - -public class WkCast implements Hook { - - public static final String hookPackageName = "com.wukongtv.wkcast"; - - @Override - public boolean canHook(String packageName) { - return hookPackageName.equals(packageName); - } - - @Override - public void startHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - XposedBridge.log("start Hook WuKong Cast"); - XposedHelpers.findAndHookMethod("android.app.SharedPreferencesImpl", lpparam.classLoader, "getInt", String.class, int.class, new XC_MethodHook() { - @Override - protected void beforeHookedMethod(MethodHookParam param) throws Throwable { - File mFile = (File)XposedHelpers.getObjectField(param.thisObject,"mFile"); - if (!mFile.getName().equals("preference.xml")) return; - String key = (String)param.args[0]; - if (key.equals("TIPPED_AMOUNT")) - param.setResult(1); - } - }); - } - - @Override - public void startHook(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable { - } - -} diff --git a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/YouKu.java b/app/src/main/java/com/wuxianlin/luckyhooker/hooks/YouKu.java deleted file mode 100644 index 35cbea8..0000000 --- a/app/src/main/java/com/wuxianlin/luckyhooker/hooks/YouKu.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.wuxianlin.luckyhooker.hooks; - -import android.content.Context; -import android.os.Build; - -import com.wuxianlin.luckyhooker.Hook; - -import de.robv.android.xposed.XC_MethodHook; -import de.robv.android.xposed.XC_MethodReplacement; -import de.robv.android.xposed.XposedBridge; -import de.robv.android.xposed.XposedHelpers; -import de.robv.android.xposed.callbacks.XC_InitPackageResources; -import de.robv.android.xposed.callbacks.XC_LoadPackage; - -/** - * Created by wuxianlin on 2017/9/25. - */ - -public class YouKu implements Hook { - - public static final String hookPackageName = "com.youku.phone"; - - @Override - public boolean canHook(String packageName) { - return hookPackageName.equals(packageName); - } - - @Override - public void startHook(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - XposedBridge.log("start Hook Youku"); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { - XposedHelpers.findAndHookMethod("android.taobao.atlas.startup.AtlasBridgeApplication", lpparam.classLoader, "attachBaseContext", Context.class, new XC_MethodHook() { - @Override - protected void afterHookedMethod(MethodHookParam param) throws Throwable { - doHook(lpparam); - } - }); - } else - doHook(lpparam); - } - - private void doHook(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable { - XposedHelpers.findAndHookMethod("com.youku.upsplayer.module.VideoInfo", lpparam.classLoader, "getAd", XC_MethodReplacement.returnConstant(null)); - } - - @Override - public void startHook(XC_InitPackageResources.InitPackageResourcesParam resparam) throws Throwable { - } - -}