bytedance / bhook

:fire: ByteHook is an Android PLT hook library which supports armeabi-v7a, arm64-v8a, x86 and x86_64.
https://github.com/bytedance/bhook/tree/main/doc#readme
MIT License
2.05k stars 315 forks source link

armeabi-v7a hook失败,用xhook库能成功 #55

Open richcx opened 1 year ago

richcx commented 1 year ago

bytehook Version

1.0.5

Android OS Version

6.0

Android ABIs

armeabi-v7a

Device Manufacturers and Models

模拟器

Describe the Bug

__ANDROID_API__ < 21, 运行时apilevel=23,尝试修改,默认没走/proc/self/maps,改成走/proc/self/maps部分能成功,不过app会闪退

richcx commented 1 year ago

刚从xhook升级到bhook,armeabi-v8a一直没问题,测试armeabi-v7a就失败了,目前稳定性还是xhook稳定点,线上一直用xhook,希望能尽快修复,不想改回去了

caikelun commented 1 year ago

有几个问题:

  1. 你说的“尝试修改”是否指你自己修改了bytehook的代码?
  2. 崩溃问题请提供tombstone或coredump,否则无法分析
  3. 你的模拟器是否是android-x86 + houdini环境?如果是的话,可以参照文档试试“手动模式”。默认的“自动模式”会用到trampoline,不一定能在模拟器中运行。
richcx commented 1 year ago
  1. 我的测试环境是"网易MuMu模拟器,编译时ANDROID_API < 21, 运行时apilevel=23“,打Log发现走的是dl_iterate_phdr,没有hook住dlopen,导致找不到我需要hook的动态库。尝试修改强制走bh_dl_iterate_by_maps,可以找到我的动态库了,但是hook open close write 等系统函数都OK,就是hook stat函数失败,蚕食修改bh_dl_iterate_by_maps内权限判断后成功hook住stat了。然后跑去夜神模拟器测试又闪退了。说明一下:arm64下都是没问题的,armeabi-v7a才会有这个问题。
  2. 暂时没有coredump,闪退日志信息很少,无法分析
  3. 我用的就是模拟器,手机上只打包armeabi-v7a的动态库,也是一样会hook失败的。我一直用的是“手动模式”
Mr-JingShi commented 7 months ago

请参考下:在夜神模拟器上跑armeabi-v7a包相关问题咨询 #91