{"id":28572126,"url":"https://github.com/MhmRdd/NoHello","last_synced_at":"2025-06-10T20:03:30.841Z","repository":{"id":292924268,"uuid":"982210092","full_name":"MhmRdd/NoHello","owner":"MhmRdd","description":"A Zygisk module to hide root.","archived":false,"fork":false,"pushed_at":"2025-05-31T03:11:57.000Z","size":167,"stargazers_count":301,"open_issues_count":6,"forks_count":24,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-05-31T14:07:52.173Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MhmRdd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-12T14:34:09.000Z","updated_at":"2025-05-31T12:36:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"b7e15355-2ad6-4103-9e6d-3c3dd5cfaf85","html_url":"https://github.com/MhmRdd/NoHello","commit_stats":null,"previous_names":["mhmrdd/nohello"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MhmRdd%2FNoHello","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MhmRdd%2FNoHello/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MhmRdd%2FNoHello/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MhmRdd%2FNoHello/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MhmRdd","download_url":"https://codeload.github.com/MhmRdd/NoHello/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MhmRdd%2FNoHello/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259143567,"owners_count":22811904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-10T20:01:37.433Z","updated_at":"2025-06-10T20:03:30.831Z","avatar_url":"https://github.com/MhmRdd.png","language":"C++","readme":"\u003ch2 align=\"center\"\u003eZygisk NoHello\u003c/h2\u003e\n\u003cp align=\"center\"\u003e\n  A Zygisk module to hide root.\n  \u003c/br\u003e\n  \u003c/br\u003e\n  \u003ca href=\"https://github.com/MhmRdd/NoHello/actions/workflows/build.yml\"\u003e\n    \u003cimg src=\"https://github.com/MhmRdd/Il2Dump/actions/workflows/build.yml/badge.svg?branch=master\" alt=\"Android CI status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"\u003e\n  \u003c/a\u003e\n  \u003c/br\u003e\n  \u003ca href=\"https://github.com/MhmRdd/NoHello/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n  \u003ca href=\"https://github.com/MhmRdd/NoHello/issues\"\u003eRequest Feature\u003c/a\u003e\n    ·\n  \u003ca href=\"https://github.com/MhmRdd/NoHello/releases\"\u003eLatest Release\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e [!NOTE]\n\u003e This module currently focuses to hide root \u0026 zygisk from apps.\n\u003e Updates will gradually implements changes and fixes.\n\n## About The Project\n\nUsing the **release** build is recommended over the debug build. Only use debug builds if you are going to make a bug report.\n\n## Usage\n\n### KernelSU \u0026 KernelSU Next users:\n1. Install ZygiskNext or ReZygisk.\n2. Make sure the unmount setting is enabled for the target app in the Manager.\n3. Disable Umount modules in settings for Manager (if exists).\n4. Disable `Enforce DenyList` in ZygiskNext/ReZygisk settings if there is one.\n\n### APatch users:\n1. Install ZygiskNext or ReZygisk.\n2. Make sure the unmount setting is enabled for the target app in the Manager.\n3. Disable `Enforce DenyList` in ZygiskNext/ReZygisk settings if there is one.\n\n### Magisk users:\n1. Update your Magisk to 28.0 or newer for better hiding capabilities. (optional)\n2. Turn on Zygisk in Magisk settings (unrecommended) or install ZygiskNext/ReZygisk.\n3. Turn off `Enforce DenyList` in Magisk settings.\n4. Disable `Enforce DenyList` in ZygiskNext/ReZygisk settings if there is one. (if installed)\n5. Add the target app to the deny list unless you're using a Magisk fork with a white list instead.\n\n## Whitelisting (0.0.4+)\nYou can set the working mode to **whitelist** (instead of the default **blacklist**) by creating an empty regular file `/data/adb/nohello/whitelist`.\n\u003e[!WARNING]\n\u003e Using **Mount Rule System** with **whitelist**, can cause severe overheating \u0026 performance issues, due to how MRS being evaluated each time a process spawns.\n\nThis 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`\n\n## Mount Rule System\n\n**Since version 0.0.5**, NoHello introduces **Mount Rule System**.\u003c/br\u003e\nThis allows users to define **rules** that control how mount points are evaluated for **auto-unmounting**.\u003c/br\u003e\nRules are fully configurable and match based on mount point properties like root path, mount path, filesystem type, or source.\u003c/br\u003e\n**MountRules** can be customized via `/data/adb/nohello/umount`.\n\n### Rule Format\n\nA rule is made up of **sections**, each consisting of a **keyword**, followed by a list of values enclosed in `{}`:\n\n```\n\u003ckeyword\u003e { \u003cvalue1\u003e \u003cvalue2\u003e ... }\n```\n\nValid **keywords** are:\n\n| Keyword  | Matches against         | Supports Wildcards                                       | Description |\n|----------|-------------------------|----------------------------------------------------------|-------------|\n| `root`   | Root path of the mount  | Yes (`*`, escape by `\\*`)                                | Root of the mount in `/proc/self/mountinfo` |\n| `point`  | Mount point path        | Yes (`*`, escape by `\\*` only at the beginning \u0026 ending) | Where the filesystem is mounted |\n| `fs`     | Filesystem type         | No                                                       | Matches exact filesystem type, e.g. `ext4`, `erofs`, etc |\n| `source` | Source device or file   | Yes (`*`, escape by `\\*`)                                | e.g., `/dev/block/xyz`, `magisk`, etc |\n\n### Example Rules\n\n#### Match all `tmpfs` filesystems mounted under `/data/adb`:\n```\nfs { \"tmpfs\" } point { \"/data/adb/*\" }\n```\n\n#### Match anything mounted from a `tmpfs` source:\n```\nsource { \"tmpfs\" }\n```\n\n#### Match a specific mount path exactly:\n```\npoint { \"/mnt/specific/path\" }\n```\n\n#### Match any source ending with `data`:\n```\nsource { \"*data\" }\n```\n\n#### Match root path starting with `/acct` and fs type `cgroup`:\n```\nroot { \"/acct*\" } fs { \"cgroup\" }\n```\n\n### Quoting Values\n\nYou can quote values with **single or double quotes**:\n\n```\npoint { \"/mnt/with space\" '/custom\\ path' }\n```\n\nYou may escape characters like `*`, `{`, `}`, and `\"` using backslashes (`\\`) if needed.\n\n### Wildcard Behavior\n\nWildcards are supported only in `root`, `point`, and `source`. The supported patterns are:\n\n- `*value*`: matches substring anywhere\n- `*value`: matches suffix\n- `value*`: matches prefix\n- Exact match without `*`\n\n\n\u003e[!NOTE]\n\u003e - You can define **multiple rules**, each as a separate line.\n\u003e - All rules are evaluated independently.\n\u003e - Matching is case-sensitive and optimized for performance.\n\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf 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\".\nDon't forget to give the project a star! Thanks again!\n\n1. Fork the Project.\n2. Create your Feature Branch (`git checkout -b feature/FeatureName`)\n3. Commit your Changes (`git commit -m 'Add some FeatureName'`)\n4. Push to the Branch (`git push origin feature/FeatureName`)\n5. Open a Pull Request.\n\n\n## Acknowledgement\n\n- [Zygisk Assistant](https://github.com/snake-4/Zygisk-Assistant)\n\n## LICENSE\n\nThis project is licensed under the [MIT License](https://opensource.org/licenses/MIT).\n\n","funding_links":[],"categories":["others","🔐 Root Management","C++"],"sub_categories":["Root Hiding and Play Integrity"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMhmRdd%2FNoHello","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMhmRdd%2FNoHello","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMhmRdd%2FNoHello/lists"}