前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS逆向:常见无限Debugger以及绕过方法

JS逆向:常见无限Debugger以及绕过方法

原创
作者头像
wtchhb
发布2023-03-20 14:05:14
3.4K0
发布2023-03-20 14:05:14
举报
文章被收录于专栏:JS逆向技术

无限debbugger不会真正得死循环,而是有规律得执行逻辑,一般用定时器

一、种类划分

1.1 按照代码逻辑
1.1.1 无限循环
  • while 循环
  • for 循环
1.1.2 递归

包含debugger 的函数调用自身

1.1.3 方法间的循环调用
1.1.4 计时器

JS中的定时器setInterval ,参数:第一个参数是要定时执行的代码,第二个参数是时间。

下面的代码就是利用定时器来实现debugger操作:

代码语言:javascript
复制
var ss = document.getElementById('box')
function ff() {
   debugger;
}
setInterval(ff,100);
定时器1.png
定时器1.png

可以看见调试时会断在这,同时点击继续执行脚本时会一直断在这里,这里就实现了无限dubugger

1.2、代码是否混淆
1.2.1 不混淆

直接使用明文代码,不进行混淆处理

比如上面的举例使用的明文代码,未进行混淆处理。

代码语言:javascript
复制
debugger
1.2.2 可以混淆(可轻度混淆)

即eval配合debugger

eval() 函数计算 JavaScript 字符串,并把它作为脚本代码来执行。 如果参数是一个表达式,eval() 函数将执行表达式。如果参数是Javascript语句,eval()将执行 Javascript 语句。

代码语言:javascript
复制
eval(debugger;)
1.2.3 可以重度混淆

这里可以对constructordebuggercallapplyaction 等关键字进行混淆,增加调试的困难

代码语言:javascript
复制
Function("debugger;").call()/apply()
或者
variable = Function("debugger;")
variable();
​
xxx.constructor("debugger").call("action")
​
Fuction.constructor("debugger").call("action")
​
(function(){return !![];}["constructor"]("debugger")["call"]("action"))
​
['constructor']('debugger')['call']('action') : function() {return ![];}

二、绕过debugger方法

2.1 取消所有的断点

如图所示,但这样操作的弊端就是,其他所需要的断点均不能使用

停用断点.png
停用断点.png
2.2 使用一律不在此处暂停

在 JS 代码 debugger 行数位置,鼠标右键点击一律不在此处暂停 ,对应行前面会添加一个橙色的断点标志

一律不在此处暂停.png
一律不在此处暂停.png
2.3 添加条件断点

在 JS 代码 debugger 行数位置,鼠标右键添加 条件断点,其中条件 设为 false

条件断点.png
条件断点.png
2.4 置空

无限debugger产生的原因ff`这个函数造成的,所以我们可以重写这个函数,使无限debugger失效

注意:一定要在debugger进入之前

2.4.1 执行函数置空
代码语言:javascript
复制
function ff(){}
执行函数置空.png
执行函数置空.png
2.4.2 定时器置空
代码语言:javascript
复制
setInterval = function(){}
定时器置空.png
定时器置空.png
2.5 修改响应文件

JS文件保存到本地修改,修改范围主要是将debugger相关的代码删除或者改写,可以使用文件替换、抓包工具拦截方式

替换1.png
替换1.png

[其余绕过方法可见​] http://t.csdn.cn/8iorL

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 无限debbugger不会真正得死循环,而是有规律得执行逻辑,一般用定时器
    • 一、种类划分
      • 1.1 按照代码逻辑
      • 1.2、代码是否混淆
    • 二、绕过debugger方法
      • 2.1 取消所有的断点
      • 2.2 使用一律不在此处暂停
      • 2.3 添加条件断点
      • 2.4 置空
      • 2.5 修改响应文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档