Skip to content

Latest commit

 

History

History
244 lines (161 loc) · 7.35 KB

File metadata and controls

244 lines (161 loc) · 7.35 KB

中文  English

You are the visitors persons(times) to visit the stop-debugger.

stop-debugger

Most of the content on this page is translated through Google Translate

A Chrome Extension and system proxy for disable the debugger function in Chrome DevTools

一个禁止Chrome DevTools中执行debugger的拓展和系统代理

Running Result

  • TurnOff

TurnOff.gif

  • TurnOn

TurnOn.gif

The principle of architecture

  • Proxy

theory.png

Instructions for use

This program is divided into two parts: chrome browser extension and Node system agent.

  • Chrome browser extension

    The chrome browser extension is used to cover the feature functions of the browser. The source code of the browser extension is in the directory of chrome-extension. The extension needs to be installed in the browser before use. After the extension is installed, the extension needs to be turned on to take effect.

    Detailed description of the offline installation method of Chrome plug-in

  • Node system agent

    The Node system agent is used to process the debugger appearing in files such as javascript, html, and json, use specific regular expressions to match the debugger`, and annotate the corresponding code.

git clone https://github.com/kajweb/stop-debugger.git
cd stop-debugger/proxy-serve 
cd proxy-serve
npm i
npm run en

The https link needs to install the certificate to the Trusted Root Certification Authority, otherwise it may not be able to process HTTPS requests.

For win7 and win10 systems, the system program will be called to import the certificate into the system when the Node client is running.

Other systems currently do not support automatic certificate import.

Test Address

We provide a relatively rich test page to test the debugger. You can open the Chrome DevTools and click the corresponding item to view the running result.

Debugger Usability Test Address

Directory Structure

Directory name Function
depoly github page deployment page, used to provide developers to test the debugger operation
proxy-serve Node proxy server code. Debugger for blocking plaintext
chrome-extension Source code of chrome extension. Used to shield specific functions that can execute the debugger method,
Such as Function(), ʻeval(), Function.prototype.constructor` and other methods
cert Certificate directory. The code used to generate the CA certificate and sign the client certificate.
In fact, the generated CA certificate has been copied from /cert/ca to /proxy-serve/src/cert.
Subsequent client issuing certificates are taken over by /proxy-serve/src/cert/index.js, developers do not need to pay much attention to this directory.
dev Program test development directory, most of which are meaningless codes.
It is only used for various experimental tests during the development process, and developers do not need to pay too much attention to this directory.
docs System documentation directory, covering documents in various languages,

Support Plan

Can be in deploy, or open online test page

    • debugger without semicolon

This type of code is processed by proxy-serve

let a = 1, b = 2;
debugger
let c = a+b;
    • debugger with semicolon

This type of code uses proxy-serve for processing

let a = 1, b = 2;
debugger;
let c = a+b;
    • (multi-statement) debugger with statement after it

This type of code uses proxy-serve for processing

let a = 1, b = 2;
debugger;let c = a+b;
    • (multiple statements) debugger with statements before and after

This type of code uses proxy-serve for processing

let a = 1,b = 2;debugger;let c = a+b;
    • (multi-statement) debugger with statement in front

This type of code uses proxy-serve for processing

let a = 1, b = 2; debugger
let c = a+b;
    • Debugger generated by Function

This type of code is processed using chrome-extension

let fn = new Function("debu"+"gger");
fn()
    • Multi-parameter debugger generated by Function

This type of code is processed using chrome-extension

let fn = new Function("x","debugger");
fn()
    • Prevent simple detection

This type of code is processed using chrome-extension

let a = ";debugger;"
if( a!==";debug" + "ger;" ){
console.log("User Behavior Abnormal")
}
debugger
    • Use eval to execute debugger

This type of code is processed using chrome-extension

eval("debugger");
    • Use Function to execute debugger

This type of code is processed using chrome-extension

// https://blog.csdn.net/zhsworld/article/details/104660742
Function.prototype.constructor("debugger")()
    • Use Function to execute debugger (obfuscated)

This type of code will be processed with chrome-extension

// http://www.sc.10086.cn/service/login.html

let _0x2764ed = {
	wcluU: "debu",
	tvBGO: "gger",
	tOyvN: "action",	
	vyxZy(a,b){return a+b}
}

function xhs__0x4f79(e){
	switch(e){
		case '0x1e3':
			return "constructor";
			break;
		case '0x5c6':
			return "vyxZy";
			break;
		case '0x5ca':
			return "wcluU";
			break;
		case '0x5d0':
			return "tOyvN";
			break;
		default:
			throw new RangeError( e );
			break;
	}
}

(function() {}[xhs__0x4f79('0x1e3')](_0x2764ed[xhs__0x4f79('0x5c6')](_0x2764ed[xhs__0x4f79('0x5ca')], _0x2764ed['\x74\x76\x42\x47\x4f']))['\x63\x61\x6c\x6c'](_0x2764ed[xhs__0x4f79('0x5d0')]));

(function() {}["constructor"]("debugger")["call"]("action"));

Implementation Principle

RSS source: If you are interested in the implementation principle of this program, please follow kajweb's Blog - iwwee. I will update the thought, development process and thought principle of this program from time to time.

List of blog posts:

  • [Stop-debugger] debugger introduction
  • [Stop-debugger] Installation and development of browser extension
  • [Stop-debugger] HTTP proxy principle and implementation method
  • [Stop-debugger] Man-in-the-middle attack
  • [Stop-debugger] Differences and details between HTTP and HTTPS proxy
  • [Stop-debugger] Implement a simplest HTTP proxy
  • [Stop-debugger] Implement a simplest HTTPS proxy
  • [Stop-debugger] Normal proxy and tunnel proxy
  • [Stop-debugger] The principle and implementation of HTTP and HTTPS sharing a port
  • [Stop-debugger]……