-
-
[求助]VirtualApp+YAHFA方案无法调用Unity项目mono.so的方法
-
发表于:
2020-2-15 10:14
3922
-
[求助]VirtualApp+YAHFA方案无法调用Unity项目mono.so的方法
我想开发一个测试工具,通过VirtualApp打开Unity游戏,然后通过mono.so加载一个新的DLL,达到嵌入工具到游戏里的目的。
可是发现我Hook到mono.so里方法后,唤起游戏,游戏执行过程中并不会触发hook,感觉我手动加载的mono.so和游戏自己加载的mono.so不在一个内存。
手动dl_open mono的log:
2020-02-12 10:16:20.017 8140-8140/? D/VA++: do_dlopen_V24 : /data/user/0/io.virtualhook/virtual/data/app/com.tink.unityhook.unity/lib/libmono.so, return : 0x2fe62feb.
游戏加载mono的log:
2020-02-12 10:16:20.220 8140-8160/? D/VA++: do_dlopen_V24 : /data/user/0/io.virtualhook/virtual/data/app/com.tink.unityhook.unity/lib/libmono.so, return : 0xe935cc59.
我Hook了Unity的Android启动类UnityPlayerActivity:OnCreate方法,在方法里通过jni调用mono.so里的mono_get_root_domain方法
mono_get_root_domain_func getRootDomainFunc = findSymbol("libmono.so", "mono_get_root_domain");
LOGI("mono_get_root_domain_func %s", func);
MonoDomain *domain = getRootDomainFunc();
if (!domain)
{
LOGI("loadDll err get root domain");
return;
}
发现得到的domain也是为空的,是否真的说明两个mono.so不在一个内存呢?
请教各位大佬,我该如何做才能调用到Unity游戏里mono.so的方法呢?
我的核心需求是不改原Unity项目的情况下,将一个新的DLL加载到Unity项目里执行,达到我的工具可以脱离项目,方便适配各个项目的目的。
本人是Unity开发者,对安卓|Java的这部分是新接触,望各位不吝赐教。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!