android-inline-hook icon indicating copy to clipboard operation
android-inline-hook copied to clipboard

hook本应用的so库报错:Symbol size too small

Open anjiuzhe opened this issue 1 year ago • 1 comments

ShadowHook Version

1.0.10

Android OS Version

9.0

Android ABIs

armeabi-v7a

Device Manufacturers and Models

雷电模拟器

Describe the Bug

你好,v8a架构在真机和模拟器均表现正常,v7a架构只有在真机表现正常,v7a在模拟器报错:Symbol size too small,请问这个是什么原因导致的呢?

anjiuzhe avatar Oct 18 '24 05:10 anjiuzhe

可以把v7a目标函数的汇编指令发出来看看

Colibrow avatar Oct 18 '24 09:10 Colibrow

@Colibrow 你好,这个是v7a的so库地址,https://gitee.com/anruoxi3475/public/raw/master/libil2cpp.so,hook的il2cpp_class_from_name函数,内部汇编指令代码请看下面图片: image image

anjiuzhe avatar Oct 22 '24 11:10 anjiuzhe

通过so和指令来看不会有hook问题,模拟器出问题可能的原因是在寻找跳板函数的过程中因为运行的houdini环境报错,具体问题需要在模拟器上调试之后才能知道 你也可以通过初始化的时候setDebuggable设置为true开启调试模式,在模拟器上抓取对应的shadowhook日志发出来看看出错的位置

Colibrow avatar Oct 22 '24 12:10 Colibrow

@Colibrow 这个是模拟器log日志: image

anjiuzhe avatar Oct 23 '24 02:10 anjiuzhe

手机运行正常,日志如下: image

anjiuzhe avatar Oct 23 '24 02:10 anjiuzhe

根据模拟器日志,在分配跳板空间的时候会经历三个步骤层层兜底

  1. 目标地址附近mmap寻找可用空间失败
  2. 目标ELF文件末尾对齐位置找到可用空间,但是尝试使用这块空间报错,具体需要调试代码sh_exit_try_alloc_in_library
  3. 在v7a情况下绝对地址作为跳板需要8个字节,目标函数是4个字节,函数指令长度太短所以hook失败

因为目前shadowhook不支持模拟器,所以你可以手动在模拟器上调试一下看看是哪一步出问题,很大可能是因为模拟器对mprotect进行了一些限制

Colibrow avatar Oct 23 '24 09:10 Colibrow

好的,感谢解答。

anjiuzhe avatar Oct 24 '24 07:10 anjiuzhe