hexstr / UnityFPSUnlocker

为unity-il2cpp提供在手机上设置FPS的模块
MIT License
356 stars 44 forks source link

考虑更新下模拟器支持方面吗 #42

Closed bananaheaven closed 1 year ago

bananaheaven commented 1 year ago

目前模块只使用_ZN7android26NativeBridgeLoadLibraryExtEPKciPNS_25native_bridge_namespace_tE这个符号,它只能在安卓8.0~安卓10.0上使用 安卓8以前没有NativeBridgeLoadLibraryExt只有NativeBridgeLoadLibrary 安卓10以后符号变成了NativeBridgeLoadLibraryExt 考虑换成NativeBridgeItf这个固定符号或者把三种情况都获取一遍

另外现在模块需要复制文件到/data/local/tmp,可以考虑直接从内存载入而不需要复制,参考 https://github.com/Perfare/Zygisk-Il2CppDumper/blob/70b95e88e738510bdf2574561e21280bc1d35f20/module/src/main/cpp/main.cpp#L55-L73

https://github.com/Perfare/Zygisk-Il2CppDumper/blob/70b95e88e738510bdf2574561e21280bc1d35f20/module/src/main/cpp/hack.cpp#L93-L101

hexstr commented 1 year ago

好思路,偷了 不过安卓8以前这个我以前只在mumu模拟器上测试过,然而以前没有调用JNI_OnLoad函数,现在也没有环境测试,总之先加上

hexstr commented 1 year ago

兼容性更新了一下,应该能支持houdini v2了 内存加载的话,稍微测试了一下,模拟器上在preAppSpecialize阶段无法读取/sdcard/.../il2cpp文件夹,没法自动识别应用是否为il2cpp后端的话,每打开一个应用都需要在preAppSpecialize阶段读取armxxx.so然后在postAppSpecialize阶段判断是否加载,那还不如保持原方案,还能减少一点文件读取。

bananaheaven commented 1 year ago

感谢你的更新,其实判断是否是il2cpp游戏的话可以考虑判断是否在lib下存在libil2cpp.so? 另外考虑使用内存载入的还有一个原因是可以在maps隐藏,有些加固会检查maps,目前模块的逻辑是只要是il2cpp游戏就载入,会导致被游戏检测闪退,如果使用magisk的排除列表又会与shamiko冲突

hexstr commented 1 year ago

@bananaheaven 高版本Android的lib目录是乱码获取不到

hexstr commented 1 year ago

@bananaheaven 从maps隐藏的话下次加上