Post #45
651
Twkzz - The Halo (off-topic: Treat Wheel 0.0.11 soon!)
(And ReZygisk 1.0.1, too.Two ones, two two ones!)
- β€ 25
- π 1
TH @thepedr002
Twkzz - The Halo (off-topic: Treat Wheel 0.0.11 soon!)
This post (sticker, poll or similar) has no web preview. Open in Telegram
This post (sticker, poll or similar) has no web preview. Open in Telegram

mountinfo leakMS_SLAVE, mounting tmpfs, and... umounting /storage mounts.umount is fine by itself, Zygote utilizes a very specific libc function to grab the active mounts: getmntent. The special characteristic of that function is that it is backed by a global buffer in libc (getmntent.c#L25). When Zygote uses it, it ends up leaving the last mount on /proc/mounts on that buffer.umount, the mounts will disappear from procfs, but the trace of the last mount will be cached in that global buffer, and it can be observed.setmntent and getmntent (bypassing procfs related detections), grabbing its address and new buffer value, passing to parent, and having the parent write to the address the children's buffer value. Since they share the same mount namespace, they should have equal values when up-to-date. This fixes this detection.libminikin.so happen before most system libraries β but after Zygisk modules. By removing those, we can safely patch this detection.soinfo_unload, which removed its SoInfo entry from SoList, evading most generic injection detections.module.prop to the original one, so that it could modify it, and if a reboot is made, all changes will be reverted. The biggest problem of all this was that it was a global mount. KernelSU utilizes ksud to list module information, so a mount in the app mount namespace would not work.installd after a commit trying to simplify its umount. However, to fix that, it involved making 64-bit-only devices have it leak unless umount was turned on for the application.module.prop with sed (Thanks Ok for the idea!) and that way, have a clean module.prop when ReZygisk's disabled without numerous traces.
system_server level. Features are fun, but they come with a hefty price; wider surface for detection. Regardless of how careful they were, a detection appeared β and of course, in the *silliest* ways.BIND_INPUT_METHOD permission in their manifest. This allows the system to recognize such and display them as possible keyboards for the user to select and use.InputMethodManager list and the app list, as an application with BIND_INPUT_METHOD permission would not appear as a input method/keyboard app.getPackageInfo with the purpose of spoofing an app as nonexistent. Hooks, however, are always problematic β well, not directly. Not because they leave traces β which here, they barely do, as we are in system_server, but because the code that you add will always add some overhead to the target function.getPackageInfo 20000x, one for HMA(-OSS) app, and one for a nonexistent app, this allowed us to observe (with high-quality performance counters, when HMA is intercepting, a +20% overhead to the function.getPackageInfo timing detection was recently discovered by third-parties. However, it was known to us back to December of 2025, and reported to HMA-OSS in January (which is the reason behind it not being detected through it).