首页
社区
课程
招聘
[求助]请问如何hook进程中的函数,不是so中的函数
发表于: 2014-5-23 15:00 5654

[求助]请问如何hook进程中的函数,不是so中的函数

2014-5-23 15:00
5654
本人是初学者,看了几篇文章,勉强可以用自己的so中的函数的hook原进程中的动态链接库so中的函数。
但是我现在需要hook的是一个进程中自带的函数,而不是动态链接库中的,请问我应该怎么处理,有没有相关的教程,谢谢了。(怎么获得函数地址,怎么替换等等)

例如:我想将servicemanager进程中的
int svcmgr_handler(struct binder_state *bs,
                   struct binder_txn *txn,
                   struct binder_io *msg,
                   struct binder_io *reply)
{
//....
}
函数替换成我自己的函数,然后判断其中的参数,再确定是不是使用原始的函数。但是这个函数是在service_manger.c文件里,他被直接做成命令的,而不是so文件,所以请问各位大大应该怎么做。

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 851
活跃值: (3997)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
hook静态库函数和动态库差不多的,只是静态函数地址需要用调试器获取,为了通用获取函数地址可以这样
realFun = (pfnFun)((DWORD)GetModuleHandle(NULL) + 0x1000),其中0x1000是相对虚拟地址       
我上面说的是Windows上的,仅供参考。
2014-5-23 19:19
0
雪    币: 851
活跃值: (3997)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
另外如果函数被编译器内联优化了就不能Hook了
2014-5-23 19:22
0
雪    币: 53
活跃值: (280)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
你能hook说明你有root权限,如果有root权限,你直接用AOSP代码编译一个替换系统内部的不就完了
代码还可以随便改
一般厂家不怎么改这个代码的,最多加几个服务注册
2014-5-23 21:26
0
雪    币: 36
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
本人是初学者,看了几篇文章,勉强可以用自己的so中的函数的hook原进程中的动态链接库so中的函数。

这个能简单说一下思路吗? 我只知道修改plt/got表来hook,但是对于so中一些只供内部调用的函数,在被调用的过程中,并不从plt/got表中读取函数地址,这样的内部函数能被hook吗?
2014-7-6 15:47
0
雪    币: 196
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
请试试这个:
http://www.kanxue.com/bbs/showthread.php?t=189969
2014-7-11 13:21
0
游客
登录 | 注册 方可回帖
返回
//