首页
社区
课程
招聘
[原创] 分享一个hook _mod_init_function section中函数的脚本
2023-9-11 11:51 5369

[原创] 分享一个hook _mod_init_function section中函数的脚本

2023-9-11 11:51
5369

前言

转战iOS第一篇hh(如果没有下一篇的话也是最后一篇),iOS中存在着和Android一样的init_array节区的节区,也就是_mod_init_function,那么这部分的函数如何hook呢?

直接上脚本

本来一开始是自己研究dyld源码的,但是一番搜索大法发现已经有大佬给出思路啦,虽然是frida-gum的,但是核心思路是明确的,利用dyld在调用_mod_init_function区中的函数前会先使用containAddress函数校验一番,直接修改成frida-js的脚本方便自己后续使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// https://www.romainthomas.fr/post/21-07-pokemongo-anti-frida-jailbreak-bypass/
function hook_mod_init_func(addr,targetModule){
    Interceptor.attach(addr,{
        onEnter: function(){
            var debugSymbol = DebugSymbol.fromAddress(this.context.x1)
            if(debugSymbol.moduleName == targetModule){
                Interceptor.attach(debugSymbol.address,{
                    onEnter: function(){
                        // hook_msHookFunction()
                    },
                    onLeave: function(){
                         
                    }
                })
 
            }
             
        },onLeave: function(){
 
        }
    })
}
function findSymbolsAndHook(targetModule){
    // frida hook dyld
    let dyld =  Process.getModuleByName('dyld');
    if(dyld){
        let symbols = dyld.enumerateSymbols()
        if(symbols){
            symbols.forEach((symbol) => {
                if (symbol.name.indexOf('ImageLoader') >= 0 && symbol.name.indexOf('containsAddress') >= 0){
                    console.log(`symbol name  = ${symbol.name}`)
                    hook_mod_init_func(symbol.address,targetModule)
                }
            })
        }
         
    }
 
}
function main(){
    findSymbolsAndHook("test") // test 替换为自己想要hook的模块名即可。
}
setImmediate(main)

也可以直接从我的repo下载hook_mod_init_function.js , 把整个AndroidSec仓库更名为MobileSec了,以后也会更新iOS的有意思的东西hhh

参考

https://www.romainthomas.fr/post/21-07-pokemongo-anti-frida-jailbreak-bypass/
https://github.com/opensource-apple/dyld/blob/master/src/ImageLoaderMachO.cpp#L1834


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

最后于 2023-9-11 23:41 被Simp1er编辑 ,原因: 添加函数地址
收藏
点赞0
打赏
分享
最新回复 (3)
雪    币: 19431
活跃值: (29097)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
秋狝 2023-9-12 11:14
2
1
感谢分享
雪    币: 28
活跃值: (295)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
戀人未滿 2023-9-13 19:40
3
0
期待下一篇
雪    币: 1903
活跃值: (4920)
能力值: ( LV8,RANK:146 )
在线值:
发帖
回帖
粉丝
Simp1er 2023-10-16 21:53
4
0
戀人未滿 期待下一篇
不要期待,一切随缘hhh
游客
登录 | 注册 方可回帖
返回