2009年12月15日 星期二

CAT.NET 容易 OutOfMemory

繼上一次 CAT.NET 初用後,又使用不少次。原因當然還是要幫同事找出 Sql Injection 的問題。

找出 Sql Injection 漏洞根本不是人做的,因為我們無法像父母親照顧小孩一樣,隨著專案不同階段來檢查專案的程式碼是否有 Sql Injection 問題。

而 CAT.NET 除了可以幫我們找出該類的問題外,更可以與開發工具結合,直接與顯示出問題發生的路由。

可惜的是,CAT.NET 工具非常秏記憶體,而一個 32 位元的程式,預設只能吃到 2GB。又與 Visual Studio 結合後,最多只能吃到 1.2 GB 左右而已。

為了解決這個問題, CAT.NET 出了 64 位元版,該版本就是要解決記憶體不足的issue。但,Visual Studio 並沒有 64位元版。換句話說,CAT.NET 64 bit version 無法與Visual Studio 結合,這是該版本的一大不方便的地方。

使用 64 位元版,只能使用 command line 的方式來執行。說明文件,則可以解壓縮後找到 CAT.NET.chm。該說明相當詳細了,不必在這裡重複。

我最常用的指令,如下。意思是找到 c:\dll 下所有的 dll ,分析後將報告輸出成 c:\dll\report.xml。

CATNETCmd64 /file:C:\dll\*.dll /report:c:\dll\report.xml

最後,將該 xml 改套用 \CATNETx64CTP\CAT.NET\Config\report.xsl ,即可看到輸出的報表。也就是加入 xml-stylesheet 這一行於 xml 檔。

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="report.xsl" ?>
<Report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Analysis>

後記:
    讀者問到:「如果專案是以網站(WebSite)的型式建置開發,因此建置時不會產生dll」時該怎麼辦?

    由於CAT.NET的運作原理, 是「看」assembly 的運作方式是否有問題,然後再將問題對後到原始程式碼,顯示出問題的path。因此必須有 assembly 才能運作。

    解決方法,是先使用ASP.NET 編譯工具 (Aspnet_compiler.exe)將WebSite compile 成 dll後,再執行 CAT.NET 進行分析。

1 則留言:

Unknown 提到...

^^
先前X86的方式去運作,資源吃的很重,一直會出現OutOfMenory的例如狀況,改用X64方式,看是否能改善,查看了你的說明,有一點尚不是很了解,如果專案是以網站的方式建置開發,建置時不會產生dll,需如何下達指令來指定Targets呢?在此謝謝你的回覆

Share with Facebook