作家
登录

带你了解JavaScript反调试技巧

作者: 来源: 2018-03-12 10:55:06 阅读 我要评论

沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践!


写在前面的话

在此之前,我一向都在研究JavaScript相干的反调试技能。然则当我在网上搜刮相干材料时,我发明网上并没有若干关于这方面的文┞仿,并且就算有也是异常不完全的那种。所以在这篇文┞仿中,我计算跟大年夜家总结一下关于JavaScript反调试技能方面的内容。值得一提的是,个中有些办法已经被收集犯法分子广泛应用到恶意软件之中了。

2. 检测调试对象(例如DevTools);

对于JavaScript来说,你只须要花一点时光进行调试和分析,你就可以或许懂得到JavaScript代码段的功能逻辑。而我们所要评论辩论的内容,可以给那些想要分析你JavaScript代码的人增长必定的难度。不过我们的技巧跟代码混淆无关,我们重要针对的是若何给代码主动调试增长艰苦。

本文所要介绍的技巧办法大年夜致如下:

3. 代码完全性控制;

5. 反模仿;

简而言之,如不雅我们检测到了“不正常”的情况,法度榜样的运行流程将会改变,并跳转到捏造的代码块,并“隐蔽”真正的功能代码。

arguments.callee.caller可以赞助我们创建一个客栈跟踪来存储之前履行过的函数,演示代码如下:

一、函数重定义

这是一种最根本也是最常用的代码反调试技巧了。在JavaScript中,我们可以对用于收集信息的函数进行重定义。比如说,console.log()函数可以用来收集函数和变量等信息,并将其显示在控制台中。如不雅我们从新定义了这个函数,我们就可以修改它的行动,并隐蔽特定信息或显示捏造的信息。

我们可以直接在DevTools中运行这个函数来懂得其功能:

四、DevTools检测(Chrome)

  1. console.log("HelloWorld"); 
  2. var fake = function() {}; 
  3. window['console']['log']= fake; 
  4. console.log("Youcan't see me!"); 

运行后我们将会看到:

  1. VM48:1 Hello World 

你会发明第二条信息并没有显示,因为我们从新定义了这个函数,即“禁用”了它本来的功能。然则我们也可以让它显示捏造的信息。比如嗣魅如许:

  1. console.log("Normalfunction");  
  2. //First we save a reference to the original console.log function  
  3. var original = window['console']['log'];  
  4. //Next we create our fake function  
  5. //Basicly we check the argument and if match we call original function with otherparam.  
  6. // If there is no match pass the argument to the original function  
  7. var fake = function(argument) {  
  8.     if (argument === "Ka0labs") {  
  9.         original("Spoofed!");  
  10.     } else {  
  11.         original(argument); 
     1/6    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      令程序员们夜不能寐的“噩梦”除了改需求,还有这些…...

    沙龙晃荡 | 3月31日 京东、微博拭魅战专家与你合营商量容器技巧实践! 有那么一群人他们生活在那山的那边海的那边,他们活泼又聪慧~他们油滑又聪颖~他们自由安闲的生活在那彩色的代率攀里~>>>详细阅读


    本文标题:带你了解JavaScript反调试技巧

    地址:http://www.17bianji.com/lsqh/40591.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)