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

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

2023-9-11 11:51
6805

前言

转战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
// 90cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2J5L8$3#2S2K9h3&6@1K9r3!0E0j5i4y4Q4x3X3g2X3M7W2)9J5c8Y4m8G2M7%4c8Q4x3V1j5J5x3g2)9J5k6o6l9%4i4K6u0V1M7r3!0C8k6h3#2G2L8X3N6G2i4K6u0V1j5h3&6@1K9g2)9J5k6r3k6J5K9h3c8S2i4K6u0V1K9X3q4A6L8r3u0J5k6h3q4C8i4K6u0V1j5Y4W2H3j5i4y4K6i4K6u0r3
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

参考

c83K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2J5L8$3#2S2K9h3&6@1K9r3!0E0j5i4y4Q4x3X3g2X3M7W2)9J5c8Y4m8G2M7%4c8Q4x3V1j5J5x3g2)9J5k6o6l9%4i4K6u0V1M7r3!0C8k6h3#2G2L8X3N6G2i4K6u0V1j5h3&6@1K9g2)9J5k6r3k6J5K9h3c8S2i4K6u0V1K9X3q4A6L8r3u0J5k6h3q4C8i4K6u0V1j5Y4W2H3j5i4y4K6i4K6u0r3
a68K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6G2M7r3g2F1M7$3!0#2M7X3y4W2i4K6u0V1j5i4m8H3L8r3g2Q4x3V1k6V1P5h3I4V1i4K6u0r3j5X3I4G2j5W2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8Y4y4J5j5#2)9J5c8V1W2E0j5h3N6W2e0r3!0S2k6r3g2J5e0h3q4U0K9p5!0Q4x3X3g2U0M7s2m8Q4x3U0y4x3x3e0R3K6y4l9`.`.


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

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