@bytehide/webpack4-shield
v1.0.0
Published
Webpack 4 plugin for ByteHide Shield obfuscation.
Readme
Bytehide Shield - Webpack 4
Bytehide Shield is a suite of tools designed to protect and obfuscate your JavaScript project code during the build process. This version is specifically designed for Webpack 4 compatibility.
Introduction
Bytehide Shield improves the security of your applications through advanced code obfuscation, preventing reverse engineering and making tampering attempts more difficult. This plugin is designed to integrate seamlessly with Webpack 4 projects.
Webpack 4 Plugin
Installation
Install the Webpack 4 plugin using npm or yarn:
npm install @bytehide/webpack4-shield --save-dev
# or
yarn add --dev @bytehide/webpack4-shieldUsage
Add the plugin to your Webpack 4 configuration:
const ByteHideShieldPlugin = require('@bytehide/webpack4-shield');
module.exports = {
// ... previous configuration ...
plugins: [
new ByteHideShieldPlugin({
projectToken: 'your_project_token_here', // Replace with your Bytehide project token
replace: false, // Whether to replace original files
obfuscatedExtension: '.obf', // Extension for obfuscated files
exclude: [], // Array of files to exclude from obfuscation
config: {
controlFlowFlattening: true,
debugProtection: false,
devtoolsBlocking: false,
},
include: ['.js', '.mjs', '.cjs', '.jsx'], // File extensions to process
}),
],
};Key Differences from Webpack 5 Version
This version has been specifically adapted for Webpack 4 compatibility:
API Changes
- Plugin Registration: Uses
compiler.plugin('emit', ...)instead ofcompiler.hooks.emit.tapAsync() - Asset Creation: Uses function-based asset objects compatible with Webpack 4
- Promise Handling: Adapted async handling for Webpack 4's callback-based system
Webpack 4 Specific Features
- Compatible with Webpack 4.0.0 and above
- Uses legacy plugin API for maximum compatibility
- Optimized for Webpack 4's asset processing system
Requirements
- Node.js: >= 8.0.0
- Webpack: ^4.0.0
- Webpack CLI: ^3.3.12
- Webpack Dev Server: ^3.11.3
Features
- Advanced Obfuscation: Implements obfuscation techniques to protect your code.
- Custom Control: Configure options like
controlFlowFlattening,debugProtection, anddevtoolsBlocking. - Compatibility: Processes
.js,.mjs,.cjs, and.jsxfiles. - Webpack 4 Optimized: Fully compatible with Webpack 4's plugin system.
Example Output
If you have an index.js file with this content:
console.log("Hello, world!");The processed result will include a unique marker and the obfuscated code:
// _0xBHSHLD_<uniqueId>_marker
console.log(_0x123456("Hello, world!"));Configuration Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| projectToken | string | '' | Your Bytehide project token |
| replace | boolean | false | Whether to replace original files |
| obfuscatedExtension | string | '.obf' | Extension for obfuscated files |
| exclude | array | [] | Files to exclude from obfuscation |
| include | array | ['.js', '.mjs', '.cjs', '.jsx'] | File extensions to process |
| config.controlFlowFlattening | boolean | true | Enable control flow flattening |
| config.debugProtection | boolean | false | Enable debug protection |
| config.devtoolsBlocking | boolean | false | Enable devtools blocking |
Common Errors
- Network Error: Ensure you have an active internet connection as the plugin uses a remote service for code obfuscation.
- Invalid Token: Verify that the project token is valid.
- Webpack Version: Ensure you're using Webpack 4.x. For Webpack 5+, use
@bytehide/webpack-shieldinstead.
Migration from Webpack 5
If you're downgrading from Webpack 5 or need Webpack 4 compatibility:
- Install this package:
npm install @bytehide/webpack4-shield - Update your webpack config to require this package instead
- No configuration changes needed - all options remain the same
Webpack 4 vs 5 Comparison
| Feature | Webpack 4 | Webpack 5 |
|---------|-----------|-----------|
| Plugin API | compiler.plugin() | compiler.hooks.emit.tapAsync() |
| Asset Objects | Function-based | Arrow function syntax |
| Node.js Support | >= 8.0.0 | >= 10.13.0 |
| Package Name | @bytehide/webpack4-shield | @bytehide/webpack-shield |
Contributing
Have ideas or suggestions? We'd love to hear from you! Open an issue or submit a pull request on the GitHub repository.
License
Bytehide Shield is available under the MIT License. Feel free to use it for personal and commercial projects.
Happy coding but keep it safe with @bytehide/webpack4-shield! 🛡️
Note: This is the Webpack 4 compatible version. For Webpack 5+, use @bytehide/webpack-shield.
