2011年7月24日 星期日

[web] War3 Replay 分析站的二三事 part2 - 原始碼壓縮

原始碼是生成應用程式的根本,也是程式設計師創意的結晶。對於防止他人使用來說,由於原始碼就像一篇文章一樣,只要按照原文稍加修改,就是一份新的文章。同理,只要手上握有原始碼,只要看得懂程式格式,加上花一些時間去修改,就能夠產生一份新的原始碼。其中,更別說如果只是要使用這份原始碼的功能,只要尋找對應的編譯程式,就能夠生成對應的應用程式!因此,如何維護自身權益,防止自己的心血結晶被他人盜取,也是未來程式設計發展重要的一環。



防止盜用的方法很多,基本上不外乎上鎖 (需驗證碼, 網路認證, keyfile, 硬體鎖)加入泡泡 (不會執行到的程式碼)壓縮程式碼弄成API... 等。由於RP分析站沒有完全的主機使用權,外加程式語言是PHP的關係。對於防止盜用方面,能額外使用一個檔案作為 keyfile ,並且在原始碼內加上一段檢驗來避免他人移植對於防止改寫方面,能夠做的處理除了加入泡泡之外,只有壓縮程式碼使原始碼變為難以閱讀

壓縮程式碼的處理,雖然有個別針對 html + js、PHP 的現成套件,然而現階段並無現成作品。為了練功一下以及避免作品可能被盜用的危機,因此動手整合兩套壓縮軟體成一套可供混編 html+js+php 程式碼的應用程式。



[ 作法 ]
輸入為一個 .php 檔案,由於通常內容會混雜 html+js以及 php,因此採用挖洞的方式進行處理,步驟如下:
1. 將裡頭的程式碼挖出來

2. 為了連同變數名稱也一併做最簡化壓縮,需要將同一檔案中的所有 php 程式段串串接起來 (前後段才能連貫,不然會被認為不同的變數)。為了能夠找到原來挖洞的地方, 挖出來的php與原來的洞需加上對應的 tag 以方便之後重新串接。

3. 分別對 html+js, PHP 進行壓縮原始碼處理

4. 重新串接原始碼

※註一:由於 php 程式碼很複雜,無法單純使用正規表示法準確的抓出各段 php ,因此需要撰寫一段 scanner 將原始碼轉換成為 token 再進一步解析出 php 部份的程式 ( )



[ NOTE ] 
> 軟體 compressor v1.4 (尚有一些未知問題)

>雖然這一篇是在描述如何藉由壓縮程式碼使程式碼變得不易閱讀,來達到防止他人加以修改目的。但是相對來說,沒有人開放原始碼,每一個後進想要學習、運用相關的東西,將需要自己重新打造,科技的發展將會大為窒礙。一個人的生命是有限的,但是人類可貴的地方就是在於能夠進行經驗的累積,我開始相信,未來程式設計訓練所重視的,除了熟悉程式語言本身的程式格式之外,更重要的應該是如何再利用前人所開發出來的模組。雖然自身的作品被人家盜用心情會很不爽,但是自身的私心不應該造成大環境發展的窒礙。因此勉勵自己,能以感恩的心情來運用每一個先進的作品,也能夠盡量貢獻自己完成的作品。

沒有留言: