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

2 則留言:

kai 提到...

您好,我想參考看看你說的網站

Adam Lee 提到...

hi kai,
不好意思.
因為PO這篇已經有段時間了,
所以那個網站目前找不到了...

在Hyper-V上跑ubuntu 22.04 Desktop, 裝完後一登入就凍住

如果你也遇到這情況, 你可以執行以下步驟 按 Ctrl+Alt+F3 進入 virtual console. (按Ctrl+Alt+F1 可以再回到GUI) 登入後執行下面指令 (更新kernel) * sudo add-apt-repository ppa:capp...