首页
社区
课程
招聘
frida hook init_array自吐新解
发表于: 2024-1-8 00:48 9661

frida hook init_array自吐新解

2024-1-8 00:48
9661

前言

frida的CModule是一个极其强大的模块,本文将使用CModule来完成init_array的信息输出

简单来说,就是借助CModulesoinfo结构体进行解析

实现

经过对比分析历代soinfo结构体的定义,可以确定从Android 8 ~ 14,结构体中init_array的位置都很稳定

于是通过下面的头文件中提取必要的内容,在CModule中定义一个soinfo结构体,这样frida就能自动完成相关偏移的处理

接着定义一个函数,接受一个soinfo指针参数和一个callback函数,优雅地输出init_array信息

1
2
3
void tell_init_info(soinfo* ptr, void (*cb)(int, void*, void*)) {
    cb(ptr->init_array_count_, ptr->init_array_, ptr->init_func_);
}

那么哪里最早能获取到soinfo指针呢?答案是soinfo->call_constructors,这个函数符号一直很稳定

为了获取soname,则选择主动调用soinfo->get_soname,这个函数符号同样很稳定


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

收藏
免费 13
支持
分享
最新回复 (11)
雪    币: 2894
活跃值: (3612)
能力值: ( LV5,RANK:61 )
在线值:
发帖
回帖
粉丝
2
感谢大佬的分享~~~
2024-1-8 00:59
0
雪    币: 10
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
感谢分享yyds
2024-1-8 09:11
0
雪    币: 1542
活跃值: (10049)
能力值: ( LV9,RANK:240 )
在线值:
发帖
回帖
粉丝
4
再来个样本就好了
2024-1-8 11:47
0
雪    币: 1238
活跃值: (1820)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
tql
2024-1-8 13:30
0
雪    币: 3867
活跃值: (31391)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢分享
2024-1-8 13:51
1
雪    币: 424
活跃值: (4761)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
感谢分享-frida hook init_array自吐新解.
2024-1-8 17:11
0
雪    币: 519
活跃值: (1837)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
misskings [em_13]再来个样本就好了
随便拿个有init_array测就可以啦,默认是打印所有加载库的。
2024-1-8 17:11
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
强大
2024-1-9 10:50
0
雪    币: 120
活跃值: (1625)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢分享-frida hook init_array自吐新解
2024-4-12 15:14
0
雪    币: 69
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
strong
2024-4-12 15:42
0
雪    币: 47
活跃值: (130)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qig
12

强大,我这里有一个apk ,init_array 里面有个thread_create的方法,经过测试,的确可以解析出来.

上传的附件:
2024-5-18 14:54
0
游客
登录 | 注册 方可回帖
返回