• frida hook 类所有方法(ZenTracker)


    frida hook 类所有方法(ZenTracker)

    大家好,我是王铁头 一个乙方安全公司搬砖的菜鸡
    持续更新移动安全,iot安全,编译原理相关原创视频文章

    今天分享的是frida hook 类的所有方法

    视频演示:
    https://space.bilibili.com/430241559

    应用场景

    在逆向的时候 有时候想要知道一个类的方法啥时候被调用,假设我们要分析的类有10个方法,那么10个方法用frida一个一个写hook方法也比较麻烦 这时候有三种方法

    1. 使用frida 写个十几行代码
    2. 用Objection命令行工具 一行代码
    3. 使用ZenTracker这个图形化工具 点几下完事

    1 frida hook所有方法代码

    Java.perform(function(){
        //hook 类所有方法 
        var str_cls_name = "com.example.test_tracker.Test"; //类名
    
        //获取类的所有方法
        var cls = Java.use(str_cls_name);
        var mhd_array = cls.class.getDeclaredMethods();
    
        //hook 类所有方法 (所有重载方法也要hook)
        for (var i = 0; i < mhd_array.length; i++) 
        {
            var mhd_cur = mhd_array[i]; //当前方法
            var str_mhd_name = mhd_cur.getName(); //当前方法名
            //console.log(str_mhd_name);
    
            //当前方法重载方法的个数
            var n_overload_cnt = cls[str_mhd_name].overloads.length;
            //console.log(n_overload_cnt);
    
            for (var index = 0; index < n_overload_cnt; index++) 
            {
                cls[str_mhd_name].overloads[index].implementation = function () 
                {
                    //参数个数
                    var n_arg_cnt = arguments.length;
                    /*
                    for (var idx_arg = 0; idx_arg < n_arg_cnt; n_arg_cnt++) 
                    {
                        console.log(arguments[idx_arg]);   
                    }
                    */
                    console.log(str_mhd_name + '--' + n_arg_cnt);
                    return this[str_mhd_name].apply(this, arguments);
                }   
            }
        }
    });
    

    .

    2 Objection命令 hook所有方法

    //com.xx.xx 是你要hook的类
    android hooking watch class com.xxx.xxx
    

    .

    3 ZenTracker图形化工具 hook所有方法

    虽然作者的原意并不是hook一个类的所有方法,但是工具这东西还是活学活用比较好。

    项目地址

    https://github.com/hluwa/ZenTracer

    图形界面

    frida hook所有方法

    可以看到效果还是比较直观的

    容易忘记的一点:

    启动frida_server
    既然是一个封装了frida的工具 那肯定手机要启动frida-server才能工作

    踩坑记录

    这里虽然工具确实比较好用,在很多文章里面大佬们确实也没遇到什么问题 这里可能因为他们比较有钱用的是 Mac吧

    我这种底层菜鸡当然买不起Mac,只能用辣鸡笔记本维持生活,用的也是windows系统, 所以这里就出了一些吊诡问题

    1) 大坑 找不到设备

    frida hook所有方法

    这里 如果确定设备已经连接,解决方法:点击stop。在我其中一台笔记本上面测试时,点击stop后,成功附加进行了hook.当然正常情况点击stop应该是退出

    2) 大坑 绝对路径的问题

    frida hook所有方法

    解决方法:ZenTracer.py第258行 手动修改路径为绝对路径

    测试详情

    测试软件界面

    frida hook所有方法

    测试软件代码

    1.方法代码
    frida hook所有方法

    2.调用代码
    frida hook所有方法

    效果图

    点击按钮后的效果图
    frida hook所有方法

    视频演示:https://space.bilibili.com/430241559

    相关代码资料 关注公众号 [移动安全王铁头] 回复关键字 frida 下载:

    持续更新移动安全,iot安全,编译原理相关原创视频文章

  • 相关阅读:
    Python3基础 keyword 查看所有的关键字
    Python3基础 print 格式化输出 %% 输出%
    Python3基础 print 格式化输出 %f %d 保留浮点数的位数 整数的位数不够零来凑
    Python3基础 for-else break、continue跳出循环示例
    Python3基础 global 在函数内部对全局变量进行修改
    Python3基础 continue while循环示例
    Python3基础 def 函数要先定义再调用
    Python3基础 输出逐行递增的小星星
    Python3基础 九九乘法表
    C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法
  • 原文地址:https://www.cnblogs.com/shlyd/p/14095020.html
Copyright © 2020-2023  润新知