[技术教程] JS反调试技巧

[复制链接]
查看989 | 回复24 | 2019-8-21 17:52:57 | 显示全部楼层 |阅读模式
主流的反调试大致可以分成以下3种:

一、基于动态请求参数的反调试,其请求链接不一致但网页内容相同,该反调试会
    直接使上一次设置的静态断点失效。
二、基于动态内容的反调试及基于eval加载的反调试,思路也很简单,直接是
    先解密使其成为流程清晰的代码,然后上Charles即可,此处不再赘述。
三、基于指纹参数的反调试,如果说前两种是阻止调试,那么第三种则是判断
     是否在调试,主流的反调试特征检测大多基于Function.prototype.toString()的
       原型方法进行,无论是console.log()亦或是

arguments.callee.caller.toString().length,此处修改劫持toString即可解决

1、            var devtools = /./;            devtools.toString = function() {                    debuggered = true;            }            console.log(devtools);            在控制台调试情况下,console.log会默认执行参数的toString方法(若存在),此检测手段的变种还有很多,如img.src的加载等。当然此处还有            __defineGetter__、defineProperty等定义具有get方法的类有相同效果也会被调用。非调试情况下不会执行相关方法。    2、            (function(a, b) {            b()            })(this,            function() {                    var b = "";                    length = function(){                            return arguments["callee"]["caller"]["toString"]()["length"];                    }();                    bool =  function(){                            return /\n/.test(arguments["callee"]["caller"]["toString"]());                    }();            });            检测文件的大小,及文件的换行符,用于判断是否被修改。总结    和程序加固一样,有加固就有破解,只是时间问题。但基于JS的网页保护手段仍属鸡肋,我只见过一种网站上Charles不能调试。    所以目前只需要围绕toString为中心反反调试即可。



回复

使用道具 举报

却写杂布计 | 2019-8-24 19:22:27 | 显示全部楼层
赞赞赞赞赞,好赞
回复

使用道具 举报

puputongtong | 2019-8-27 02:26:32 | 显示全部楼层
不错不错,谢谢分享
回复

使用道具 举报

easy洒脱 | 2019-9-27 19:38:42 | 显示全部楼层
nice,谢谢
回复

使用道具 举报

Sam | 2019-10-1 02:38:34 | 显示全部楼层
双手抱拳,感谢
回复

使用道具 举报

Cutlove! | 2019-10-1 20:46:46 | 显示全部楼层
小手一抖,积分到手!
回复

使用道具 举报

冷忆Conquer | 2019-10-2 12:39:41 | 显示全部楼层
我就看看而已
回复

使用道具 举报

Thebone | 2019-10-5 17:04:05 | 显示全部楼层
路过,学习下
回复

使用道具 举报

Apical | 2019-10-9 00:04:30 | 显示全部楼层
回复领个金币咯
回复

使用道具 举报

碎花裙 | 2019-10-12 00:37:06 | 显示全部楼层
相当不错,感谢无私分享精神!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则