沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践!
写在前面的话
在此之前,我一向都在研究JavaScript相干的反调试技能。然则当我在网上搜刮相干材料时,我发明网上并没有若干关于这方面的文┞仿,并且就算有也是异常不完全的那种。所以在这篇文┞仿中,我计算跟大年夜家总结一下关于JavaScript反调试技能方面的内容。值得一提的是,个中有些办法已经被收集犯法分子广泛应用到恶意软件之中了。
2. 检测调试对象(例如DevTools);
对于JavaScript来说,你只须要花一点时光进行调试和分析,你就可以或许懂得到JavaScript代码段的功能逻辑。而我们所要评论辩论的内容,可以给那些想要分析你JavaScript代码的人增长必定的难度。不过我们的技巧跟代码混淆无关,我们重要针对的是若何给代码主动调试增长艰苦。
本文所要介绍的技巧办法大年夜致如下:
3. 代码完全性控制;
5. 反模仿;
简而言之,如不雅我们检测到了“不正常”的情况,法度榜样的运行流程将会改变,并跳转到捏造的代码块,并“隐蔽”真正的功能代码。
arguments.callee.caller可以赞助我们创建一个客栈跟踪来存储之前履行过的函数,演示代码如下:
一、函数重定义
这是一种最根本也是最常用的代码反调试技巧了。在JavaScript中,我们可以对用于收集信息的函数进行重定义。比如说,console.log()函数可以用来收集函数和变量等信息,并将其显示在控制台中。如不雅我们从新定义了这个函数,我们就可以修改它的行动,并隐蔽特定信息或显示捏造的信息。
我们可以直接在DevTools中运行这个函数来懂得其功能:
四、DevTools检测(Chrome)
- console.log("HelloWorld");
- var fake = function() {};
- window['console']['log']= fake;
- console.log("Youcan't see me!");
运行后我们将会看到:
- VM48:1 Hello World
你会发明第二条信息并没有显示,因为我们从新定义了这个函数,即“禁用”了它本来的功能。然则我们也可以让它显示捏造的信息。比如嗣魅如许:
- console.log("Normalfunction");
- //First we save a reference to the original console.log function
- var original = window['console']['log'];
- //Next we create our fake function
- //Basicly we check the argument and if match we call original function with otherparam.
- // If there is no match pass the argument to the original function
- var fake = function(argument) {
- if (argument === "Ka0labs") {
- original("Spoofed!");
- } else {
- original(argument);
推荐阅读
沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践! 有那么一群人他们生活在那山的那边海的那边,他们活泼又聪慧~他们油滑又聪颖~他们自由安闲的生活在那彩色的代率攀里~>>>详细阅读
本文标题:带你了解JavaScript反调试技巧
地址:http://www.17bianji.com/lsqh/40591.html
1/2 1