This repository contains a Chrome extension management tool implemented in three programming languages: Rust, C++, and JavaScript. Each implementation provides functionality to install and uninstall Chrome extensions in developer mode. Note: This tool is intended solely for testing and learning purposes. It must not be used for any unethical or malicious activities.
This tool allows you to:
- Install a Chrome extension by extracting its
.zip
package into the appropriate browser directories. - Uninstall a Chrome extension with its name by removing its files and updating browser preferences.
Each implementation supports the following key operations:
- Read and modify Chrome user profile directories.
- Handle file operations like extracting
.zip
files and modifying JSON configuration files. - Use cryptographic hashing (e.g., SHA256 and HMAC) for securing extension metadata.
-
Multi-language Support:
- Rust: Command-line interface for efficient operations.
- C++: GUI-based application with a tray icon for easy interaction.
- JavaScript: Node.js-based tool for quick execution in scripts or terminals.
-
Extension Management:
- Install extensions from
.zip
files. - Uninstall extensions by name.
- Modify Chrome preferences (
Preferences
andSecure Preferences
files).
- Install extensions from
-
Setup:
- Navigate to the
JS Project
directory. - Install dependencies:
npm install unzipper
- Navigate to the
-
Execution:
-
Install Extension:
node main.js -i <path_to_extension_zip>
Replace
<path_to_extension_zip>
with the full path to the.zip
file containing the Chrome extension. -
Uninstall Extension:
node main.js -u
-
-
Setup:
- Navigate to the
Rust Project
directory. - Build the project:
cargo build
- Navigate to the
-
Execution:
-
Install Extension:
target/debug/rust_project install <path_to_extension_zip>
Replace
<path_to_extension_zip>
with the path to the extension.zip
file. -
Uninstall Extension:
target/debug/rust_project uninstall <extension_name>
-
-
Setup:
- Open the
VS Project
in Visual Studio 2022. - Build the solution to generate the executable.
- Open the
-
Execution:
- Place an extension's zip file to same directory to the compiled executable and run the application.
- Use the tray icon to
Install
orUninstall
the extension.
- Extract the
.zip
file of the Chrome extension. - Parse the
manifest.json
file to retrieve the extension name. - Copy extracted files to the appropriate Chrome profile directory.
- Update
Preferences
andSecure Preferences
files to register the extension. - Secure the preferences with HMAC-SHA256 for Chrome integrity checks.
- Identify the extension directory and remove its files.
- Update
Preferences
andSecure Preferences
files to deregister the extension. - Recalculate and secure HMAC-SHA256 for modified preferences.
- SHA256:
- Used to generate a unique
extension ID
from the file path.
- Used to generate a unique
- HMAC-SHA256:
- Used to secure modified preferences and ensure integrity.
.
├── JS Project/ # JavaScript implementation
├── Rust Project/ # Rust implementation
├── VS Project/ # C++ implementation (Visual Studio 2022)
├── extension_changesearchengine.zip # Test Chrome extension
├── .gitignore
├── README.md # Project documentation
This project is open-source and distributed under the MIT License.
Special thanks to the contributors for implementing this tool in multiple languages and ensuring its functionality across different environments.