Anti Anti-debugger

Stops most anti debugging implementations by JavaScript obfuscaters, and stops the console logs from being automatically cleared.

目前為 2022-08-15 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Anti Anti-debugger
// @namespace    https://greasyfork.org/en/users/670188-hacker09?sort=daily_installs
// @version      1
// @description  Stops most anti debugging implementations by JavaScript obfuscaters, and stops the console logs from being automatically cleared.
// @author       hacker09
// @include      *
// @grant        unsafeWindow
// @run-at       document-start
// ==/UserScript==

(function() {
  var interval = setInterval(function() { //Creates a new interval function
    unsafeWindow.console.clear = () => {}; //Stops the console logs from being cleared
  }, 0); //Finishes the set interval function

  window.onload = function() //When the page finishes loading
  { //Starts the onload function
    clearInterval(interval); //Breaks the timer that stops the console log from being cleared every 0 secs
  } //Finishes the onload function

  var _constructor = unsafeWindow.Function.prototype.constructor;
  unsafeWindow.Function.prototype.constructor = function() { //Hook Function.prototype.constructor
    var fnContent = arguments[0];
    if (fnContent) {
      if (fnContent.includes('debugger')) { //An anti-debugger is attempting to stop debugging
        var caller = Function.prototype.constructor.caller; // Non-standard hack to get the function caller
        var callerContent = caller.toString();
        if (callerContent.includes(/\bdebugger\b/gi)) { //Eliminate all debugger statements from the caller, if any
          callerContent = callerContent.replace(/\bdebugger\b/gi, ''); //Remove all debugger expressions
          eval('caller = ' + callerContent); //Replace the function
        }
        return (function() {});
      }
    }
    return _constructor.apply(this, arguments); //Execute the normal function constructor if nothing unusual is going on
  };
})();