zoukankan      html  css  js  c++  java
  • 基于 VirtualApp 结合 whale hook框架实现hook第三方应用

    要点

    1. whale hook framework 使用示例;

    2. 参考项目:VirtualHook;

    3. 按照 VirtualHook 修改 VirtualApp;

    4. 编写 hook plugin;

    5. 运行修改后的 VirtualApp,也就是 VirtualWhale;

    6. 在 VirtualWhale内 安装 hook plugin,安装 宿主(第三方)应用;

    7. 在 VirtualWhale内 运行 宿主(第三方)应用;

    8. 结束;

     
    实现过程梳理
           非root情况下 hook 第三方 apk 需要的技术点:
                   1. hook framework;
                   2. apk 反编译、脱壳、分析;
                   3. 非 root 情况下则需要一个能知晓 apk 运行期间所有状态的环境,因此有了 虚拟多开应用 VirtualApp;
     
     
           针对以上三点技术选型:
                   1. whale 是 VirtualApp 作者 lody 新开发的 hook 框架,基本实现了全平台(Android/iOS/Linux/MacOS)hook。从适应性稳定性代码易读性角度,选择了该 hook 框架;
                   2. 先从自己编写的 apk 开始,简化问题;
                   3. 实现了 Dalvik 和 ART hook并能在非 root 状况下稳定运行的虚拟多开开源应用,也就 VirtualApp 了,因此选择 VirtualApp。
     
    目标:在 VirtualApp内实现对 DesignPatternApp 的 hook
     
     
    1. whale hook framework 使用示例;

       按照 whale 的 README.md 文档,操作如下:

        

       笔者编译的源码,因此操作 1. 3. 即可。

       操作1:

              

       操作3:

              

       编译成功!

       接下来测试是否能 hook 本应用内方法是否成功。

       XposedHelpers.java line259 方法 findAndHookMethod 的方法描述中,作者给出了使用示例,故试用代码如下:

              

       运行成功!

     

      2. 第三方宿主(被hook的app)app为 DesignPatternApp。hook目的:让该应用中的 TextView 显示 hook 后的赋值。

      3. hook 插件代码编写。

          参照 VirtualHook:基于VirtualApp的Java代码hook工具 ,注意需要遵守 whale hook框架公开出来的API规则,而不是YAHFA。编写完成后,生成 apk,并将其 push 到设备SD卡中:

    $ adb push hook_design_pattern_app.apk /sdcard

      4. VirtualApp修改

          参考 VirtualHook:基于VirtualApp的Java代码hook工具 ,将文中的 YAHFA 更换为 whale 。主要代码为 WhaleHookMain.java,作用是 加载 hook plugin 中的 hook 代码,实现 hook 第三方app 。 

              

     

    5. 运行:

      1)启动 VirtualWhale,点击“添加App”,选择“外置存储”,选择“HookDesignPatternApp”,点击“安装”;

      2)再次点击“添加App”,选择“克隆APP”,选择“DesignPatternApp”,点击“安装”;

      3)在应用管理主界面可以看到已安装的应用列表。点击“DesignPatternApp”,打开该App,点击“TEST”按钮,即可确认是否被正确 hook。

      点击 TEST 按钮,执行 initView(String content) 函数。该函数也是我们需要 hook 的函数:hook 其参数 content 的值。

     

      运行结果如下:

      a. DesignPatternApp 原运行结果:

              

      b. hook 后的结果:

              

              

    6. 基于VirtualApp结合whale hook框架实现hook第三方应用成功!

    7. 修改后的源码链接:VirtualWhale

  • 相关阅读:
    远程桌面无法复制粘贴
    xshell连接时报错:Could not connect to '192.168.2.125' (port 22): Connection failed.
    xshell远程连接另一台电脑的数据库,启动图形失败
    查询表空间总大小(dba_data_files和dba_segments,dba_free_space区别)
    网关,路由,子网掩码的作用
    Windows10无线能连上但没有网络
    如何让网页上的字如何变大
    MySQL数据查询(重点)
    MySQL增删改数据
    MySQL的表管理
  • 原文地址:https://www.cnblogs.com/nmj1986/p/11704407.html
Copyright © 2011-2022 走看看