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

时间:2013-03-06 02:15:45

标签: 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();

当我试图找出它的作用时,我发现了使用jsfiddle。我怎样才能对这里发生的事情进行逆向工程?

3 个答案:

答案 0 :(得分:5)

只需将功能更改为return而不是document.write s:

return '<' + x[0] + ' ' + x[4] + '>.' + x[2] + '{' + x[1] + '}</' + x[0] + '>';

结果是:

"<style undefined>.dnn{position:absolute;top:-9999px}</style>"

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

答案 1 :(得分:1)

以下是jsfiddle:http://jsfiddle.net/sB3Se/

它写道:

<style undefined>.dnn{position:absolute;top:-9999px}</style> 

答案 2 :(得分:0)

我认为它应该是x[3]而不是x[4]

在代码中document.write之前,您可以使用console.log(x);将x的值记录到现代浏览器的控制台,例如Google Chrome,Safari或Firefox。

结果,它打印出来:

["style", "position:absolute;top:-9999px", "dnn", "type='text/css'"]

我认为你可以自己弄清楚剩下的事情。