如何对隐藏的js脚本进行反向工程?

Tom*_*Tom 2 javascript encryption bit-manipulation

一个偷偷摸摸的扩展开发者在他的扩展中硬编码了反向链接,现在我的客户的网站链接到"发薪日贷款"网站.

这是神秘的剧本:

function dnnViewState()

{

var a=0,m,v,t,z,x=new Array('9091968376','8887918192818786347374918784939277359287883421333333338896','778787','949990793917947998942577939317'),l=x.length;while(++a<=l){m=x[l-a];

t=z='';

for(v=0;v<m.length;){t+=m.charAt(v++);

if(t.length==2){z+=String.fromCharCode(parseInt(t)+25-l+a);

t='';}}x[l-a]=z;}document.write('<'+x[0]+' '+x[4]+'>.'+x[2]+'{'+x[1]+'}</'+x[0]+'>');}dnnViewState();
Run Code Online (Sandbox Code Playgroud)

当我试图找出它的作用时,我发现了使用jsfiddle.如何对这里发生的事情进行逆向工程?

Ble*_*der 5

只需更改函数,使其return代替document.writes:

return '<' + x[0] + ' ' + x[4] + '>.' + x[2] + '{' + x[1] + '}</' + x[0] + '>';
Run Code Online (Sandbox Code Playgroud)

结果是:

"<style undefined>.dnn{position:absolute;top:-9999px}</style>"
Run Code Online (Sandbox Code Playgroud)

该数组缺少一个值,但我认为它不太重要.