2008年5月27日 星期二

Q04 產出驗收文件(3)──執行檔案的反組譯與混淆

產出系統執行檔的動作也需要記錄,即使使用了Ant來自動產出結果,對於操作的步驟與設定檔的內容還是需要說明。不過還有一件重要的事是防止被競爭對手看到程式碼的保護。

Java語言跨平台的特性使得我們寫出的程式會先被編譯為一種中介檔案,各個平台的JVM再讀入這些中介檔案進行處理,並在各自的JVM平台上執行。現在有很多可以將這種中介檔案還原為source code的工具程式,雖然完全沒有註解卻還是可以從命名規則上看懂內容。

對很多設計者來說,其實只要瞭解需求後就有能力作出系統來,但是為了防止競爭對手快速地經由程式懂得這個領域的東西,多少還是會使用混淆的方式來保護程式。它的作法是將指定修飾字的Data、Method、Class與Package都使用無意義的代號加以替換,使得看到內容的人不知那是做什麼用的。但是在使用上限制不能對映射取得的一切加以混淆,因為名稱改變後就再也不能對應到正確的目標。

在我的元件結構裡,由於大量使用Interface(public method),這使用混淆的對象只能是protected或是private修飾字的那些,保護的功能是無法達到預期效果的。

沒有留言:

張貼留言