{"id":22667166,"url":"https://github.com/weizman/awesome-javascript-anti-debugging","last_synced_at":"2025-08-06T14:32:02.303Z","repository":{"id":48127018,"uuid":"307421379","full_name":"weizman/awesome-javascript-anti-debugging","owner":"weizman","description":"javascript based browser anti debugging techniques resources","archived":false,"fork":false,"pushed_at":"2023-11-13T23:02:27.000Z","size":55,"stargazers_count":80,"open_issues_count":1,"forks_count":8,"subscribers_count":5,"default_branch":"main","last_synced_at":"2023-11-14T00:25:17.530Z","etag":null,"topics":["awesome","awesome-list","browser","javascript","security"],"latest_commit_sha":null,"homepage":"https://weizmangal.com/awesome-javascript-anti-debugging/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/weizman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-10-26T15:40:16.000Z","updated_at":"2023-11-14T00:25:19.034Z","dependencies_parsed_at":"2023-11-14T00:25:18.901Z","dependency_job_id":"f2551b40-5a9b-4f03-be34-3bb2f7c572c4","html_url":"https://github.com/weizman/awesome-javascript-anti-debugging","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weizman%2Fawesome-javascript-anti-debugging","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weizman%2Fawesome-javascript-anti-debugging/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weizman%2Fawesome-javascript-anti-debugging/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/weizman%2Fawesome-javascript-anti-debugging/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/weizman","download_url":"https://codeload.github.com/weizman/awesome-javascript-anti-debugging/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228906883,"owners_count":17990019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awesome","awesome-list","browser","javascript","security"],"created_at":"2024-12-09T14:39:45.154Z","updated_at":"2025-08-06T14:31:57.160Z","avatar_url":"https://github.com/weizman.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [Awesome Javascript Anti Debugging](https://github.com/weizman/awesome-javascript-anti-debugging/) [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\n\u003e Curated list of Javascript Anti Debugging techniques \n\nWhen it comes to Web Security there is a wide range of different aspects to it. \nThe most discussed aspect is the different types of security breaches, such as XSS, CSRF and more.\n\nJavascript Anti Debugging on the other hand is an aspect that is not disscued enough, but might have a large potential impact when it comes to attacking and defending in the web security world. \n\n*Please read the [contribution guidelines](https://github.com/qazbnm456/awesome-web-security/blob/master/CONTRIBUTING.md) of the [awesome-web-security](https://github.com/qazbnm456/awesome-web-security) repo before contributing - we follow similar guidelines here!*\n\n\u003e _By [Gal Weizman](https://weizman.github.io/website/)_\n\n## ATTENTION ⚠️\n\nYOU SHOULD PREFER THE [SERVED VERSION](https://weizmangal.com/awesome-javascript-anti-debugging/), WHERE YOU CAN ALSO INTERACT WITH LIVE DEMOS!\n\n## Contents\n\n- [Intro](#intro)\n  - [What Is Browser Anti Debugging?](#what-is-browser-anti-debugging)\n- [\"New Gen\" Techniques](#new-gen-technique)\n  - [SourceMappingURL](#sourcemappingurl)\n  - [Chromium Devtools Scope Pane](#ChromiumDevtoolsScopePane)\n  - [ChromiumShadowRootAbuse](#ChromiumShadowRootAbuse)\n- [\"Old Gen\" Techniques](#old-gen-technique)\n  - [TimeDiff](#time-diff)\n  - [ChromeGetter](#chrome-getter)\n  - [CodeIntegrity](#code-integrity)\n  - [FlowIntegrity](#flow-integrity)\n  - [HooksDetection](#hooks-detection)\n  - [RestrictionalEnviroments](#restrictional-enviroments)\n  - [SizeChanges](#size-changes)\n  - [debugger;](#debugger)\n- [Obfuscation](#obfuscation)\n\n\u003ca name=\"intro\"\u003e\u003c/a\u003e\n### Intro\n\n\u003ca name=\"what-is-browser-anti-debugging\"\u003e\u003c/a\u003e\n#### What Is Browser Anti Debugging?\n\nAnti Debugging techniques allow attackers to tell whether their malicious code is being inspected or not when is executed within the browser.\nThe idea is to use the tools given by the browser (which is simply javascript in most cases) to understand whether the website's source code is being inspected and/or debugged in any way, and to take different actions based on the result. \n\nUsually, these techniques are used by attackers to hide their malicious activity and protect their code from being uncovered. \nMeaning, attackers can protect their code using anti debugging techniques, that when find that the code is being inspected stop the attack instead of completing it.\n\n\u003ca name=\"new-gen-technique\"\u003e\u003c/a\u003e\n### [\"New Gen\" Techniques](./NewGenTechniques)\n\n\u003ca name=\"sourcemappingurl\"\u003e\u003c/a\u003e\n#### [SourceMappingURL](./NewGenTechniques/SourceMappingURL)\n\n\u003ca name=\"ChromiumDevtoolsScopePane\"\u003e\u003c/a\u003e\n#### [Chromium Devtools Scope Pane](./NewGenTechniques/ChromiumDevtoolsScopePane)\n\n\u003ca name=\"ChromiumShadowRootAbuse\"\u003e\u003c/a\u003e\n#### [Chromium Shadow Root Abuse](./NewGenTechniques/ChromiumShadowRootAbuse)\n\n\u003ca name=\"old-gen-technique\"\u003e\u003c/a\u003e\n### [\"Old Gen\" Techniques](./OldGenTechniques)\n\n\u003ca name=\"time-diff\"\u003e\u003c/a\u003e\n#### [TimeDiff](./OldGenTechniques/TimeDiff)\n\n\u003ca name=\"chrome-getter\"\u003e\u003c/a\u003e\n#### [ChromeGetter](./OldGenTechniques/ChromeGetter)\n\n\u003ca name=\"code-integrity\"\u003e\u003c/a\u003e\n#### [CodeIntegrity](./OldGenTechniques/CodeIntegrity)\n\n\u003ca name=\"flow-integrity\"\u003e\u003c/a\u003e\n#### [FlowIntegrity](./OldGenTechniques/FlowIntegrity)\n\n\u003ca name=\"hooks-detection\"\u003e\u003c/a\u003e\n#### [HooksDetection](./OldGenTechniques/HooksDetection)\n\n\u003ca name=\"restrictional-enviroments\"\u003e\u003c/a\u003e\n#### [RestrictionalEnviroments](./OldGenTechniques/RestrictionalEnviroments)\n\n\u003ca name=\"size-changes\"\u003e\u003c/a\u003e\n#### [SizeChanges](./OldGenTechniques/SizeChanges)\n\n\u003ca name=\"debugger\"\u003e\u003c/a\u003e\n#### [debugger;](./OldGenTechniques/debugger;)\n\n\u003ca name=\"obfuscation\"\u003e\u003c/a\u003e\n### [obfuscation](./Obfuscation)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweizman%2Fawesome-javascript-anti-debugging","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweizman%2Fawesome-javascript-anti-debugging","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweizman%2Fawesome-javascript-anti-debugging/lists"}