吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1449|回复: 39
收起左侧

[Web逆向] [学习笔记]JS逆向-控制台反调试使用的常见三种方式及hook思路

  [复制链接]
joekerr47 发表于 2025-3-16 15:19
本帖最后由 joekerr47 于 2025-3-16 16:33 编辑

一、JS逆向反调试技术-阻碍浏览器控制台使用的常见三种方式:

  1. 窗口大小检测:通过检测当前浏览器实际窗口大小来执行关闭页面操作。

    • <script>
      function resize() {
       var target = 400;
       var heigth = window.outerHeight - window.innerHeight > target;
       if(heigth){
           window.close()
           debugger
       }
       setInterval(resize, 100)
      }
      </script>
  2. 使用构造器断点:使用无限递归循环自执行函数进入无限断点。

    • <script>
      function check() {
      function docheck(a) {
       (function () {}['constructor']('debugger')())
       docheck(++a)
      }
      docheck(0)
      }
      check()
      </script>
      
  3. 定时器:每隔 200 毫秒触发浏览器的debugger功能。

    • <script>
       function clock(){
           debugger
       };
       setInterval(clock, 500)
      </script>

提示:函数定义也会使用fun1 = Function('debugger')定义。

零时解决办法:

  1. 可以在 debugger 对应行号右键点击 一律不在此处暂停 或点击 添加条件断点填加一个false条件。
  2. 在进入方法前,改写执行 debugger 方法的逻辑。
  3. 将debugger位置的文件替换为本地文件。

二、使用hook解决

调用constructor时判断传参是否为 debugger ,如果是就重写,如果不是就返回原方法。

  • var _constructor = constructor;
    Function.prototype.constructor = function(d) {
    
    if (  d == "debugger") {
    console.log(d);
    return null;
    }
    return _constructor(d);
    }

    (在控制台使用时需注意当前栈是否为出现debugger位置)

免费评分

参与人数 9吾爱币 +15 热心值 +9 收起 理由
FitContent + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
pirate1990 + 1 + 1 学到鸟
奕余君 + 1 + 1 谢谢@Thanks!
yan999 + 1 + 1 我很赞同!
blockcloth + 1 + 1 热心回复!
Liebesfreud + 1 + 1 用心讨论,共获提升!
timeni + 1 + 1 用心讨论,共获提升!
beihai1314 + 1 + 1 我很赞同!
涛之雨 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

就往丶 发表于 2025-3-18 11:33
zhidaoliao 发表于 2025-3-18 00:01
https://vuejs-core.cn/shop-vite/#/index
找不到呀,完全没办法调试,

找下面这个位置打断点把window.setInterval 置空  window.setInterval = function name() {}

[JavaScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
V = window.setInterval((function() {
    if (!(e.isSuspend || c || A())) {
        var t, n, o = u(j);
        try {
            for (o.s(); !(t = o.n()).done; ) {
                var a = t.value;
                I(a.type),
                a.detect(U++)
            }
        } catch (r) {
            o.e(r)
        } finally {
            o.f()
        }
        C(),
        "function" == typeof m.ondevtoolclose && (n = O,
        !F() && n && m.ondevtoolclose())
    }
}
Tking#5366 发表于 2025-3-17 08:39
早看到你方法就好了,哈哈,最近刚好遇到个构造器无限debugger的,不过我是直接hook住check函数,然后置空,虽然也能过。不爽就是控制台一直打印check
zhidaoliao 发表于 2025-3-16 20:57
本帖最后由 zhidaoliao 于 2025-3-16 20:59 编辑

只要打开调试窗口直接就调整到另一个页面了,这个怎么破
[url=]image.png[/url]

浏览器调试窗口

浏览器调试窗口
就往丶 发表于 2025-3-16 21:17
zhidaoliao 发表于 2025-3-16 20:57
只要打开调试窗口直接就调整到另一个页面了,这个怎么破
image.png

打一个脚本断点 然后查看一下代码
 楼主| joekerr47 发表于 2025-3-16 21:20
zhidaoliao 发表于 2025-3-16 20:57
只要打开调试窗口直接就调整到另一个页面了,这个怎么破
image.png

你好,你的问题描述不是很清晰,可以详细说一下问题吗?我也是在学习过程中,看看能不能帮到你
10097454 发表于 2025-3-16 21:26
先收藏学习一下,哈哈
xjl333 发表于 2025-3-16 21:29
很棒,学习了不错
FallingOfLove 发表于 2025-3-16 21:31
学习了,感谢楼主的教程
YSO123 发表于 2025-3-16 22:04

学习了,感谢楼主的教程;js小白冲冲冲
tianxingjian146 发表于 2025-3-17 00:07
学习学习,谢谢楼主。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-16 16:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表