返回列表 发新帖

[求助问答] ksweb

[复制链接]

19

主题

1018

回帖

3448

积分

大学生

王鹏

Rank: 5Rank: 5

金币
1053
好评
1
信誉
100

MT论坛最佳新人考神MT论坛帅哥MT论坛新人

QQ
发表在  2026-4-25 17:38:29 来自手机  | 显示全部楼层 | 阅读模式  来自 陕西
我打算在我的hook软件里面加上ksweb的hook代码在论坛里面找的ksweb修改教程然后我让ai写了一个代码(没学过java代码)就是没法用请教一下各位大佬咋搞
代码:
  1.     // ==================== KSWEB ====================
  2.     /**
  3.      * Hook目标:KSWEB
  4.      * 功能:解锁专业版(基于MT教程:l8.l类全方法改true/1)
  5.      *
  6.      * 核心字段:
  7.      * - a:I = 2 (1=Standard, 2=Pro)
  8.      * - d:Z = true (license验证通过标志)
  9.      *
  10.      * 涉及方法:
  11.      * - j(SharedPreferences)Z: license校验,直接true
  12.      * - t()V: 初始化校验流程,阻止执行
  13.      * - u(SharedPreferences)Z: type解密,直接true并设a=2
  14.      * - v()V: 调用w(a,false),阻止执行
  15.      * - m()I: 返回a,强制返回2
  16.      * - o()Z: 试用期检查,直接true
  17.      * - p()Z: 功能可用性,直接true
  18.      * - q()Z: Pro版检查,直接true
  19.      * - r()Z: 授权标志,直接true
  20.      * - s()Z: Standard版检查,直接true
  21.      */
  22.     public static void ksweb(final XC_LoadPackage.LoadPackageParam lpparam) {
  23.         final String TAG_KSWEB = "[KSWEB]";
  24.         
  25.         XposedBridge.log(TAG_KSWEB + " 开始Hook KSWEB");
  26.         
  27.         if (!lpparam.packageName.equals("ru.kslabs.ksweb")) {
  28.             XposedBridge.log(TAG_KSWEB + " 包名不匹配,跳过Hook");
  29.             return;
  30.         }
  31.         
  32.         XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
  33.             @Override
  34.             protected void afterHookedMethod(MethodHookParam param) throws Throwable {
  35.                 try {
  36.                     Context context = (Context) param.args[0];
  37.                     ClassLoader appClassLoader = context.getClassLoader();
  38.                     
  39.                     XposedBridge.log(TAG_KSWEB + " 成功获取应用ClassLoader,开始Hook l8.l");
  40.                     
  41.                     final Class<?> l8lClass = XposedHelpers.findClass("l8.l", appClassLoader);
  42.                     
  43.                     // ===== 1. j(SharedPreferences)Z -> true =====
  44.                     // 原方法:解密校验license字符串,设置d字段
  45.                     // 修改:直接返回true,并设置d=true
  46.                     XposedHelpers.findAndHookMethod(l8lClass, "j",
  47.                         android.content.SharedPreferences.class,
  48.                         new XC_MethodReplacement() {
  49.                             @Override
  50.                             protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
  51.                                 try {
  52.                                     XposedHelpers.setBooleanField(param.thisObject, "d", true);
  53.                                 } catch (Exception e) {
  54.                                     XposedBridge.log(TAG_KSWEB + " j()设置d字段失败: " + e.getMessage());
  55.                                 }
  56.                                 XposedBridge.log(TAG_KSWEB + " j() Hook成功,返回true");
  57.                                 return true;
  58.                             }
  59.                         });
  60.                     
  61.                     // ===== 2. t()V -> 空实现 =====
  62.                     // 原方法:调用j()和u()进行校验,失败则重置
  63.                     // 修改:阻止原逻辑执行(避免触发重置或失败流程)
  64.                     XposedHelpers.findAndHookMethod(l8lClass, "t", new XC_MethodReplacement() {
  65.                         @Override
  66.                         protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
  67.                             // 空实现,阻止原校验流程
  68.                             XposedBridge.log(TAG_KSWEB + " t() Hook成功,阻止原校验流程");
  69.                             return null;
  70.                         }
  71.                     });
  72.                     
  73.                     // ===== 3. u(SharedPreferences)Z -> true =====
  74.                     // 原方法:解密type字段,设置a字段
  75.                     // 修改:直接返回true,并设置a=2(Pro版)
  76.                     XposedHelpers.findAndHookMethod(l8lClass, "u",
  77.                         android.content.SharedPreferences.class,
  78.                         new XC_MethodReplacement() {
  79.                             @Override
  80.                             protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
  81.                                 try {
  82.                                     XposedHelpers.setIntField(param.thisObject, "a", 2);
  83.                                 } catch (Exception e) {
  84.                                     XposedBridge.log(TAG_KSWEB + " u()设置a字段失败: " + e.getMessage());
  85.                                 }
  86.                                 XposedBridge.log(TAG_KSWEB + " u() Hook成功,返回true");
  87.                                 return true;
  88.                             }
  89.                         });
  90.                     
  91.                     // ===== 4. v()V -> 空实现 =====
  92.                     // 原方法:调用w(a, false)写入配置
  93.                     // 修改:阻止执行,避免覆盖我们的修改
  94.                     XposedHelpers.findAndHookMethod(l8lClass, "v", new XC_MethodReplacement() {
  95.                         @Override
  96.                         protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
  97.                             XposedBridge.log(TAG_KSWEB + " v() Hook成功,阻止原写入流程");
  98.                             return null;
  99.                         }
  100.                     });
  101.                     
  102.                     // ===== 5. m()I -> 2 =====
  103.                     // 原方法:返回a字段(1=Standard, 2=Pro)
  104.                     // 修改:强制返回2(Pro版)
  105.                     XposedHelpers.findAndHookMethod(l8lClass, "m",
  106.                         XC_MethodReplacement.returnConstant(2));
  107.                     
  108.                     // ===== 6. o()Z -> true =====
  109.                     // 原方法:检查q()或试用期状态
  110.                     // 修改:直接true(跳过试用期检查)
  111.                     XposedHelpers.findAndHookMethod(l8lClass, "o",
  112.                         XC_MethodReplacement.returnConstant(true));
  113.                     
  114.                     // ===== 7. p()Z -> true =====
  115.                     // 原方法:检查s()或q()判断是否可用
  116.                     // 修改:直接true
  117.                     XposedHelpers.findAndHookMethod(l8lClass, "p",
  118.                         XC_MethodReplacement.returnConstant(true));
  119.                     
  120.                     // ===== 8. q()Z -> true =====
  121.                     // 原方法:检查r()且m()==2(Pro版判断)
  122.                     // 修改:直接true
  123.                     XposedHelpers.findAndHookMethod(l8lClass, "q",
  124.                         XC_MethodReplacement.returnConstant(true));
  125.                     
  126.                     // ===== 9. r()Z -> true =====
  127.                     // 原方法:返回d字段(授权标志)
  128.                     // 修改:直接true,并设置d=true
  129.                     XposedHelpers.findAndHookMethod(l8lClass, "r", new XC_MethodReplacement() {
  130.                         @Override
  131.                         protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
  132.                             try {
  133.                                 XposedHelpers.setBooleanField(param.thisObject, "d", true);
  134.                             } catch (Exception e) {
  135.                                 XposedBridge.log(TAG_KSWEB + " r()设置d字段失败: " + e.getMessage());
  136.                             }
  137.                             return true;
  138.                         }
  139.                     });
  140.                     
  141.                     // ===== 10. s()Z -> true =====
  142.                     // 原方法:检查r()且m()==1(Standard版判断)
  143.                     // 修改:直接true(虽然m()已返回2,但直接true更保险)
  144.                     XposedHelpers.findAndHookMethod(l8lClass, "s",
  145.                         XC_MethodReplacement.returnConstant(true));
  146.                     
  147.                     // ===== 11. 构造函数Hook:初始化时直接设置字段 =====
  148.                     // <init>(Context)中原本设a=1, d=false
  149.                     // 我们在afterHookedMethod中修正为a=2, d=true
  150.                     XposedHelpers.findAndHookConstructor(l8lClass,
  151.                         android.content.Context.class, new XC_MethodHook() {
  152.                             @Override
  153.                             protected void afterHookedMethod(MethodHookParam param) throws Throwable {
  154.                                 try {
  155.                                     XposedHelpers.setIntField(param.thisObject, "a", 2);
  156.                                     XposedHelpers.setBooleanField(param.thisObject, "d", true);
  157.                                     XposedBridge.log(TAG_KSWEB + " 构造函数Hook:已设置a=2, d=true");
  158.                                 } catch (Exception e) {
  159.                                     XposedBridge.log(TAG_KSWEB + " 构造函数Hook失败: " + e.getMessage());
  160.                                 }
  161.                             }
  162.                         });
  163.                     
  164.                     // ===== 12. w(IZ)V -> 阻止写入 =====
  165.                     // 原方法:写入SharedPreferences,可能覆盖我们的修改
  166.                     // 修改:阻止执行(但允许t()/v()调用时已经阻止了)
  167.                     XposedHelpers.findAndHookMethod(l8lClass, "w",
  168.                         int.class, boolean.class, new XC_MethodReplacement() {
  169.                             @Override
  170.                             protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
  171.                                 // 阻止写入,但保留字段设置
  172.                                 int type = (Integer) param.args[0];
  173.                                 try {
  174.                                     XposedHelpers.setIntField(param.thisObject, "a", type);
  175.                                 } catch (Exception e) {
  176.                                     XposedBridge.log(TAG_KSWEB + " w()设置a字段失败: " + e.getMessage());
  177.                                 }
  178.                                 XposedBridge.log(TAG_KSWEB + " w() Hook成功,阻止写入SharedPreferences");
  179.                                 return null;
  180.                             }
  181.                         });
  182.                     
  183.                     // ===== 13. x()V -> 阻止重置 =====
  184.                     // 原方法:重置license为默认值(清空配置)
  185.                     // 修改:阻止执行,避免被重置
  186.                     XposedHelpers.findAndHookMethod(l8lClass, "x", new XC_MethodReplacement() {
  187.                         @Override
  188.                         protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
  189.                             XposedBridge.log(TAG_KSWEB + " x() Hook成功,阻止license重置");
  190.                             return null;
  191.                         }
  192.                     });
  193.                     
  194.                     XposedBridge.log(TAG_KSWEB + " KSWEB l8.l Hook设置完成");
  195.                     
  196.                 } catch (Exception e) {
  197.                     XposedBridge.log(TAG_KSWEB + " Hook过程中发生错误: " + e.getMessage());
  198.                 }
  199.             }
  200.         });
  201.     }
复制代码
回复

使用道具 举报

282

主题

4134

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
5852
好评
23
信誉
128

考神MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛活跃会员MT论坛灌水老大

发表于 2026-4-25 18:57:01 来自手机  | 显示全部楼层  来自 天津
编译就行了吧
回复

使用道具 举报

69

主题

1914

回帖

8109

积分

硕士生

Rank: 6Rank: 6

金币
2062
好评
22
信誉
105
发表于 2026-4-25 19:16:46 来自手机  | 显示全部楼层  来自 美国
本帖最后由 hw1020 于 2026-4-25 19:20 编辑

看起来好像没什么问题,试试把外层的application attach去掉。有时候这一层有的APP会报错什么的。建议多看看运行日志,到底是那一步没运行或者报错了。
回复

使用道具 举报

19

主题

1018

回帖

3448

积分

大学生

王鹏

Rank: 5Rank: 5

金币
1053
好评
1
信誉
100

MT论坛最佳新人考神MT论坛帅哥MT论坛新人

QQ
发表于 2026-4-25 20:24:21 来自手机  | 显示全部楼层  来自 陕西
hw1020 发表于 2026-4-25 19:16
看起来好像没什么问题,试试把外层的application attach去掉。有时候这一层有的APP会报错什么的。建议多看 ...

可以编译,但是hook以后会员没解锁
回复

使用道具 举报

18

主题

1069

回帖

4402

积分

大学生

Rank: 5Rank: 5

金币
1582
好评
8
信誉
115

MT论坛最佳新人考神MT论坛新人

发表于 2026-4-25 20:51:47 来自手机  | 显示全部楼层  来自 河北
王鹏 发表于 2026-4-25 20:24
可以编译,但是hook以后会员没解锁

hook方法不对
回复

使用道具 举报

19

主题

1018

回帖

3448

积分

大学生

王鹏

Rank: 5Rank: 5

金币
1053
好评
1
信誉
100

MT论坛最佳新人考神MT论坛帅哥MT论坛新人

QQ
发表于 2026-4-25 21:23:45 来自手机  | 显示全部楼层  来自 陕西
探长鸽鸽 发表于 2026-4-25 20:51
hook方法不对

不会写让ai写的
回复

使用道具 举报

69

主题

1914

回帖

8109

积分

硕士生

Rank: 6Rank: 6

金币
2062
好评
22
信誉
105
发表于 2026-4-25 22:50:49 来自手机  | 显示全部楼层  来自 四川
王鹏 发表于 2026-4-25 21:23
不会写让ai写的

首先你先自己改下对应的方法,如果直接改没问题,那就是你hook代码的问题,否则就是你找的方法不对。反正我按我之前的方法直接修改是没有问题的。
回复

使用道具 举报

89

主题

1373

回帖

4771

积分

大学生

Rank: 5Rank: 5

金币
3178
好评
10
信誉
103

MT论坛最佳新人MT论坛帅哥MT论坛新人考神

发表于 2026-4-28 11:32:55 来自手机  | 显示全部楼层  来自 安徽
别hook,麻烦,一个赋值解决的事情,dex里就解决
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表