Feeds:
Posts
Comments

Archive for June, 2011

This is a test message from my iPod using a Chinese made blue tooth keybooad. I can typing fast now.

Read Full Post »

Using Application Scope Regular Expression 是一種使用IIS的冷知認。

在處理「搜尋器友善」(Search Engine Friendly)的網頁時,網頁瀏覽器每一次向服務器索取
網頁時,常常會利用「正規表達式」。其實,每次使用「正規表達式」時,服務器會重新將
「正規表達式」進行即時翻譯(Just-in-Time Compilation),當網頁傳送給瀏覽器後,「正規表達式」
就會從記憶體移除。

試想像一個繁忙的網站,同一時間有千多個客戶。每一個用戶會使用一個或以常的「正規表達式」,
而每次使用,都會從新「即時翻譯」。這些過程,對服務器是一個很大的負擔。

在微軟IIS上,有一個使用物件的方式,叫做Application Scope,表示物件在啟動後會一直運行,
直到IIS重新啟動、或者清理Application Pool時,才會從新載入、翻譯。我們可以將
「正規表達式」以Application Scope的方式,長期留在記憶體內。以下的情況,有四個常用的
「正規表達式」以Application Scope的方式運作的代碼(儲存在/global.asa):
<object runat="server" name="URL_RegExp" scope="application" progid="VBScript.RegExp"><object/object>
<object runat="server" name="NODE_RegExp" scope="application" progid="VBScript.RegExp"><object/object>
<object runat="server" name="SITEMAP_RegExp" scope="application" progid="VBScript.RegExp"><object/object>
<object runat="server" name="PART_RegExp" scope="application" progid="VBScript.RegExp"><object/object>
<script language="JScript" runat="server">
function Application_OnStart(){
  Application.lock();
  URL_RegExp.Pattern="404;http:\\/\\/[^\\/]+\\/(.+)$|^~404\\.asp$";
  NODE_RegExp.Pattern="^node/([01][a-z0-9]{3})$";
  SITEMAP_RegExp.Pattern="^sitemap/([01][a-z0-9]{3}|nodes)$";
  PART_RegExp.Pattern="^parts/([01][a-z0-9]{3})/([0-9A-Z\\-\\.\\/\\%\\s]{4,50})$";
  Application.unlock()
}
</script>
經過簡單比較,在繁忙的服務器上,用應用程式層面(Application Scope)會比(Session Scope)快十多倍。

Read Full Post »

常常在網上看過一些廣告,提省大家電腦不安全,要安裝他們的防毒軟件之類。

昨天,有位同時中了一種病毒(估計是病毒利用zero-day漏洞入侵),
會先將防毒軟件關上、將瀏覽器安全降低。然後下載另外一隻假的
電腦硬碟掃瞄的軟件,安裝並且執行。

它會告知你的電腦的硬碟有很大的損壞,要你用軟體修補之類,然後又會說
該軟體要更新或付款之類(我沒有測試,這是個推測)

我從逆向工程分析過軟件的基本運作,之後我又想看看它的模樣,所以,
我將它安裝在一個虛擬的電腦上。下面是運行時的抓圖,

老實說,它的用戶介面還真的不俗,如果真心是設計一個真的硬碟程式,
也很有可能有很多人願意付款。



Read Full Post »

最近有一位同事栛助我處理有關Search Engine Optimization(SEO)的事宜。
舊的系統產生了大量的網頁,我這位同事要建立新的系統。但舊的系統所
產生的網頁。有大量的ASP(Active Server Page)代碼,不應該直接移至新的系統中。

其中一個方法,他要使新的系統將所有ASP代碼移除。最有效的方法,就是
編寫合適的「正規表示式」Regular Expression,用「正規表示式」來表達及
辨識ASP代碼。

要辨識普通的ASP代碼,即以<%...%>所包裹的文字,可以用以下的「正規表示式」:
In order to recognize asp code inside a source code file, 
we can use the following Regular Expression:

<%([\S\s](?!%>))+[\S\s]%>

要辨識附加檔案(Include file),即以<!--#Include File="..."%>或
<!--#Include Virtual="..."%>所包裹的文字,可以用以下的「正規表示式」:
In order to recognize asp include file tags inside a source code file, 
we can use the following Regular Expression:

<\!\-\-\s*#([\S\s](?!\-\->))+[\S\s]\-\->

要辨識有內容的Server-side Javascript,即以<script language="JScript" 
runat="server">...</script>等所包裹的文字,可以用以下的「正規表示式」:
To identify the server-side javascript, we can use 
the following Regular Expression:

(<script runat|<script([^>](?!\brunat\b))+[\S\s]?runat)\s*=\s*"server"[^>]*>([\S\s](?!<\/script>))+[\S\s]<\/script>

如果將「正規表示式」利用JScript運行的話,我們要避免<script>的標籤
內藏有任何<script>的標籤,請參考以下的寫法:
If the regular expression is written in JScript, to avoid 
nested-javascript (i.e. javascript tag inside javascript), 
the Regular Expression should be written in a way similar 
to following example:

<script language="JScript" runat="server">
//... some code here
var serverjs=new RegExp("(<"+"script runat|<"+"script([^>](?!\\brunat\\b))+[\\S\\s]?runat)\\s*=\\s*"server"[^>]*>([\\S\\s](?!<\\/"+"script>))+[\\S\\s]<\\/"+"script>","g")
//... some code here
</script>

Read Full Post »

昨天,有一位同事的電腦中了病毒。然而,經常用的防毒軟件沒法認出該病毒,
負責系統維護的同事只知道該電腦的Registry被病毒更改了而每次啟動都會執
行該病毒,卻不清楚病毒的名字及運作的模式。

為了了解狀況,我試圖將收集回來的三隻電腦病毒的樣本進行逆向翻譯。由於手
上沒有逆向翻譯的軟件,於是,我在Google搜尋這方面的軟件。結果給我發現一
個提供「不良軟件」進行逆向翻譯及分析的網站:
Eureka (http://eureka.cyber-ta.org)。

以下是Eureka的主頁的抓圖:


這個網站不但提供逆向翻譯,亦提供軟件的能力、運作流程的分析。透過這些工具,我可以了解病毒的運作模式,從而了解可能的感染途徑、預防方法、復原方法等等。

以下是其中兩個我在分析的「不良軟件」:
1. http://eureka.cyber-ta.org/OUTPUT/8049bd9048834aac8cd48491c90f4e65/
2. http://eureka.cyber-ta.org/OUTPUT/73c4ae46e6dca0ae57d6becf25684260/

其中一個分析「病毒更改Registry」的情況:

Read Full Post »