泄密无花 发表于 2023-5-15 15:30

【原创】安卓逆向实例 - 迅龙视频【VIP + 去广告】

本帖最后由 泄密无花 于 2023-5-15 15:45 编辑

0x00 前言

Hook脚本编写练习帖子
其实求助了无数遍ChatGTP{:5_127:}菜也是真的菜,又菜又爱玩


0x01 准备工作
警告声明:下载此App仅供学习逆向使用,不要相信任何App网站包括App内部的任何广告!出现任何损失与帖子作者无关!
下载地址:http://dh99.co/


0x02 逆向分析

参考帖子:https://www.52hb.com/thread-58121-1-1.html
跟参考帖子是同一个框架,估计视频的API都一样,不过这不影响学习{:5_121:}

0x03 脚本编写

1、确定目标类

// VIP类
com.ys.resemble.entity.MineUserInfo
// 邀请类
com.ys.resemble.entity.ExtensionShareEntry
// 广告类
com.ys.resemble.entity.AdInfoDetailEntry

2、确定需要Hook的方法

// VIP方法
getInvited_count
getIs_vip
getVip_validity
// 邀请方法
getInvited_count
// 广告方法
getAd_id
getAd_source_id



3、完整的脚本
// 使用 Java.perform() 函数来执行主函数
Java.perform(function() {
// 定义目标类及其需要 Hook 的方法及其对应的返回值
const targets = [
    {
      clazz: "com.ys.resemble.entity.MineUserInfo",
      hooks: {
      "getInvited_count": 999,
      "getIs_vip": 1,
      "getVip_validity": 4070880000,
      },
    },
    {
      clazz: "com.ys.resemble.entity.ExtensionShareEntry",
      hooks: {
      "getInvited_count": 999,
      },
    },
    {
      clazz: "com.ys.resemble.entity.AdInfoDetailEntry",
      hooks: {
      "getAd_id": 0,
      "getAd_source_id": 0,
      },
    },
];

// 对每个目标类的方法进行 Hook
targets.forEach(target => {
    const clazz = Java.use(target.clazz);
    const hooks = target.hooks;
    hookMethods(clazz, hooks);
});

// 定义 hookMethods() 函数
function hookMethods(clazz, hooks) {
    // 遍历需要 Hook 的方法
    for (const methodName in hooks) {
      // 获取方法的引用
      const newValue = hooks;
      const method = clazz;
      // 判断方法是否存在
      if (method) {
      // 替换方法的实现
      method.implementation = function() {
          // 输出 Hook 成功的日志
          console.log(`${methodName} hooked`);
          const oldValue = this();
          // 输出原始返回值
          console.log(`${methodName} OldValue: ${oldValue}`);
          const result = newValue;
          // 输出替换后的返回值
          console.log(`${methodName} NewValue: ${result}`);
          return result;
      };
      } else {
      // 输出错误日志
      console.log(`Method ${methodName} not found in ${clazz}`);
      }
    }
}
});

4、Hook结果


0x04 总结
优化了代码:将目标类及其需要 Hook 的方法及其对应的返回值封装成了一个数组,然后使用 forEach() 方法对每个目标类进行 Hook{:5_117:}

屏蔽名字 发表于 2023-6-23 17:28

小白虽然看不懂,还是回帖支持你的分享精神

attackmyth 发表于 2023-6-25 17:30

感谢分享 继续学习

bnjzzheng 发表于 2023-6-29 08:09

感谢分享。

身体被淘空 发表于 2023-7-4 17:01

不影响我说句牛B

炫飞 发表于 2023-10-27 02:34

厉害了。精辟。

嫁女给我 发表于 2023-10-27 19:16

楼主这软件支持tv端么??

泄密无花 发表于 2023-10-30 09:42

嫁女给我 发表于 2023-10-27 19:16
楼主这软件支持tv端么??

没用过{:6_218:}

甘饴 发表于 2023-11-20 01:27

感谢分享思路。增加经验了

我要当战神 发表于 2023-11-29 17:52


感谢分享思路,虽然我还是看不懂。整体上我还在学习中,有点进步就是好的。万一哪一天我也成为了九大高手,不是更好吗?
页: [1] 2
查看完整版本: 【原创】安卓逆向实例 - 迅龙视频【VIP + 去广告】