首页
社区
课程
招聘
[求助]使用android-inline-hook无效的问题
发表于: 2018-12-18 21:31 6850

[求助]使用android-inline-hook无效的问题

2018-12-18 21:31
6850
一个APK加载了libgame.so
用 ele7enxxh 的 android-inline-hook 实现hook他的一个导出函数。发现so指令确实被更改了。但是就是不执行到那里去。
我甚至将这一页内存清零 ,程序依然可以运行。同时我还hook了libc.so的connect,HOOK connect 函数是有效的,说明应该不是指令缓存没有刷新的问题。
然后又测试 直接修改libgame.so的磁盘文件函数头部,再push回目录。运行起来又崩了,说明这个函数确实被调用了。



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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 1392
活跃值: (5137)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
2
https://github.com/ele7enxxh/Android-Inline-Hook/issues/17

好像有类似的问题 @ele7enxxh 我的也是android7.1.2难道是系统机制的问题。
指令流直接走另一个文件或者内存过了?
2018-12-18 21:38
0
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
3
cat /proc/pid/maps看看是不是呗map了多次
2018-12-18 23:15
0
雪    币: 1392
活跃值: (5137)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
4
malokch cat /proc/pid/maps看看是不是呗map了多次
谢谢指点,经过仔细检查,确实是被map了多次。因为刚开始没有加载game so 。我使用了dlopen加载game.so,修改的是我的so,打印maps也是正常的。但是后来游戏又调用了dlopen此时返回的是另一份game.so。
有两个办法解决,第一是 hook dlopen (我测试失败,android 7.1.2 hook dlopen总是崩溃,暂未找到原因)
第二种是 在其他地方hook等待游戏加载完game.so以后 在执行我的hook。这次是成功的!!

其实我清0一页内存游戏都没有崩的时候已经想到是不是代码走别的地方过了。

再次感谢~~
2018-12-19 15:33
0
雪    币: 963
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我在Android7.1.2上同样的问题,但是我hook的时候所有so库都加载好了,cat /proc/pid/maps看到了已经加载的so,我再使用ele7enxxh的Android-Inline-Hook,同样是map了多次
使用https://blog.csdn.net/jinzhuojun/article/details/9900105这个例子里面hook方法也是同样的问题,hook open函数没有问题。
正常来说,这应该是你的第二种情况了
2019-6-4 16:14
0
雪    币: 1392
活跃值: (5137)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
6
guoqiangck 我在Android7.1.2上同样的问题,但是我hook的时候所有so库都加载好了,cat /proc/pid/maps看到了已经加载的so,我再使用ele7enxxh的Android-Inline- ...
我又遇到这个问题了。你解决没有?就是说我的hook 代码如果先dlopen了的话。后面加载的so就是另外的一个map。必须先等so加载了。我再HOOK才可以。有点烦脑
2019-12-24 18:01
0
雪    币: 963
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
IamHuskar 我又遇到这个问题了。你解决没有?就是说我的hook 代码如果先dlopen了的话。后面加载的so就是另外的一个map。必须先等so加载了。我再HOOK才可以。有点烦脑
Android7以后不能用dlopen了,那样hook的是你自己打开的so,我是通过主动查找已加载的so里面需要hook的函数地址,再使用inline hook就ok了
2019-12-24 18:07
0
雪    币: 963
活跃值: (85)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你可以先等待检查需要hook的so是否加载,加载了再进行hook
2019-12-24 18:09
0
雪    币: 1392
活跃值: (5137)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
9
guoqiangck 你可以先等待检查需要hook的so是否加载,加载了再进行hook
其实就是namespace的问题。没想到好办法解决。检查需要Hook的so是否加载的话。最好还是直接在dlopen里面处理。
2019-12-24 18:26
0
雪    币: 1392
活跃值: (5137)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
10
guoqiangck 我在Android7.1.2上同样的问题,但是我hook的时候所有so库都加载好了,cat /proc/pid/maps看到了已经加载的so,我再使用ele7enxxh的Android-Inline- ...
https://www.52pojie.cn/thread-948942-1-1.html
2019-12-24 18:32
0
游客
登录 | 注册 方可回帖
返回
//