首页
社区
课程
招聘
[讨论]关于LD_PRELOAD在Android API HOOK中的应用
发表于: 2014-3-18 09:49 35221

[讨论]关于LD_PRELOAD在Android API HOOK中的应用

2014-3-18 09:49
35221
收藏
免费 0
支持
分享
最新回复 (32)
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
是在ADB上执行的 同学
2014-5-8 09:49
0
雪    币: 8
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
感谢回复!
那么,我的想法有没有可能实现?或还缺些什么?
2014-5-8 19:22
0
雪    币: 130
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
替换原始app_process如何做到的? 直接替换的话开机重启之后就又变回去了。 难道你刷机的?
2014-5-13 20:31
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
可以实现 这个目前已经做到了

你需要看binder机制

希望能帮到你
2014-5-14 20:08
0
雪    币: 181
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
app_process不在ramdisk.img中,不会被替换。
2014-5-14 20:12
0
雪    币: 8
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
放置全局变量的方法看懂了
但是我有个hook so时的问题
比如我想hook frameworks/av/camera下的libcamera_client.so 中的connect函数。代码如下:
sp<Camera> Camera::connect(int cameraId)
{
    LOGV("connect");
    sp<Camera> c = new Camera();
    const sp<ICameraService>& cs = getCameraService();
    if (cs != 0) {
        c->mCamera = cs->connect(c, cameraId);
    }
    if (c->mCamera != 0) {
        c->mCamera->asBinder()->linkToDeath(c);
        c->mStatus = NO_ERROR;
    } else {
        c.clear();
    }
    return c;
}
我想把它写到自己的函数中,中间加些代码,生成so,放到LD_PRELOAD中。
但是其中的引用复杂,引用库之间牵连甚广,命名空间,类要不要?怎么取舍?
我的。cpp文件怎么写?
原camera。cpp如附件
上传的附件:
2014-5-15 20:01
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
最新的Android确实关闭了LD_PRELOAD,因为这个选项带来的安全问题比较严重,具体可以查看linker.cpp,里面get_AT_SECURE()返回true,不解析LD_PRELOAD.
2015-3-25 20:08
0
雪    币: 305
活跃值: (95)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
33
app_process  是怎么替换的,
2017-8-29 20:10
0
游客
登录 | 注册 方可回帖
返回
//