Js逆向教程-14反调试

js 虚幻 364℃ 0评论

Js逆向教程-14反调试

63f2487f53ef401e888b2e28144503a9 - Js逆向教程-14反调试

一、检测是否在调试

  1. 键盘监听(F12)
  2. 检测浏览器的高度插值
  3. 检测开发者人员工具变量是否为true
  4. 利用console.log调用次数
  5. 利用代码运行的时间差
  6. 利用toString
  7. 检测非浏览器

二、显性

2.1 debugger:

function xx() {
    debugger;
    console.log(1);
}

function xuhss() {
    xx();
}
xuhss() 

8d8c6d619af5478e961e13a1c07e9abb - Js逆向教程-14反调试

代码会在调试的时候段下来

跳过Debugger的方式
2.1.1非虚拟机

非虚拟机的方式不会跳转 到一个vm的页面

方式一:

通过将editbreakpoint设置为false 可以禁用这个调试

0db90bd2fe6c436ca7357020287d1c43 - Js逆向教程-14反调试

方式二:

跳过代码

利用chrome插件

  • Fiddler(代理替换)
  • 油猴插件(需要自己写代码 )
2.1.2虚拟机(eval() Function())

在eval里面运行debugger.

var aaa =Function.prototype.constructor("debugger;")

0f6121e450fa4d00867407946c4e886b - Js逆向教程-14反调试

通过hook方式,将运行的函数设为空就可以跳过debugger了

Function.prototype.constructor = function(){}

060fd2c4d80f434d9f41f37215e23a1d - Js逆向教程-14反调试

2.2 死循环

  1. 循环语句
  2. 无限递归
  3. 两个方法互相调用
  4. 计时器

( 打开页面 写历史记录卡死)

三、隐形(暗装)

发现你调试之后 引入错误的逻辑。

将你的预期值和实际值进行比较,如果不一样,就是这种debugger 只能通过浏览器调用的堆栈区分出正确的逻辑

最好的方式就是不要被识别出来调试,可以通过下hook解决。

转载请注明:虚坏叔叔 » Js逆向教程-14反调试

喜欢 (1)

您必须 登录 才能发表评论!