{"id":46576111,"url":"https://github.com/maxsteeel/nomount","last_synced_at":"2026-03-07T09:35:30.358Z","repository":{"id":331560417,"uuid":"1128821046","full_name":"maxsteeel/nomount","owner":"maxsteeel","description":"A metamodule that replaces OverlayFS/MagicMount with VFS path inyection. Requires kernel integration.","archived":false,"fork":false,"pushed_at":"2026-03-02T19:52:34.000Z","size":273,"stargazers_count":28,"open_issues_count":1,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-03-02T22:11:33.366Z","etag":null,"topics":["beta","testing"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxsteeel.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-06T07:43:00.000Z","updated_at":"2026-03-02T19:52:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/maxsteeel/nomount","commit_stats":null,"previous_names":["maxsteeel/nomount"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/maxsteeel/nomount","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxsteeel%2Fnomount","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxsteeel%2Fnomount/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxsteeel%2Fnomount/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxsteeel%2Fnomount/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxsteeel","download_url":"https://codeload.github.com/maxsteeel/nomount/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxsteeel%2Fnomount/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30210852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T09:02:10.694Z","status":"ssl_error","status_checked_at":"2026-03-07T09:02:08.429Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["beta","testing"],"created_at":"2026-03-07T09:35:29.746Z","updated_at":"2026-03-07T09:35:30.312Z","avatar_url":"https://github.com/maxsteeel.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NoMount\n\n\u003e WARNING: This project is in beta and may contain bugs.\n\n**NoMount** is a kernel-based file injection and path redirection framework for Android kernels.\n\nUnlike traditional root solutions that rely on `mount --bind` (which pollutes `/proc/mounts`, changes mount namespaces, and is easily detected), NoMount operates **purely at the VFS (Virtual File System) layer**. It manipulates path resolution and directory iteration directly inside the kernel, making injections effective yet virtually invisible to userspace detection methods.\n\n## Why NoMount?\n\nTraditional methods (such a Magic Mount) modify the mount table. Anti-cheat and banking apps scan `/proc/self/mountinfo` to find these anomalies.\n\n**NoMount changes the paradigm:**\n\n1. **Zero Mounts:** No `mount()` syscalls are ever used. The mount table remains 100% stock.\n2. **Visual Injection:** Uses advanced `readdir` hooking to make \"new\" files appear in read-only directories (like `/vendor`) without physically touching the partition.\n3. **Permission Bypass:** Bypasses filesystem permission checks for injected files, preventing crashes without modifying file attributes.\n4. **Linker-Friendly:** Includes \"Selective Path Spoofing\" to satisfy the Android Linker's namespace isolation (vital for injecting `.so` libraries).\n\n## Key Features\n\n* **Ghost Redirection:** Redirects a target path (e.g., `/vendor/etc/audio.conf`) to a source file in `/data`. The app reads your file, but believes it's reading the original.\n* **Virtual File Injection:** Inject completely new files into system directories. They appear in `ls`, file managers, and `File.list()` calls thanks to kernel-level directory entry injection.\n* **Security Context Bypass:** Hooks `inode_permission` to grant access to injected files regardless of their actual owner/group in `/data`.\n* **UID Filtering:** Built-in \"Invisibility Cloak\". You can block specific UIDs (apps) from seeing any injections, effectively isolating them from the modification.\n\n## Architecture\n\nNoMount moves away from complex metadata spoofing and relies on **surgical VFS hooks**:\n\n1. **`fs/nomount.c`**: The core logic hub. Handles the hash tables, rule resolution, and injection strategies.\n2. **`fs/namei.c`**: Intercepts path lookups. If a rule exists, it quietly switches the path pointer to your custom file.\n3. **`fs/readdir.c`**: The \"Visual\" engine. It intercepts directory listing calls (`getdents64`), injecting virtual entries into the buffer so apps \"see\" files that don't exist.\n4. **`fs/d_path.c`**: Performs selective path masking, primarily to allow injected libraries to pass Android's Linker Namespace restrictions.\n\n## Integration \u0026 Build\n\nNoMount is designed as a drop-in kernel subsystem.\n\n### 1. Apply the Patch\n\nApply the provided patch to your kernel source (Compatible with Linux 4.14 ~ 6.x):\n\n```bash\ncd your_kernel_source/\npatch -p1 --fuzz=10 \u003c nomount-kernel-5.4.patch\n\n```\n\n### 2. Configure\n\nEnable the subsystem in your `defconfig` or via `menuconfig`:\n\n```makefile\nCONFIG_NOMOUNT=y\n\n```\n\n### 3. Compile\n\nBuild your kernel image as usual. NoMount adds negligible overhead (~1KB binary size).\n\n## Usage (Userspace)\n\nControl the subsystem using the `nm` binary.\n\n| Command | Syntax | Description |\n| --- | --- | --- |\n| **Add Rule** | `nm add \u003cvirtual\u003e \u003creal\u003e` | Inject `real` file at `virtual` path. |\n| **Delete Rule** | `nm del \u003cvirtual\u003e` | Remove a specific injection rule. |\n| **Add UID Block** | `nm block \u003cuid\u003e` | Hide all injections from this UID. |\n| **Del UID Block** | `nm unblock \u003cuid\u003e` | Allow this UID to see injections again. |\n| **List Rules** | `nm list` | Show injected files |\n| **Clear All** | `nm clear` | Flush all rules and blocks immediately. |\n| **Version** | `nm ver` | Show the kernel subsystem version. |\n\n### Examples\n\n**Inject a custom library:**\n\n```bash\n# The system thinks libfoo.so is in /vendor, but it loads from /data\nnm add /vendor/lib64/soundfx/libfoo.so /data/local/tmp/my_lib.so\n\n```\n\n**Replace a config file:**\n\n```bash\n# Instantly replace audio configs system-wide\nnm add /vendor/etc/audio_effects.conf /data/adb/modules/my_mod/audio_effects.conf\n\n```\n\n**Hide root from a banking app:**\n\n```bash\n# App with UID 10256 will see the stock system, no injections\nnm block 10256\n\n```\n\n## Special thanks:\n\n-  **[HymoFS](https://github.com/Anatdx/HymoFS)**: Inspiration for this project.\n-  **[A7mdwassa](https://github.com/A7mdwassa)**: Tester and contributor.\n-  **[backslashxx](https://github.com/backslashxx)**: Code optimization.\n-  **[KernelSU](https://github.com/tiann/KernelSU)**: Root solution.\n\n## Disclaimer\n\n**NoMount** is a powerful kernel modification tool intended for research and development. Modifying kernel behavior carries inherent risks, including system instability or data loss. The developers are not responsible for bricked devices or thermonuclear war.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxsteeel%2Fnomount","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxsteeel%2Fnomount","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxsteeel%2Fnomount/lists"}