Devtools Blocking
Protection ID: devtoolsBlocking
Devtools Blocking is an advanced security feature that detects when browser developer tools are opened and takes defensive actions to protect your code. When developer tools are detected, this protection terminates the application's execution and removes sensitive code from memory, preventing reverse engineering attempts.
This protection is available in all editions of ByteHide Shield.
How It Works
Devtools Blocking works by constantly monitoring for the presence of browser developer tools. When it detects that the developer tools are open, it immediately:
- Terminates the application's execution
- Removes sensitive code from memory
- Prevents further analysis or manipulation of your code
This makes it extremely difficult for attackers to inspect your code or manipulate the application at runtime, providing a robust defense against reverse engineering and tampering attempts.
This protection is designed to break functionality when developer tools are open. Make sure to inform legitimate users who might use developer tools for troubleshooting that this will cause the application to stop working.
Parameters
- Enabled boolean : Enables Devtools Blocking protection. false by default
Configuration Examples
Basic Configuration (shield.config.json)
{
"devtoolsBlocking": true
}
Build Tool Integration (Webpack)
// webpack.config.js
const ByteHideShieldPlugin = require('@bytehide/webpack-shield');
module.exports = {
// ... other webpack config
plugins: [
new ByteHideShieldPlugin({
projectToken: 'your-project-token',
config: {
devtoolsBlocking: true
}
})
]
}
Implementation Details
Devtools Blocking uses multiple detection techniques to identify when developer tools are open:
- Size detection: Monitors window dimensions and detects changes that occur when developer tools are docked
- Performance analysis: Measures execution time differences that occur when debugging is active
- Feature detection: Tests for presence of features only available when developer tools are open
- Behavior analysis: Monitors for behavior patterns consistent with debugging activity
When developer tools are detected, the protection executes immediately, preventing further analysis of your code.
Code Example
Here's a conceptual example of how Devtools Blocking works (the actual implementation is more sophisticated and uses multiple detection methods):
// Simplified conceptual example (actual implementation is more complex)
(function() {
let devtoolsOpen = false;
// Size-based detection
function checkDevtools() {
const threshold = 160;
const widthThreshold = window.outerWidth - window.innerWidth > threshold;
const heightThreshold = window.outerHeight - window.innerHeight > threshold;
if (widthThreshold || heightThreshold) {
if (!devtoolsOpen) {
devtoolsOpen = true;
handleDevtoolsDetected();
}
} else {
devtoolsOpen = false;
}
}
// Timing-based detection
function checkTiming() {
const start = performance.now();
// Operation that's slow during debugging
for (let i = 0; i < 100; i++) {
console.log(i);
console.clear();
}
const end = performance.now();
const timeTaken = end - start;
if (timeTaken > 100) { // Threshold for suspected debugging
devtoolsOpen = true;
handleDevtoolsDetected();
}
}
function handleDevtoolsDetected() {
// Remove sensitive code from memory
const scripts = document.getElementsByTagName('script');
for (let i = 0; i < scripts.length; i++) {
if (scripts[i].getAttribute('data-protected') === 'true') {
scripts[i].textContent = '';
scripts[i].remove();
}
}
// Terminate execution
throw new Error("Security violation detected");
// Additional cleanup could happen here
}
// Run checks periodically
setInterval(checkDevtools, 1000);
setTimeout(checkTiming, 500);
// Additional detection methods would be implemented here
})();
The actual implementation includes multiple detection techniques and is heavily obfuscated to prevent bypassing.
When to Use
Devtools Blocking is particularly valuable in these scenarios:
- Premium web applications: Protect paid content from unauthorized access
- Financial applications: Add an extra layer of security for sensitive operations
- License enforcement: Prevent tampering with license verification mechanisms
- Anti-cheating measures: Prevent users from modifying game or quiz mechanics
For optimal implementation:
- Use in production builds only, not during development
- Consider the user experience impact when legitimate users might open developer tools
- Combine with other Shield protections for maximum security
- Provide clear information to users about why the application won't work with developer tools open
Compatibility Notes
Devtools Blocking has the following compatibility considerations:
- Browser compatibility: Works in all major browsers (Chrome, Firefox, Safari, Edge)
- Target environment: Only effective in browser environments (not Node.js)
- Legitimate developers: Will prevent legitimate developers from debugging, which may affect support scenarios
- False positives: Some browser extensions or configurations might trigger the protection incorrectly
This protection is designed to be aggressive in preventing developer tools usage. Make sure this aligns with your application's use case and user expectations.
Related Protections
For maximum security, combine Devtools Blocking with: