2008年6月5日 星期四

Q13 努力的方向(5)──Source Code的佈署與混淆

Component的內部依其意義切分為數個部分是令人容易理解的結構,Interface-Abstract Class-Class的佈置則有助於重覆使用的實現。但是數量較多的程式碼與執行時大量參數的處理是否會造成執行效能的低落?答案當然是肯定的。

為了兼顧設計時的意義明顯與執行時的效能提升,我的想法是依據Properties裡的定義匯出執行時所需要的Java Source Code與設定檔。匯出是把Component完整結構裡的十八個檔案(扣除Component Interface)裡的變數與方法全部組成到一個Class裡,這就是現今一般很難令人看懂的程式編排,但是與完整結構比較起來卻有較佳的速度;設定檔則逐一判斷,儘量執行時用不到的屬性在匯出時變成程式並將之移除,使設定檔內只有必須的部分。

在匯出的同時還可以作反組譯的保護。定義隨機選擇一些英文字母作為方法的機制,在組合各個部分的方法時順便變換變數與方法的名稱,藉由把所有的方法集合成一堆同時讓名稱的可讀性大幅降低,就可以嚴重妨礙想藉反組譯來看懂程式的意圖;而且在此同時,我們手上擁有的還是結構清楚的原始程式。

沒有留言:

張貼留言