首页
社区
课程
招聘
[求助]这种反混淆的代码,frida如何hook
2020-3-19 14:44 10744

[求助]这种反混淆的代码,frida如何hook

2020-3-19 14:44
10744



类名和方法名以及变量名都被混淆成了不可显示的字符编码了,frida对方法进行overload会报错,有知道解决办法的大牛么,感谢!

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

最后于 2020-3-19 14:45 被guoqiangck编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (8)
雪    币: 1904
活跃值: (3316)
能力值: ( LV6,RANK:81 )
在线值:
发帖
回帖
粉丝
KingSelyF 1 2020-3-19 15:20
2
0
把所有方法打出来就知道了
雪    币: 963
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guoqiangck 2020-3-19 16:01
3
0
KingSelyF 把所有方法打出来就知道了
我这边是知道这个方法名的,虽然是乱码字符,在frida里面枚举出来的方法名也是这种不可显示的乱码字符,问题在于对这个方法进行overload是会报错undefined
雪    币: 620
活跃值: (858)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jmzqwh 2020-3-19 16:06
4
0
还没遇见过这种情况,马克一下,等大神回复
雪    币: 3907
活跃值: (5692)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
roysue 3 2020-3-19 16:10
5
3

比如说:

 int ֏(int x) {
        return x + 100;
    }

甚至有一些不可视, 所以可以先编码打印出来, 再用编码后的字符串去 hook.

    Java.perform(
        function x() {

            var targetClass = "com.example.hooktest.MainActivity";

            var hookCls = Java.use(targetClass);
            var methods = hookCls.class.getDeclaredMethods();

            for (var i in methods) {
                console.log(methods[i].toString());
                console.log(encodeURIComponent(methods[i].toString().replace(/^.*?\.([^\s\.\(\)]+)\(.*?$/, "$1")));
            }

            hookCls[decodeURIComponent("%D6%8F")]
                .implementation = function (x) {
                    console.log("original call: fun(" + x + ")");
                    var result = this[decodeURIComponent("%D6%8F")](900);
                    return result;
                }
        }
    )
雪    币: 963
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guoqiangck 2020-3-19 16:28
6
0
roysue 比如说: ```java int ֏(int x) { return x + 100; } ``` 甚至有一些不可视, 所以可以先编码打印出来, 再用编码后的字符 ...
我试试这个方法,感谢版主指点!
雪    币: 963
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guoqiangck 2020-3-19 17:42
7
0
var Log1 = Java.classFactory.use("com.c.a..");

Log1[""].overload().implementation = function() {
    var level = this[""]();
    console.log("level: " + level);
    return true;
}

用版主的方法尝试过了,方法可行,这种混淆可以使用这样的方式去hook

最后于 2020-3-19 17:42 被guoqiangck编辑 ,原因:
雪    币: 21
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
yoyaer 2022-12-24 22:35
8
0
不行啊,一直报错Failed to load script: timeout was reached。就hook这种方法会报这个错。
雪    币: 21
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
yoyaer 2022-12-24 22:59
9
0
yoyaer 不行啊,一直报错Failed to load script: timeout was reached。就hook这种方法会报这个错。
7楼方法可以,不用uri解码就行。
游客
登录 | 注册 方可回帖
返回