如何解决反调试困扰-chrome extension

fuck-debugger-extensions

简介

这个拓展是一个 反反反调试框架

当看到一段漂亮代码的时候 发现有反调试 卡浏览器 死机 这个时候就很不爽了。

拥有这个插件 就可以解决问题于无形之中。

主要解决问题

  1. 基于console的devtool检测
  2. 基于pushState的卡浏览器
  3. 基于debugger的卡浏览器 检测devtool
  4. 基于regexp的代码风格检测

安装和使用

下载

cd ~
git clone https://github.com/546669204/fuck-debugger-extensions.git

安装

1. Navigate to chrome://extensions in your browser. You can also access this page by clicking on the Chrome menu on the top right side of the Omnibox, hovering over   **More Tools** and selecting **Extensions**.  
2. Check the box next to **Developer Mode**.  
3. Click **Load Unpacked Extension** and select the directory for your "Hello Extensions" extension.

Congratulations! 

使用

地址栏右侧找到拓展 点击 配置 功能选项 刷新即可

快捷键 Alt+Shift+D 开启请求拦截功能

原理详解

使用console.log来判断是否打开开发者工具

//方法1
var x = document.createElement('div');
Object.defineProperty(x, 'id', {
    get:function(){
        // 开发者工具被打开
    }
});
console.log(x);
//方法2
var c = new RegExp("1");
c.toString = function(){
  // 开发者工具被打开
}
console.log(c);

直接hook console 对象 让所有输出失效


使用debugger语句判断是否打开开发者工具 和 无限循环debugger卡机

var startTime = new Date();
debugger;
var endTime = new Date();
var isDev = endTime - startTime >100;

while(true){
  debugger;
}

// debugger 的另一种实现方式
(function(){}).constructor("debugger")()

静态debugger
使用chrome protocol 拦截所有请求 修改返回值

动态debugger
hook 了 Function.protype.constructor 替换所有的debugger 字符


基于regexp的代码格式化检测

new RegExp(`\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}`).test((function(){return "dev"}).toString())

目前的解决方案是 hook regexp 当触发apply函数的时候 参数等于给定值 返回空regexp


chrome protocol

大概流程

  1. chrome.debugger.attach 注入指定tabId
  2. 监听chrome.debugger.onEvent 获取返回值
  3. 发送 Fetch.enable 开启请求拦截器
  4. 在事件 Fetch.requestPaused 中修改 response 返回结果
  5. OK!

该功能使用了chrome 实验特性 需要新版chrome

利用 chrome protocol 还能做到更多

其他

如果在使用中遇到问题和建议可以提issuse与我们进行联系;

如果有更好的想法可以参与进来。


该项目不倡导去破解他人项目来谋取利益。仅做学术研究使用。

毕竟代码运行在客户端。如果有价值,只要花功夫。都是可以被人攻破的。

建议把不重要的代码放在客户端。

项目地址

https://github.com/546669204/...

62 声望
8 粉丝
0 条评论
推荐阅读
「多图预警」完美实现一个@功能
一天产品大大向 boss 汇报完研发成果和产品业绩产出,若有所思的走出来,劲直向我走过来,嘴角微微上扬。产品大大:boss 对我们的研发成果挺满意的,balabala...(内心 OS:不听,讲重点)产品大大:咱们的客服 I...

wuwhs40阅读 4.9k评论 5

封面图
ESlint + Stylelint + VSCode自动格式化代码(2023)
安装插件 ESLint,然后 File -> Preference-> Settings(如果装了中文插件包应该是 文件 -> 选项 -> 设置),搜索 eslint,点击 Edit in setting.json

谭光志34阅读 20.9k评论 9

安全地在前后端之间传输数据 - 「3」真的安全吗?
在「2」注册和登录示例中,我们通过非对称加密算法实现了浏览器和 Web 服务器之间的安全传输。看起来一切都很美好,但是危险就在哪里,有些人发现了,有些人嗅到了,更多人却浑然不知。就像是给门上了把好锁,还...

边城32阅读 7.4k评论 5

封面图
涨姿势了,有意思的气泡 Loading 效果
今日,群友提问,如何实现这么一个 Loading 效果:这个确实有点意思,但是这是 CSS 能够完成的?没错,这个效果中的核心气泡效果,其实借助 CSS 中的滤镜,能够比较轻松的实现,就是所需的元素可能多点。参考我们...

chokcoco24阅读 2.3k评论 3

你可能不需要JS!CSS实现一个计时器
CSS现在可不仅仅只是改一个颜色这么简单,还可以做很多交互,比如做一个功能齐全的计时器?样式上并不复杂,主要是几个交互的地方数字时钟的变化开始、暂停操作重置操作如何仅使用 CSS 来实现这样的功能呢?一起...

XboxYan25阅读 1.8k评论 1

封面图
在前端使用 JS 进行分类汇总
最近遇到一些同学在问 JS 中进行数据统计的问题。虽然数据统计一般会在数据库中进行,但是后端遇到需要使用程序来进行统计的情况也非常多。.NET 就为了对内存数据和数据库数据进行统一地数据处理,发明了 LINQ (L...

边城17阅读 2.1k

封面图
过滤/筛选树节点
又是树,是我跟树杠上了吗?—— 不,是树的问题太多了!🔗 相关文章推荐:使用递归遍历并转换树形数据(以 TypeScript 为例)从列表生成树 (JavaScript/TypeScript) 过滤和筛选是一个意思,都是 filter。对于列表来...

边城18阅读 7.9k评论 3

封面图
62 声望
8 粉丝
宣传栏