首页
社区
课程
招聘
[原创]frida hook loadLibrary
发表于: 2020-10-29 19:22 15451

[原创]frida hook loadLibrary

2020-10-29 19:22
15451

最近在研究AndLua,提取源码的方法还是老套的hook lua_load,论坛上关于提取方法的帖子有很多,这里就不再赘述。

 

但是有一个小问题,如果使用frida -f去创建进程的方式hook应用并加载脚本,这时候我们要hook的模块libluajava.so还没有加载,如果app先跑起来再frida -n附加进程,我们的lua脚本已经载入完了,这时候hook lua_load得不到任何东西,所以考虑hook system.loadLibrary在里面安装native层的hook。

 

一般frida hook的java方法都可以用this.xxx(p0,p1)去调用,但是loadLibrary不行(希望有大佬告诉我原因),所以在github上找了一个例子,放在论坛上方便大家用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Java.perform(function(){
    const system = Java.use('java.lang.System');
    const Runtime = Java.use('java.lang.Runtime');
    const VMStack = Java.use('dalvik.system.VMStack');
    system.loadLibrary.implementation = function(path){
        console.log(path);
        //this.loadLibrary(path);
        console.log('System.loadLibrary("' + path + '")');
        const loaded = Runtime.getRuntime().loadLibrary0(VMStack.getCallingClassLoader(), path);
        var mbase = Module.getBaseAddress('libluajava.so');
        Interceptor.attach(mbase.add(0xC999),{
        onEnter:function(args){
            console.log(hexdump(Memory.readPointer(args[2]),{ length: 100, ansi: true }));
        }
    });
    }
});

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 4
支持
分享
最新回复 (15)
雪    币: 7
活跃值: (275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不用这么麻烦,直接frida 直接hook dlopen或android_dlopen_ext即可拦截到
2020-10-30 07:52
2
雪    币: 1096
活跃值: (379)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
3
so目录问题,root设备拷贝到/system/etc/就可以了
2020-10-30 09:42
0
雪    币: 3484
活跃值: (14203)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
4
直接HookJava层 system.loadlib 就可以了 当加载完毕以后 执行注入逻辑就可以了
2020-10-30 14:38
1
雪    币: 8472
活跃值: (5071)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
5
lscmxl so目录问题,root设备拷贝到/system/etc/就可以了
好像是,因为frida的报错就是找不到so
2020-10-30 23:34
0
雪    币: 8472
活跃值: (5071)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
6
wx_心如止水 不用这么麻烦,直接frida 直接hook dlopen或android_dlopen_ext即可拦截到
学到了,谢谢大佬
2020-10-30 23:34
0
雪    币: 8472
活跃值: (5071)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
7
珍惜Any 直接HookJava层 system.loadlib 就可以了 当加载完毕以后 执行注入逻辑就可以了
我没太懂。。我文章的内容就是hook java层的loadlibrary
2020-10-30 23:36
0
雪    币: 8472
活跃值: (5071)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
8
找到原因了,根据@PTRer大神的帖子,loadLibrary内部会修改classloader,不能直接调用,故主动调用更底层的loadLibrary0
2020-11-9 20:46
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
可以联系吗,有事相求
2020-11-23 13:53
0
雪    币: 112
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
andlua lua_load的字节码方法 字符串全加密 大佬能说下怎么解密吗
2020-11-28 01:13
0
雪    币: 8472
活跃值: (5071)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
11
东纹 andlua lua_load的字节码方法 字符串全加密 大佬能说下怎么解密吗
论坛里已经有许多大神写了这方面的帖子,搜索一下
2020-12-2 15:19
0
雪    币: 1334
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
12
想问下0xc999是什么呀 谢谢
2022-4-11 10:34
0
雪    币: 8472
活跃值: (5071)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
13
ilanlanya 想问下0xc999是什么呀 谢谢
lua_load 在 libluajava.so 中的 rva
2022-4-11 21:02
0
雪    币: 1334
活跃值: (495)
能力值: ( LV4,RANK:52 )
在线值:
发帖
回帖
粉丝
14
v0id_ lua_load 在 libluajava.so 中的 rva
谢谢师傅
2022-4-19 15:27
0
雪    币: 1122
活跃值: (1938)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
2022-8-4 10:39
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
lushanu https://github.com/frida/frida-java-bridge/issues/63 https://github.com/rovo89/XposedBridge/issues/8 ...
真棒
2022-8-4 16:22
0
游客
登录 | 注册 方可回帖
返回
//