A Android app hiding plugin for the Albatross Hook Framework. This project provides two different approaches to hide applications from the system and other apps.
- Overview
- Features
- Architecture
- Installation
- Usage
- Configuration
- Technical Details
- Contributing
- License
HideApp is designed to work with the Albatross Hook Framework to provide application hiding capabilities on Android devices. It offers two distinct implementation approaches:
- System-Level Hook (
insystem) - Recommended for production use - App-Level Hook (
inapp) - Ideal for learning and research purposes
- Global App Hiding: Hides apps system-wide for all applications
- Per-App Rules: Configure hiding rules for specific applications
- System Server Integration: Hooks into PackageManagerService for comprehensive coverage
- UID-Based Filtering: Uses UID-based rules for precise control
- Production Ready: Stable and reliable for daily use
- Targeted Hiding: Hides apps only for the specific application using the plugin
- Educational Value: Perfect for understanding app-level hooking techniques
- Package Manager Hooks: Intercepts PackageManager API calls
- Research Tool: Ideal for studying how app-level hooks work
HideApp/
├── inapp/ # App-level hook implementation
│ ├── HideAppPlugin.java # Main plugin class
│ ├── IPackageManagerH.java # PackageManager hook implementation
│ └── PluginConfigActivity.java # Configuration UI
├── insystem/ # System-level hook implementation
│ ├── HideAppSystemPlugin.java # Main plugin class
│ ├── PackageManagerServiceH.java # System service hooks
│ ├── ComputerEngineH.java # Additional system hooks
│ ├── AppsFilterBaseH.java # App filtering hooks
│ └── PluginConfigActivity.java # Configuration UI
└── lib/
└── albatross.jar # Albatross framework library
- Android device with root access
- AlbatrossManager installed
- Android Studio 2025.1.2 Patch 2 or compatible IDE
-
Clone the repository
git clone <repository-url> cd HideApp
-
Build the project
./gradlew build
-
Install the plugins
# Install system-level plugin (recommended) adb install insystem/build/outputs/apk/release/insystem-release.apk # Or install app-level plugin (for research) adb install inapp/build/outputs/apk/release/inapp-release.apk
- Install the system plugin to device and add plugin in AlbatrossManager
- Configure hiding rules using the format:
package1:rule1,rule2|package2:rule3,rule4 - Set target applications that should have these hiding rules applied
- Activate the plugin through AlbatrossManager
- Install the app plugin to device and add plugin in AlbatrossManager
- Configure package list using comma-separated package names
- Apply to specific app that needs hiding functionality
- Test and observe how app-level hooks work
Rule Format: packageName:hideRule1,hideRule2|packageName2:hideRule3
Example:
com.example.app1:com.target.app1,com.target.app2|com.example.app2:com.target.app3
This means:
com.example.app1will hidecom.target.app1andcom.target.app2com.example.app2will hidecom.target.app3
Package List: Comma-separated package names to hide
Example:
com.target.app1,com.target.app2,com.target.app3
The system-level implementation hooks into:
- PackageManagerService: Core package management service
- ComputerEngine: Package resolution engine
- AppsFilterBase: Application filtering system
Key Methods Hooked:
applyPostResolutionFilter()- Filters resolved intentsfilterAppAccessLPr()- Controls app access permissionsgetInstalledApplicationsListInternal()- Filters installed apps listgetInstalledPackages()- Filters package information
The app-level implementation hooks into:
- IPackageManager: Package manager interface
- ResolveInfo: Intent resolution information
Key Methods Hooked:
queryIntentActivities()- Filters activity queriesqueryIntentServices()- Filters service queriesqueryIntentReceivers()- Filters receiver queriesgetPackageInfo()- Filters package informationgetInstalledPackages()- Filters installed packages
Both plugins extend AlbatrossPlugin and implement:
load()- Plugin initializationparseParams()- Parameter parsingbeforeApplicationCreate()- Pre-application setuponConfigChange()- Configuration updates
The inapp module serves as an excellent learning resource for:
- PackageManager API Hooking: Learn how to intercept package queries
- Intent Resolution Hooking: Understand how to filter intent resolution
- App-Level Security: Study app-level hiding techniques
- Hook Implementation: See practical examples of hook implementation
- How to hook PackageManager methods
- Intent resolution filtering techniques
- ParceledListSlice manipulation
- ComponentInfo extraction and filtering
- Error handling in hook implementations
- Follow the existing code style
- Add appropriate comments for complex logic
- Test both system and app-level implementations
- Update documentation for new features
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.