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

这篇具有很好参考价值的文章主要介绍了JS逆向:常见无限Debugger以及绕过方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

一、种类划分

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

包含debugger 的函数调用自身

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

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

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

var ss = document.getElementById('box')
function ff() {
   debugger;
}
setInterval(ff,100);

解决无限debugger,JS逆向,javascript,前端,开发语言,python,爬虫

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

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

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

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

debugger
1.2.2 可以混淆(可轻度混淆)

即eval配合debugger

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

eval(debugger;)
1.2.3 可以重度混淆

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

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 取消所有的断点

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

解决无限debugger,JS逆向,javascript,前端,开发语言,python,爬虫

2.2 使用一律不在此处暂停

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

解决无限debugger,JS逆向,javascript,前端,开发语言,python,爬虫

2.3 添加条件断点

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

解决无限debugger,JS逆向,javascript,前端,开发语言,python,爬虫

2.4 置空

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

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

2.4.1 执行函数置空
function ff(){}

解决无限debugger,JS逆向,javascript,前端,开发语言,python,爬虫

2.4.2 定时器置空
setInterval = function(){}

解决无限debugger,JS逆向,javascript,前端,开发语言,python,爬虫

2.5 修改响应文件

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

解决无限debugger,JS逆向,javascript,前端,开发语言,python,爬虫

2.5 注入代码到JS文件
2.5.1 Hook 构造函数

在控制台中注入即可

站点:https://www.qizhidao.com/check?searchKey=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD&tagNum=1&fromRoutePage=check

var _constructor = constructor;
Function.prototype.constructor = function(s) {
    
    if ( s== "debugger") {
        console.log(s);
        return null;
    }
    return _constructor(s);
}
2.5.2 Hook 函数
F_ = Function
Function = function(s){
    if (s!=='debugger'){return F_(s)}
}
2.5.3 Hook eval 函数
eval_ = eval;
//下面为了过瑞数的 eval.toString 检测
eval = function(a){if(a=='debugger'){return ''}else{return eval_(a)}}    
2.5.4 Hook console.log

为了防止调试过程中,console.log 被重写,也可以在此时对 console.log 进行 hook,之后在 console.log 无法正常打印的位置,再将 console.log 进行复原文章来源地址https://www.toymoban.com/news/detail-705636.html

  • Hook console.log
console.log_ = console.log
  • 将 console.log 复原
console.log = console.log_
2.5.5 Hook setInterval 函数
  • 业务代码和 setInterval 无关–置空即可
setInterval = function(){}
  • 业务代码和 setInterval 有关
_setInterval = setInterval
setInterval = function(a,b){
    if(a.toString().indexOf('debugger') == -1){
      return null;
    }
    _setInterval(a, b)
}
  • 业务代码和 setInterval 有关
_setInterval = setInterval
setInterval = function(a,b){
    if(a.toString().indexOf('debugger') == -1){
      return null;
    }
    _setInterval(a, b)
}

到了这里,关于JS逆向:常见无限Debugger以及绕过方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 扩展Nginx的无限可能:掌握常见扩展模块和第三方插件的使用方法

    Nginx是一款高性能的开源Web服务器和反向代理服务器。它具有模块化的架构,可以通过扩展模块和插件来增强其功能。在本文中,我将围绕Nginx的扩展模块和插件进行讲解,并提供一些常见的扩展模块和第三方插件的示例。 Nginx的扩展模块是编译到Nginx中的可选组件,可以通过

    2024年02月08日
    浏览(43)
  • js浮点数四则运算精度丢失以及toFixed()精度丢失解决方法

    1、四则运算精度丢失: 2、toFixed() 四舍五入精度丢失: js采用64位浮点数表示法(几乎所有现代编程语言所采用),这是一种二进制表示法。二进制浮点数表示法并不能精确表示类似 0.1 这样简单的数字。 这个问题不只在js中才会出现,在任何使用二进制浮点数的编程语言中

    2024年02月05日
    浏览(47)
  • 桌面以及文件资源管理器无限重启的解决

    开机之后,电脑桌面一直再鬼畜重启,点击开始windows图标不动、任务栏无法点击。Ctrl+ALT+Delete打开任务管理器,explorer(文件资源管理器)一直在重启,启动之后自己挂起,然后循环。 这是使用cmd打开一些软件的命令。 如果嫌弃这个重启烦人一直在变,那么可以先去注册表

    2024年02月04日
    浏览(34)
  • JS逆向---国标哈希算法(MD5,SHA系列,HMAC加密以及相关案例详解)

    在 JavaScript 中和 Python中的基本实现方法,遇到 JS 加密的时候可以快速还原加密过程,有的网站在加密的过程中可能还经过了其他处理,但是大致的方法是一样的。 本篇文章主要讲述内容:消息摘要算法/安全哈希算法/散列消息认证码、密钥相关的哈希运算消息认证码:MD5、

    2024年02月03日
    浏览(81)
  • 如何通过drissionpage以及js逆向过字符/滑块/点选/九宫格验证码文章/视频学习案例

    仅供学习交流仅供学习交流仅供学习交流 各种关于drissionpage文章视频案例解决方案合集,解决方案,可以点击作者官方社群文章查看 ;部分内容入门案例看下方, 视频在作者官方文档有教学视频介绍 如下目录内容js逆向部分文字视频也可以到该合集博客点击查看

    2024年04月17日
    浏览(40)
  • 【逆向爬虫】Python中执行调用JS的多种方法汇总

    “以前的数据靠买,现在的数据靠爬”,越来越多的学者通过网络爬虫来获取数据。但是做爬虫的人都知道,现在的很多网站都在和我们斗智斗勇,防护普遍越来越好,并且越有价值的网站在这方面越强,哪怕是小一点的网站也多多少少存在一些反爬。而JS逆向又是网络反爬

    2024年02月04日
    浏览(74)
  • JS加密在网页安全中的应用及逆向分析方法

    在当今互联网时代,网页加密技术的应用越来越广泛。在网页中,常见的加密方式包括三种:flash加密、密码控件加密和JS加密。虽然这三种方式各有优劣,但JS加密是目前最为普遍和灵活的加密方式。 JS加密的广泛应用主要源于它的灵活性和易用性。与flash加密相比,JS加密的

    2024年02月06日
    浏览(42)
  • selenium解决巨难的js逆向滑块验证问题!!!

    需要控制滑块,完成访问验证   使用selenium进行滑块识别,总是失败。 网站识别出是机器在进行爬取。 实现规避检测,让网站检测不到。 2、调整Chorme特征值 让系统不认为chorme是机器在操作 用16进制编辑器打开 Chormedriver.exe , 查找并替换 $cdc_lasutopfhvcZLmcfl 为等量字符的内容

    2024年02月13日
    浏览(45)
  • 【JS逆向】如何一招彻底解决selenium WebDriver无响应

    selenium 无响应,最常见的原因是,webDriver与浏览器版本不匹配导致的。 而chrome 目前新的版本都是会自动升级的,这就会导致一段时间不用selenium时,driver就无法使用了。 如果Driver不正常的话,会一直卡着,不会有响应,或者报错 或者是报这样一个错误 最好的解决方案是,进

    2024年02月01日
    浏览(67)
  • 玩转代码|逆向分析一下4399小游戏绕过实名认证

    4399的实名认证真是越来越恶心了,本以为只是响应国家号召做点表面功夫,没想到现在他们又在网页上加了反调试。看来是4399是认真的。 目录 0X00实名认证提醒  0X01分析  0X03断点发现=关键元素 0X04遮罩消失 0X05快去试试吧   先看一下,需要认证的界面。不认证的话是无法

    2024年02月04日
    浏览(93)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包