UPX加殼原理


upx的功能有兩種描述。一種叫作給程序加殼,另外一種叫壓縮程序。其實這兩種表述都是正確的,只是從不一樣的角度對upx的
描述。upx的工做原理實際上是這樣的:首先將程序壓縮。所謂的壓縮包括兩方面,一方面在程序的開頭或者其餘合適的地方插入一
段代碼,另外一方面是將程序的其餘地方作壓縮。壓縮也能夠叫作加密,由於壓縮後的程序比較難看懂,主要是和原來的代碼有很大
的不一樣。最大的表現也就是他的主要做用就是程序自己變小了。變小以後的程序在傳輸方面有很大的優點。其次就是在程序執行時
,實時的對程序解壓縮。解壓縮功能是在第一步時插入的代碼完成的功能。聯起來 就是:upx能夠完成代碼的壓縮和實時解壓執行
。且不會影響程序的執行效率。upx和普通的壓縮,解壓不一樣點就算在於upx是實時解壓縮的。實時解壓的原理可使用一下圖形表
示: 1==>2==>3==>4==>5==>6
假設1是upx插入的代碼,2,3,4是壓縮後的代碼。5,6是隨便的什麼東西。
程序從1開始執行。而1的功能是將2,3,4解壓縮爲7,8,9。7,8,9就是2,3,4在壓縮以前的形式。
連起來就是:1==>7==>8==>9==>5==>6
最初代碼的形式就應該是:7==>8==>9==>5==>6
用upx壓縮以後形式爲:1==>2==>3==>4==>5==>6

執行時的形式變爲:1==>7==>8==>9==>5==>6
 相似的技術還有不少。這樣的技術較多的應用於:木馬和病毒躲避殺毒軟件時,發佈的程序防止被反編譯或破解時。upx是一
種典型的加殼程序或者壓縮程序。所以已經有很是成熟的去殼程序或者解壓縮程序。同時,不少的殺毒軟件 也能夠識別出加有upx
殼的病毒和木馬。而一些軟件生產場上爲了防止被破解所加的殼也同時被輕易的破解。在這樣 的狀況下不少人想出了產生本身的
加殼程序的想法。應此不少人都經過改編一些成熟的加殼程序來產生本身的加殼程序。其實改編upx也是很簡單的。由於upx的源代
碼是公開的,因此能夠下載它的源代碼來瞧瞧。upx能夠壓縮不少種類型 的可執行文件。所以若是本身只是想要壓縮exe程序,則
只須要閱讀與壓縮exe文件相關的內容。這些代碼是不多的。 改寫upx通常須要注意一下幾點: 一、保證修改後的加殼程序不會產生upx產生的特徵碼。有不少軟件能夠經過這些特徵碼識別出程序是通過upx加殼的。 二、保證加殼以後,程序仍然能夠順利執行。 三、在必定程度上保證效率不會降低太多。

轉載自:http://blog.csdn.net/zacklin/article/details/7419001
相關文章
相關標籤/搜索