简体   繁体   English

如何读取混淆的javascript文件?

[英]How to read a javascript file that is obfuscated?

I'm on a website that references a javascript file that looks like this: 我在一个网站上引用了一个如下所示的javascript文件:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(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}('h=[\'.I-l\',\'#f-m\',\'.e-d-f\',\'.e-d-q\',\'.r-1-s\',c.t,c.k];5 g(0){8(0 6 w||0 6 v){y(b a z 0){b 9=0[a];$(9).7()}}8(0 6 E){$(0).7()}}$.G.7=5(){x j.H(\'F\',\'i\').2(\'3-1\',\'4\').2(\'-D-3-1\',\'4\').2(\'-C-3-1\',\'4\').2(\'-B-3-1\',\'4\').i(\'A\',u)};p(o).n(5($){g(h)});',45,45,'elements|select|css|user|none|function|instanceof|tknDisableSelection|if|current|key|var|tknSelectors|videos|recommended|next|tknSetUnselectable|tknUnselectable|on|this|vocabContent|listings|video|ready|document|jQuery|previous|expanded|wrapper|vocabTabList|false|Object|Array|return|for|in|selectstart|ms|moz|webkit|String|unselectable|fn|attr|dialogue'.split('|'),0,{}))

This is probably a recognizable obfuscation pattern, but I don't know which one. 这可能是一个可识别的混淆模式,但我不知道哪一个。

How can I reverse this and turn it into javascript I can read? 我怎样才能将其反转并将其转换为我能阅读的javascript?

This is pretty easy. 这很简单。 It seems it's been packed with a tool similar to "packer" . 它似乎已经装满了类似于“打包机”的工具。 jsbeautifier handles it nicely (notice the option called "detect packers and obfuscators?"): jsbeautifier很好地处理它(请注意名为“检测打包器和混淆器?”的选项):

tknUnselectable = ['.dialogue-listings', 
                  '#next-video', 
                  '.recommended-videos-next', 
                  '.recommended-videos-previous', 
                  '.expanded-select-wrapper',        
                  tknSelectors.vocabTabList,       
                  tknSelectors.vocabContent];

function tknSetUnselectable(elements) {
    if (elements instanceof Array || elements instanceof Object) {
        for (var key in elements) {
            var current = elements[key];
            $(current).tknDisableSelection()
        }
    }
    if (elements instanceof String) {
        $(elements).tknDisableSelection()
    }
}
$.fn.tknDisableSelection = function() {
    return this.attr('unselectable', 'on')
           .css('user-select', 'none')
           .css('-webkit-user-select', 'none')
           .css('-moz-user-select', 'none')
           .css('-ms-user-select', 'none')
           .on('selectstart', false)
};
jQuery(document).ready(function($) {
    tknSetUnselectable(tknUnselectable)
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM