Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

recommend:使用InMemoryDexClassLoader在内存中加载dex,避免dex文件被检测 #217

Open
ulua3809 opened this issue Jan 20, 2025 · 3 comments

Comments

@ulua3809
Copy link

zygisk模块在每次开机的时候都会复制dex到/data/tmp,对所有应用来说简直是完美的root检测点,但注释掉复制脚本后,ksu又会默认卸载,目标应用又找不到dex文件,关掉卸载的话目标应用又能轻松检测到ksu
改进思路,先编译好dex,再把dex转字节数组写到头文件里面
InMemoryDexClassLoader替换BaseDexClassLoader实现dex不落地,还能不用挂载到system,又少个检测点

@eritpchy
Copy link
Owner

最早就是这么做的, 这个模块是不关心防检测技术的, 先不说数组hardcode 3倍体积/base64 1.5倍体积/以及开发热加载需要

单纯从防御应用本身检测来说, 由于这个模块是开源的, 根本不可能防御, 非常容易被针对(你需要可以自己fork,按自己的想法编译), 无论是dex so,classloader scan,dex scan,maps 等等都能轻而易举就能识别到模块

但如果你只是想让其他应用检测不到, 那非常简单,只需要吧对应的so以及dex改个名就行了, 正常应用是没有权限列出这个目录的, 或者说post-fs-data.sh 文件里面删掉那句复制到/data/local/tmp的文件,这个目录只是给某些手机备用加载用的

@eritpchy
Copy link
Owner

并且由于zip不支持固实压缩, 每一个打出来的so再合并 4-5个包在一起体积就会非常离谱, 体积越大,更新就越困难,更新消耗的cdn流量(钱)就越多, 这些坑好多年前就已经踩过了

当然也欢迎您全部弄好了提PR

@ulua3809
Copy link
Author

并且由于zip不支持固实压缩, 每一个打出来的so再合并 4-5个包在一起体积就会非常离谱, 体积越大,更新就越困难,更新消耗的cdn流量(钱)就越多, 这些坑好多年前就已经踩过了

当然也欢迎您全部弄好了提PR

dex转成unsigned char数组打包在so里是可行的,虽然源码膨胀3倍但分发的是二进制文件,编译好的so,大小约等于so和dex绑在一起,等最近有空我试试,甚至可以压缩一下,用的时候解压,但是没有必要,毕竟最后是装在压缩包里的这样改了之后可以不挂载文件到系统分区,对原版KSU用户来讲对其他应用有更好的隐藏效果

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants