https://github.com/MhmRdd/NoHello
A Zygisk module to hide root.
https://github.com/MhmRdd/NoHello
Last synced: 11 days ago
JSON representation
A Zygisk module to hide root.
- Host: GitHub
- URL: https://github.com/MhmRdd/NoHello
- Owner: MhmRdd
- License: mit
- Created: 2025-05-12T14:34:09.000Z (about 1 month ago)
- Default Branch: master
- Last Pushed: 2025-05-31T03:11:57.000Z (22 days ago)
- Last Synced: 2025-05-31T14:07:52.173Z (21 days ago)
- Language: C++
- Size: 163 KB
- Stars: 301
- Watchers: 6
- Forks: 24
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-android-root - NoHello - A Zygisk module to hide root. `FOSS` `[M]` (Root Apps / Root Specific)
README
Zygisk NoHello
A Zygisk module to hide root.
![]()
![]()
Report Bug
·
Request Feature
·
Latest Release> [!NOTE]
> This module currently focuses to hide root & zygisk from apps.
> Updates will gradually implements changes and fixes.## About The Project
Using the **release** build is recommended over the debug build. Only use debug builds if you are going to make a bug report.
## Usage
### KernelSU & KernelSU Next users:
1. Install ZygiskNext or ReZygisk.
2. Make sure the unmount setting is enabled for the target app in the Manager.
3. Disable Umount modules in settings for Manager (if exists).
4. Disable `Enforce DenyList` in ZygiskNext/ReZygisk settings if there is one.### APatch users:
1. Install ZygiskNext or ReZygisk.
2. Make sure the unmount setting is enabled for the target app in the Manager.
3. Disable `Enforce DenyList` in ZygiskNext/ReZygisk settings if there is one.### Magisk users:
1. Update your Magisk to 28.0 or newer for better hiding capabilities. (optional)
2. Turn on Zygisk in Magisk settings (unrecommended) or install ZygiskNext/ReZygisk.
3. Turn off `Enforce DenyList` in Magisk settings.
4. Disable `Enforce DenyList` in ZygiskNext/ReZygisk settings if there is one. (if installed)
5. Add the target app to the deny list unless you're using a Magisk fork with a white list instead.## Whitelisting (0.0.4+)
You can set the working mode to **whitelist** (instead of the default **blacklist**) by creating an empty regular file `/data/adb/nohello/whitelist`.
>[!WARNING]
> Using **Mount Rule System** with **whitelist**, can cause severe overheating & performance issues, due to how MRS being evaluated each time a process spawns.This can be solved if you make NoHello evaluates Mount Rule System per boot/companion instance, by creating an empty regular file `/data/adb/nohello/umount_persist`/`data/adb/nohello/umount_persists`
## Mount Rule System
**Since version 0.0.5**, NoHello introduces **Mount Rule System**.
This allows users to define **rules** that control how mount points are evaluated for **auto-unmounting**.
Rules are fully configurable and match based on mount point properties like root path, mount path, filesystem type, or source.
**MountRules** can be customized via `/data/adb/nohello/umount`.### Rule Format
A rule is made up of **sections**, each consisting of a **keyword**, followed by a list of values enclosed in `{}`:
```
{ ... }
```Valid **keywords** are:
| Keyword | Matches against | Supports Wildcards | Description |
|----------|-------------------------|----------------------------------------------------------|-------------|
| `root` | Root path of the mount | Yes (`*`, escape by `\*`) | Root of the mount in `/proc/self/mountinfo` |
| `point` | Mount point path | Yes (`*`, escape by `\*` only at the beginning & ending) | Where the filesystem is mounted |
| `fs` | Filesystem type | No | Matches exact filesystem type, e.g. `ext4`, `erofs`, etc |
| `source` | Source device or file | Yes (`*`, escape by `\*`) | e.g., `/dev/block/xyz`, `magisk`, etc |### Example Rules
#### Match all `tmpfs` filesystems mounted under `/data/adb`:
```
fs { "tmpfs" } point { "/data/adb/*" }
```#### Match anything mounted from a `tmpfs` source:
```
source { "tmpfs" }
```#### Match a specific mount path exactly:
```
point { "/mnt/specific/path" }
```#### Match any source ending with `data`:
```
source { "*data" }
```#### Match root path starting with `/acct` and fs type `cgroup`:
```
root { "/acct*" } fs { "cgroup" }
```### Quoting Values
You can quote values with **single or double quotes**:
```
point { "/mnt/with space" '/custom\ path' }
```You may escape characters like `*`, `{`, `}`, and `"` using backslashes (`\`) if needed.
### Wildcard Behavior
Wildcards are supported only in `root`, `point`, and `source`. The supported patterns are:
- `*value*`: matches substring anywhere
- `*value`: matches suffix
- `value*`: matches prefix
- Exact match without `*`>[!NOTE]
> - You can define **multiple rules**, each as a separate line.
> - All rules are evaluated independently.
> - Matching is case-sensitive and optimized for performance.## Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
Don't forget to give the project a star! Thanks again!1. Fork the Project.
2. Create your Feature Branch (`git checkout -b feature/FeatureName`)
3. Commit your Changes (`git commit -m 'Add some FeatureName'`)
4. Push to the Branch (`git push origin feature/FeatureName`)
5. Open a Pull Request.## Acknowledgement
- [Zygisk Assistant](https://github.com/snake-4/Zygisk-Assistant)
## LICENSE
This project is licensed under the [MIT License](https://opensource.org/licenses/MIT).