hook本应用的so库报错:Symbol size too small
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,请问这个是什么原因导致的呢?
可以把v7a目标函数的汇编指令发出来看看
@Colibrow 你好,这个是v7a的so库地址,https://gitee.com/anruoxi3475/public/raw/master/libil2cpp.so,hook的il2cpp_class_from_name函数,内部汇编指令代码请看下面图片:
通过so和指令来看不会有hook问题,模拟器出问题可能的原因是在寻找跳板函数的过程中因为运行的houdini环境报错,具体问题需要在模拟器上调试之后才能知道 你也可以通过初始化的时候setDebuggable设置为true开启调试模式,在模拟器上抓取对应的shadowhook日志发出来看看出错的位置
@Colibrow 这个是模拟器log日志:
手机运行正常,日志如下:
根据模拟器日志,在分配跳板空间的时候会经历三个步骤层层兜底
- 目标地址附近mmap寻找可用空间失败
- 目标ELF文件末尾对齐位置找到可用空间,但是尝试使用这块空间报错,具体需要调试代码
sh_exit_try_alloc_in_library - 在v7a情况下绝对地址作为跳板需要8个字节,目标函数是4个字节,函数指令长度太短所以hook失败
因为目前shadowhook不支持模拟器,所以你可以手动在模拟器上调试一下看看是哪一步出问题,很大可能是因为模拟器对mprotect进行了一些限制
好的,感谢解答。