2013-03-06 27 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