美文网首页
JS代码混淆

JS代码混淆

作者: 我爱吃肥肠 | 来源:发表于2018-02-05 16:09 被阅读0次

    1,移动时代的前端加密:王浩集使用 estools 辅助反混淆Javascriptchichou

    其中提到的重要思想:

    执行代码字符串的方式有:创建执行;调用setTimeout()执行;创建new function()执行;使用dom事件执行;

    2,__defineGetter__:

    Number.prototype.constructor.constructor:

    3,实战:

    1,小段代码会通过eval或者function来执行,可以通过修改eval和function的原型来直接执行从而获取内部逻辑.比如:

    eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('0 3(){2.1(\'这是准备用来做混淆的\')}0 5(){2.1(\'4 6 \')}',7,7,'function|log|console|test|haha|test2|hah'.split('|'),0,{}))

    修改eval: eval = function() {

      console.log('eval', JSON.stringify(arguments));

    }; 

    修改Function: Function = function() {

      console.log('Function', JSON.stringify(arguments));

      return function() {};

    };

    new Function(修改后的代码字符串)();

    截获constructor: Function.prototype.__defineGetter__('constructor', function () {

        return function () {

            console.log('constructor', JSON.stringify(arguments));

        };

    });

    (function() {}).constructor('console.log("Hello world!")');

    相关文章

      网友评论

          本文标题:JS代码混淆

          本文链接:https://www.haomeiwen.com/subject/vvhizxtx.html