如何解决反调试困扰-chrome extension
fuck-debugger-extensions
简介
这个拓展是一个 反反反调试框架
当看到一段漂亮代码的时候 发现有反调试 卡浏览器 死机 这个时候就很不爽了。
拥有这个插件 就可以解决问题于无形之中。
主要解决问题
- 基于console的devtool检测
- 基于pushState的卡浏览器
- 基于debugger的卡浏览器 检测devtool
- 基于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
大概流程
- chrome.debugger.attach 注入指定tabId
- 监听chrome.debugger.onEvent 获取返回值
- 发送 Fetch.enable 开启请求拦截器
- 在事件 Fetch.requestPaused 中修改 response 返回结果
- OK!
该功能使用了chrome 实验特性 需要新版chrome
利用 chrome protocol 还能做到更多
其他
如果在使用中遇到问题和建议可以提issuse与我们进行联系;
如果有更好的想法可以参与进来。
该项目不倡导去破解他人项目来谋取利益。仅做学术研究使用。
毕竟代码运行在客户端。如果有价值,只要花功夫。都是可以被人攻破的。
建议把不重要的代码放在客户端。
项目地址
62 声望
8 粉丝
推荐阅读
「多图预警」完美实现一个@功能
一天产品大大向 boss 汇报完研发成果和产品业绩产出,若有所思的走出来,劲直向我走过来,嘴角微微上扬。产品大大:boss 对我们的研发成果挺满意的,balabala...(内心 OS:不听,讲重点)产品大大:咱们的客服 I...
wuwhs赞 40阅读 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 中的滤镜,能够比较轻松的实现,就是所需的元素可能多点。参考我们...
chokcoco赞 24阅读 2.3k评论 3
你可能不需要JS!CSS实现一个计时器
CSS现在可不仅仅只是改一个颜色这么简单,还可以做很多交互,比如做一个功能齐全的计时器?样式上并不复杂,主要是几个交互的地方数字时钟的变化开始、暂停操作重置操作如何仅使用 CSS 来实现这样的功能呢?一起...
XboxYan赞 25阅读 1.8k评论 1
在前端使用 JS 进行分类汇总
最近遇到一些同学在问 JS 中进行数据统计的问题。虽然数据统计一般会在数据库中进行,但是后端遇到需要使用程序来进行统计的情况也非常多。.NET 就为了对内存数据和数据库数据进行统一地数据处理,发明了 LINQ (L...
边城赞 17阅读 2.1k
过滤/筛选树节点
又是树,是我跟树杠上了吗?—— 不,是树的问题太多了!🔗 相关文章推荐:使用递归遍历并转换树形数据(以 TypeScript 为例)从列表生成树 (JavaScript/TypeScript) 过滤和筛选是一个意思,都是 filter。对于列表来...
边城赞 18阅读 7.9k评论 3
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。