2013-03-06 26 views
2

一个偷偷摸摸的扩展开发者在他的扩展中对反向链接进行了硬编码,现在我的客户的网站链接到了“支付日贷款”网站。如何对一个隐藏的js脚本进行反向工程?

这就是神秘的脚本:

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。我怎样才能逆向工程这里发生了什么?

+1

你在调试器中运行这段代码吗? – 2013-03-06 02:18:16

+0

我认为它应该是x [3]而不是x [4] – 2013-03-06 02:29:32

+0

你没有要求(并且我假设你知道),但是这个脚本被用于隐藏链接到其他人的网页,以便链接被搜索引擎机器人看到,给参考页面排名更高(SEO恶意软件)。 [见这里](http://blog.sucuri.net/2012/12/website-malware-sharp-increase-in-spam-attacks-wordpress-joomla.html)。 – mins 2014-08-04 11:56:36

回答

5

只要改变功能,使其return s,而不是document.write S:

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

结果是:

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

这阵中缺少一个值,但我不认为这是太重要了。

1

这里是它的一个的jsfiddle:http://jsfiddle.net/sB3Se/

它写道:

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

我觉得应该是x[3]而不是x[4]

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

结果,它打印:

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

我认为你可以自己计算剩余的东西。

+0

用你的代码输出:''。用'x [4]'代替输出:'' – 2013-03-06 02:25:03