作家
登录

带你了解JavaScript反调试技巧

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

简单的概念验证代码如下:

  1. let div = document.createElement('div');  
  2. let loop = setInterval(() => {  
  3.     console.log(div);  
  4.     console.clear();  
  5. });  
  6. Object.defineProperty(div,"id", {get: () => {  
  7.     clearInterval(loop);  
  8.     alert("Dev Tools detected!");  
  9. }}); 

当我们测验测验对代码进行反混淆处理时,我们起首会测验测验重定名某些函数或变量,然则在JavaScript中我们可以检测函数名是否被修悛改,或者说我们可以直接经由过程客栈跟踪来获取其原始名称或调用次序。

1. 检测未知的履行情况(我们的代码只想在浏览器中被履行);

  1. function getCallStack() {  
  2.     var stack = "#", total = 0, fn =arguments.callee;  
  3.     while ( (fn = fn.caller) ) {  
  4.         stack = stack + "" +fn.name 
  5.         total++  
  6.     }  
  7.     return stack  
  8.  
  9. function test1() {  
  10.     console.log(getCallStack());  
  11.  
  12. function test2() {  
  13.     test1();  
  14.  
  15. function test3() {  
  16.     test2();  
  17. function test4() { 
  18.     test3();  
  19.  
  20. test4(); 

留意:源代码的混淆程度越强,这个技巧的效不雅就越好。

六、代劳对象

代劳对象是今朝JavaScript中最有效的一个对象,这种对象可以赞助我们懂得代码中的其他对象,包含修改其行动以及触发特定情况下的对象晃荡。比如说,我们可以创建一个嗲哩对象并跟踪每一次document.createElemen调用,然跋文录下相干信息:

  1. const handler = { // Our hook to keep the track  
  2.     apply: function (target, thisArg, args){  
  3.         console.log("Intercepted a call tocreateElement with args: " + args);  
  4.         return target.apply(thisArg, args) 

      推荐阅读

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

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


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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