LSPosed / LSPlant

A hook framework for Android Runtime (ART)
https://lsposed.org/LSPlant/
GNU Lesser General Public License v3.0
814 stars 203 forks source link

Failed to find GetMethodShorty #88

Closed FlyingYu-Z closed 2 months ago

FlyingYu-Z commented 2 months ago

环境: LSPosed 1.9.2(7024) - Zygisk 逍遥模拟器国际版 Android 9.0 (64位)

LSPosed在逍遥模拟器9.0上运行有问题,hook模块自身app没问题,但是把模块作用域附加到其它app上,就会无法启动目标app,已分析过目标app并没有环境检测。

image_2024-06-15_09-01-52

于是看看是不是LSPlant里获取GetMethodShorty的问题: image_2024-06-15_09-03-06

之后又查看了/system/lib64/libart.so里有没有这两个函数:_ZN3artL15GetMethodShortyEP7_JNIEnvP10_jmethodID _ZN3art15GetMethodShortyEP7_JNIEnvP10_jmethodID

发现是存在这两个函数的,经过调试,LSPlant里搜索的库也是/system/lib64/libart.so,并且调试过程中发现GetMethodShorty也是正常找到了。

image_2024-06-15_09-16-14

如果说是GetMethodShorty无法获取到,那么也不绝对,因为我写了模块并且Hook了模块本身里的方法;但是把模块作用域勾选了其它app,那么其它app就无法启动,就会出现issue标题上的错误。

目前已经测试,从LSPosed里下载了几个模块,并把作用域设置到目标app,所有目标app都无法启动,甚至连模块本身都无法启动。 测试的模块有:Dia、算法助手

另外也看了该issue:https://github.com/LSPosed/LSPlant/issues/32 ,也没有解决方案。

vvb2060 commented 2 months ago

找不到符号与LSPlant无关,符号解析器由库用户提供

yujincheng08 commented 2 months ago

把 libart.so 发上来

FlyingYu-Z commented 2 months ago

把 libart.so 发上来

感谢大佬回复,上传了: https://github.com/FlyingYu-Z/TmpFileStorage/blob/main/libart.so

FlyingYu-Z commented 2 months ago

找不到符号与LSPlant无关,符号解析器由库用户提供

那这么说是LSPosed的问题了吗,因为我使用LSPosed也无法自定义符号解析器

anjiuzhe commented 2 months ago

@yujincheng08 @vvb2060 你好,实践中在模拟器上遇到了同样的问题,确认跟art符号解析有关,路径为/system/lib64/libart.so,这边测试是使用本项目之前提交的elf_util.cpp解析符号,模拟器在x86_64上运行时符号解析正常,在arm64-v8a上运行时解析符号就失败了(apk里只提供arm64-v8a的.so,让模拟器运行),要如何解决模拟器架构的这种兼容性问题呢,有elf解析的第三方库推荐吗?感谢。

yujincheng08 commented 2 months ago

@anjiuzhe 尝试 xDl

anjiuzhe commented 2 months ago

@yujincheng08 好的,谢谢大佬。