2005-10-21

一個不錯的保護javascript的方法

今天看到一個網站上的東西蠻有意思的,
所以想說看能不能copy下來慢慢玩,
結果看了一下程式碼發覺,似乎沒有這麼容易,
他的程式碼如下(我只截取我覺得重要的部份)

<script type="text/javascript">
<!--
function init()
{
r = new ActiveXObject("Microsoft.XMLHTTP");
r.open("GET","/virfolder/init/0",false);
r.send(null);
r2 = new ActiveXObject("Microsoft.XMLHTTP");
r2.onreadystatechange = asyncHandler;
r2.open("GET",r.responseText,true);
r2.send(null);
}
function asyncHandler()
{
if( r2.readyState==4 && r2.status==200 )
{
i = document.createElement("script");
i.text = r2.responseText;
document.body.appendChild(i);
}
}
//-->
</script>
</head>
<body onLoad="init();">

我稍微說一下我所理解的運作方式,
他將要保護的javascript藏在另一個路徑裡,
但問題是,這個路徑他是透過

r = new ActiveXObject("Microsoft.XMLHTTP");
r.open("GET","/virfolder/init/0",false);
r.send(null);

去取得,然後再丟到r2去取得script的內容

r2 = new ActiveXObject("Microsoft.XMLHTTP");
r2.onreadystatechange = asyncHandler;
r2.open("GET",r.responseText,true);
r2.send(null);

然後再將r2所接收到的資料丟到新建立的script的element中

i = document.createElement("script");
i.text = r2.responseText;
document.body.appendChild(i);

以上大致上是他的運作方式.

這時當然就會想說既然這樣的話,直接瀏覽 r 的連結,看一下 r2 是連到哪,
所以我就先用瀏覽器直接將路徑連接了一下後瀏覽,
不過卻傳回空資料...並不是無此網頁,也不是錯誤,是完全沒有內容的網頁,
所以,這時就想說應該是有判斷referer,
所以就改用它的程式再加上一段setRequestHeader,用javascript去接收看看.

r.setRequestHeader('REFERER', "http://000.000.000.000/virfolder/test/xxxx/");

結果,傳回來的依然是空資料...
所以也開始懷疑他到底是不是判斷referer...
因此到現在我還不知道他的主要的script是寫些什麼...

不過,畢竟javascript是在client端跑的,
所以資料勢必是要都load到client端才行,
本想說用Fiddler來抓抓看,
只是,現在用的電腦怪怪的,一些軟體都不是很正常,Fiddler也沒反應,所以等明天再試吧!!

ps.實際的連結路徑與資料夾等等的資訊我有稍微修改了一下,直覺上改一下這些資訊比較恰當...
如果有人對哪網頁有興趣的,想要自己研究看看的,就回應一下或與我聯絡.

張貼留言

Google以後可以查祖譜嗎?

今天看到一篇INDISE的文章 : 比爾蓋茲和賈伯斯,他們的孩子都是 14 歲才能用手機 想說比爾蓋茲不是有點年紀了嗎? 他的小孩應該也都不小了. 他們14歲時應該還沒有甚麼智慧手機吧… 說不定還是在BB call的年代. 所以就好奇的用google查一下有沒...