$ show 5ec1cff/FuseFixer
FuseFixer is an Android Xposed module that hooks into the MediaProvider's FUSE daemon to prevent package name existence leakage via Unicode Default_Ignorable_Code_Points. The module intercepts path comparison functions (strcasecmp, EqualsIgnoreCase) and access control checks (is_package_owned_path, is_app_accessible_path, is_bpf_backing_path) in the native libfuse_jni.so library, stripping out ignorable code points before evaluation. This closes a vulnerability where attackers could bypass directory access restrictions on /storage/emulated/.../Android/data by inserting invisible Unicode characters. The project includes a custom ELF parser for dynamic symbol resolution, a maps scanner, and a debug UI for testing. The native code is written in C++20 and demonstrates deep understanding of Android's FUSE implementation, kernel casefold behavior, and FUSE BPF internals.
The LLM identified 3 files worth highlighting for reuse:
Core hooking logic implementing a custom case-insensitive string comparison (svcasecmp_fix) that skips Unicode Default_Ignorable_Code_Points. Also provides remove_default_ignorable_code_point and is_default_ignorable_code_point functions. These are self-contained and reusable in any project requiring Unicode-aware string normalization for security or matching purposes.
A high-quality, reusable ELF parser supporting both file and in-memory parsing. Handles GNU hash, ELF hash, linear symbol lookup, PLT address resolution, and XZ-compressed .gnu_debugdata sections. Demonstrates advanced understanding of ELF format and can be extracted for use in any Android native tooling or reverse engineering project.
A clean, reusable utility to parse /proc/self/maps entries. Provides a callback-based iteration API and a vector-based scan with optional filtering. Can be extracted for any project needing to inspect process memory mappings.