首页
社区
课程
招聘
未解决 [求助]请教一下 为什么在riru模块中使用inlinehook会导致crash 100.00雪花
发表于: 2019-8-20 16:04 4101

未解决 [求助]请教一下 为什么在riru模块中使用inlinehook会导致crash 100.00雪花

2019-8-20 16:04
4101

我在riru模块的onModuleLoaded中使用inlinehook一些系统的函数都会导致crash
但是用plthook的xhook却可以hook成功
一直也没想明白为什么 麻烦大家指点一下

 

代码

size_t (*old__system_property_get)(const char *name, char *value);

size_t new__system_property_get(const char *name, char *value) {
    return old__system_property_get(name, value);
}

__attribute__((visibility("default")))
void onModuleLoaded() {
    ZzReplace((void *)__system_property_get, (void *)new___system_property_get, (void **)&old___system_property_get);
}

错误日志

2019-08-20 19:50:22.157 209-209/? I/Riru: module loaded: zzhook (api 4)
2019-08-20 19:50:22.157 209-209/? V/Riru: zzhook: onModuleLoaded
2019-08-20 19:50:22.168 209-209/? I/zzhook: detect libc.so b368a000
2019-08-20 19:50:22.169 209-209/? I/zzhook: __system_property_get = 0xb36ac53d
2019-08-20 19:50:22.169 209-209/? I/zzzzz: [*] Initialize 'ZzReplace' hook at 0xb36ac53d
2019-08-20 19:50:22.169 209-209/? I/zzzzz: [*] Use Thumb2 Ldr Branch
2019-08-20 19:50:22.169 209-209/? I/zzzzz: [*] Assembler buffer at 0xb07c3000
2019-08-20 19:50:22.169 209-209/? I/zzzzz: [*] relocate thumb1 inst: 0xb510
2019-08-20 19:50:22.169 209-209/? I/zzzzz: [*] relocate thumb1 inst: 0x460c
2019-08-20 19:50:22.169 209-209/? I/zzzzz: [*] relocate thumb2 inst: 0xe9f4f7f3
2019-08-20 19:50:22.170 209-209/? I/zzzzz: [!] Out of memory

2019-08-20 19:50:22.171 209-209/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 209 (app_process), pid 209 (app_process)

2019-08-20 19:50:22.240 428-428/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2019-08-20 19:50:22.241 428-428/? A/DEBUG: Build fingerprint: 'google/hammerhead/hammerhead:6.0.1/M4B30X/3237893:user/release-keys'
2019-08-20 19:50:22.241 428-428/? A/DEBUG: Revision: '0'
2019-08-20 19:50:22.241 428-428/? A/DEBUG: ABI: 'arm'
2019-08-20 19:50:22.241 428-428/? A/DEBUG: pid: 209, tid: 209, name: app_process  >>> /system/bin/app_process <<<
2019-08-20 19:50:22.241 428-428/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
2019-08-20 19:50:22.241 428-428/? A/DEBUG: Cause: null pointer dereference
2019-08-20 19:50:22.241 428-428/? A/DEBUG:     r0 00000000  r1 b07c3020  r2 00000020  r3 00000000
2019-08-20 19:50:22.241 428-428/? A/DEBUG:     r4 00000000  r5 00000000  r6 00001000  r7 bedfd5c0
2019-08-20 19:50:22.241 428-428/? A/DEBUG:     r8 b07c3000  r9 00000000  sl 00000020  fp bedfd620
2019-08-20 19:50:22.241 428-428/? A/DEBUG:     ip b371a5d4  sp bedfd5a0  lr b0762723  pc b36a2e78  cpsr 600f0030

2019-08-20 19:50:22.256 428-428/? A/DEBUG: backtrace:
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #00 pc 00018e78  /system/lib/libc.so (memcpy+293)
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #01 pc 0000b71f  /system/lib/libriru_zzhook.so
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #02 pc 0000b75f  /system/lib/libriru_zzhook.so
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #03 pc 0000b777  /system/lib/libriru_zzhook.so
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #04 pc 0000db11  /system/lib/libriru_zzhook.so
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #05 pc 0000cc2f  /system/lib/libriru_zzhook.so
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #06 pc 0000a405  /system/lib/libriru_zzhook.so
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #07 pc 0000b95d  /system/lib/libriru_zzhook.so
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #08 pc 0000a161  /system/lib/libriru_zzhook.so (ZzReplace+72)
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #09 pc 00008e6d  /system/lib/libmemtrack.so
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #10 pc 00013bdd  /system/bin/linker (__dl__ZL13call_functionPKcPFviPPcS2_ES0_+68)
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #11 pc 00013939  /system/bin/linker (__dl__ZL10call_arrayIPFviPPcS1_EEvPKcPT_jbS5_+132)
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #12 pc 00013ae1  /system/bin/linker (__dl__ZN6soinfo17call_constructorsEv+380)
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #13 pc 000139d7  /system/bin/linker (__dl__ZN6soinfo17call_constructorsEv+114)
2019-08-20 19:50:22.256 428-428/? A/DEBUG:     #14 pc 000139d7  /system/bin/linker (__dl__ZN6soinfo17call_constructorsEv+114)
2019-08-20 19:50:22.257 428-428/? A/DEBUG:     #15 pc 000106a1  /system/bin/linker (__dl___linker_init+2436)
2019-08-20 19:50:22.257 428-428/? A/DEBUG:     #16 pc 00015590  /system/bin/linker (_start+4)

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 47
活跃值: (197)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
inlinehook 会崩的两种情况

第一种是被Hook 的函数在inlinehook 库中被使用 这样在Hook 之后 本来被使用的函数指令遭到破坏 然后崩了

第二种情况是被Hook 的函数太短 函数开始到结尾的空间无法填入跳转指令

__system_property_get 应该是第二种情况

最后于 2019-8-23 18:53 被猫仙大人编辑 ,原因:
2019-8-23 18:52
0
雪    币: 285
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
猫仙大人 inlinehook&nbsp;会崩的两种情况第一种是被Hook&nbsp;的函数在inlinehook&nbsp;库中被使用&nbsp;这样在Hook&nbs ...
应该不是这两种情况 riru是编译并替换libmemtrack.so完成hook 我直接修改riru在init的时候去inlinehook一些libc的函数包括fopen open之类的 也都失败了
日志报的是fault addr 0x0 觉得是没有找到地址 我也尝试开线程去maps里找libc的地址 然后计算偏移再去inlinehook也是一样的错误
也试过直接编译一个只包含inlinehook的so 在libmemtrack.so上用dlopen加载 也是这个错误
但是我直接修改libc去加载这个只包含inlinehook的so却可以hook成功 所以想不明白是怎么原因导致的这个crash
2019-8-24 09:42
0
雪    币: 47
活跃值: (197)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
要不你给我发个简单得工程 我这几天比较忙 
2019-8-26 03:18
0
雪    币: 107
活跃值: (1693)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
因为inlinehook 不可重入。所以你不能在new__system_property_get简单的调用old__system_property_get,你应该自己实现这个方法。
2019-10-25 13:11
0
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
反正我都是尽量用plthook这种导入表的hook方式,因为稳定。安卓inline hook很容易出问题。原因不晓得。inline hook在pc上真是好用,在安卓上真心不好用。
2019-10-25 14:41
0
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
特别是hook libc的核心函数,基本上hook一个崩一个
2019-10-25 14:42
0
雪    币: 144
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我用的还是第三方的商业hook库。都是这种效果
2019-10-25 14:44
0
雪    币: 29
活跃值: (5672)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
换个hook框架,用substrate试试
2020-11-27 11:58
0
雪    币: 2166
活跃值: (3226)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
10
看一下你的Android是否使用了SELinux策略
2020-11-27 12:17
0
雪    币: 477
活跃值: (1412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
selinux阻止mprotect了,另外sp要对齐
2020-11-27 18:25
0
游客
登录 | 注册 方可回帖
返回
//