軟件脫殼

軟件脫殼

計算機科學技術術語
軟件脫殼,顧名思義,就是對軟件加殼的逆操作,把軟件上存在的殼去掉。在一些計算機軟件裡也有一段專門負責保護軟件不被非法修改或反編譯的程序。它們一般都是先于程序運行,拿到控制權,然後完成它們保護軟件的任務。由于這段程序和自然界的殼在功能上有很多相同的地方,基于命名的規則,大家就把這樣的程序稱為“殼”了。就像計算機病毒和自然界的病毒一樣,其實都是命名上的方法罷了。[1]
    中文名:軟件脫殼 外文名: 所屬學科: 英文名:software decorticate 領域:計算機科學技術 逆操作:軟件加殼 詞語定義:把軟件上存在的殼去掉

矛與盾

軟件的保護與破解

可執行文件加密(加殼)是諸多軟件保護方法中的一種。在上個世紀90年代後期(大約是1995-1999年其間)加殼方式的軟件保護與破解的優勢經曆了交替上升、彼消此長的過程。

保護一方和破解一方基本上都需要閱讀DOS中斷21和中斷10的相關部分,深入的了解了計算機軟件的運行機制。軟件保護經曆了簡單的加殼、内外結合、迷宮技術等過程。破解方使用SoftIce等工具進行跟蹤,從單機單步跟蹤分析到雙機比較運行等方式進行破解的過程。

其間也曾出現過一些破解工具,但是複雜的軟件保護方法(高強度的軟件加密),還需有破解高手進行長時間的手工勞動,才能部分破解。

随着軟件保護産品(軟件狗、加密鎖)硬件處理能力的提高,軟件保護越來越依賴高性能的硬件及高強度的加密算法。軟件保護和破解的個人英雄主義的色彩逐漸褪去了,依靠個人的能力支撐一個行業的時代也離我們逐漸遠去了。

殼的概念

簡介

首先我想大家應該先明白“殼”的概念。在自然界中,我想大家對殼這東西應該都不會陌生了,植物用它來保護種子,動物用它來保護身體等等。同樣,在一些計算機軟件裡也有一段專門負責保護軟件不被非法修改或反編譯的程序。它們一般都是先于程序運行,拿到控制權,然後完成它們保護軟件的任務。就像動植物的殼一般都是在身體外面一樣理所當然(但後來也出現了所謂的“殼中帶籽”的殼)。由于這段程序和自然界的殼在功能上有很多相同的地方,基于命名的規則,大家就把這樣的程序稱為“殼”了。就像計算機病毒和自然界的病毒一樣,其實都是命名上的方法罷了。

發展

最早提出“殼”這個概念的,據我所知,應該是當年推出脫殼軟件RCOPY3的作者熊焰先生。在幾年前的DOS時代,“殼”一般都是指磁盤加密軟件的段加密程序,可能是那時候的加密軟件還剛起步不久吧,所以大多數的加密軟件(加殼軟件)所生成的“成品”在“殼”和需要加密的程序之間總有一條比較明顯的“分界線”。有經驗的人可以在跟蹤軟件的運行以後找出這條分界線來,至于這樣有什麼用這個問題,就不用我多說了。但畢竟在當時,甚至現在這樣的人也不是很多,所以當RCOPY3這個可以很容易就找出“分界線”,并可以方便的去掉“殼”的軟件推出以後,立即就受到了很多人的注意。

相關評論

有人評價,在當時來說,的确是有很多全新的構思,單内存生成EXE可執行文件這項,就應該是世界首創了。但它的思路在程序的表現上還有很多可以改進的地方(雖然後來出現了可以加強其功力的RO97),這個想法也在後來和作者的面談中得到了證實。在這以後,同類型的軟件想雨後春筍一般冒出來,記得住名字的就有:UNKEY、MSCOPY、UNALL....等等,但很多的軟件都把磁盤解密當成了主攻方向,忽略了其它方面,當然這也為以後的“密界克星”“解密機器”等軟件打下了基礎

技術發展

脫殼技術的進步促進、推動了加殼技術的發展,在這種外部環境的催生下,各種加殼脫殼的軟件也如雨後春筍般出現。LOCK95和BITLOK等所謂的“殼中帶籽”加密程序紛紛出籠,真是各出奇謀,把小小的軟盤也折騰的夠辛苦的了。正在國内的加殼軟件和脫殼軟件較量得正火紅的時候,國外的“殼”類軟件早已經發展到像LZEXE之類的壓縮殼了。這類軟件說穿了其實就是一個标準的加殼軟件,它把EXE文件壓縮了以後,再在文件上加上一層在軟件被執行的時候自動把文件解壓縮的“殼”來達到壓縮EXE文件的目的。接着,這類軟件也越來越多,PKEXE、AINEXE、UCEXE和後來被很多人認識的WWPACK都屬于這類軟件,但奇怪的是,當時我看不到一個國産的同類軟件。

過了一段時間,可能是國外淘汰了磁盤加密轉向使用軟件序列号的加密方法吧,保護EXE文件不被動态跟蹤和靜态反編譯就顯得非常重要了。所以專門實現這樣功能的加殼程序便誕生了。MESS、CRACKSTOP、HACKSTOP、TRAP、UPS等等都是比較有名氣的本類軟件代表,當然,還有到現在還是數一數二的,由台灣同胞所寫的FSE。其實以我的觀點來看,這樣的軟件才能算是正宗的加殼軟件。

在以上這些加殼軟件的不斷升級較勁中,很多軟件都把比較“極端”技術用了上去,因為在這個時候DOS已經可以說是給衆高手們玩弄在股掌之間了,什麼保護模式、反SICE、逆指令等等。相對來說,在那段時間裡發表的很多國外脫殼程序,根本就不能對付這麼多的加殼大軍,什麼UPC、TEU等等都紛紛成為必防的對象,成績比較理想的就隻有CUP386了,反觀國内,這段時間裡也沒了這方面的“矛盾鬥争”。加殼軟件門揮軍直搗各處要崗重地,直到在中國遇到了TR這個銅牆鐵壁以後,才紛紛敗下陣來各謀對策,但這已經是一年多以後的事情了。我常想,如果TR能早兩年“出生”的話,成就肯定比現在大得多,甚至蓋過SICE也有可能。TR發表的時候WIN95的流行已經成為事實,DOS還有多少的空間,大家心裡都清楚。但話又說回來,TR的确是個好軟件,比起當年的RCOPY3有過之而無不及,同時也證明了我們中國的CRACK實力(雖然有點過時)。這個時候,前面提到過的FSE憑着強勁的實力也漸漸的浮出了水面,獨領風騷。其時已經是1997年年底了,我也走完了學生“旅程”。工作後在CFIDO的CRACK區認識了Ding-Boy,不久CRACK區關了,我從此迷上了INTERNET,并于98年6月建起了一個專門介紹“殼”的站台。在這段時間裡,各種“殼”類軟件也在不段的升級換代,但都沒什麼太大的進展,差不多就是TR和衆加殼軟件的版本數字之争而已。

技術革新

1998年8月,一個名為UNSEC(揭秘)的脫殼軟件發表了,它号稱可以脫掉98年8月以前發表的所有殼。我測試之後,覺得并沒傳聞中的那麼厲害,特别是兼容性更是令我不想再碰它。Ding-Boy給這個軟件的作者提了很多建議,但寄去的EMIAL有如泥牛入海,可能是一怒之下吧,不久Ding-Boy的BW(沖擊波)就誕生了。這個使用内存一次定位生成EXE文件(後來放棄了)的脫殼軟件,在我的站台公開後,得到了很多朋友們的肯定。要知道,從RCOPY3開始,絕大部分的脫殼軟件都是要兩次運行目标程序來确定EXE的重定位數據的。BW的這一特點雖然有兼容性的問題,但也樹立了自己的風格、特色。

經過幾個月的改善,BW升級到了2.0版本,這個版本的推出可以說是BW的轉折點,因為它已經是一個成熟、穩定脫殼軟件了,它可以對付當時(現在)大多數的殼,包括當時最新的FSE0.6等。更重要的是這個版本把選擇殼的和軟件“分界線”這個最令新手頭疼的步驟簡化到不能再簡化的地步,使更多的朋友接受了它。另外,能加強BW功力的CI模式也是其它脫殼軟件沒有的東西。BW發表了最新的2.5BETA2版本,增強了一些方面的功能,因它竟然可以脫掉号稱最厲害的磁盤加密工具LOCKKING2.0的加密殼,因而進一步奠定了它在“脫殼界”的地位。說到最新,就不能不提GTR、LTR、EDUMP、ADUMP、UPS、UPX、APACK這幾個國外的好軟件了,它們每個都有自己的特色,可以說都是當今各類“殼”中的最新代表了。

技術演變

其他技術發展

由于WINDOWS3.1隻是基于DOS下的一個圖形外殼,所以在這個平台下的“殼”類軟件很少,見過的就隻有像PACKWIN等幾個有限的壓縮工具,終難成氣候。

可能MICROSOFT保留了WIN95的很多技術上的秘密吧,所以即便是WIN95已經推出了3年多的時間,也沒見過在其上面運行的“殼”類軟件。直到98年的中期,這樣的軟件才遲遲的出現,而這個時候WIN98也發表了有一段日子了。應該是有DOS下的經驗吧,這類的軟件不發表由自可,一發表就一大批地的沖了出來。先是加殼類的軟件如:BJFNT、PELOCKNT等,它們的出現,使暴露了3年多的WIN95下的PE格式EXE文件得到了很好的保護。

大家都應該知道現在很多WIN95下的軟件都是用注冊碼的方法來區分、确定合法與非法用戶的吧,有了這類加殼軟件,這種注冊方法的安全性提高了不少,如果大家也有自己編的WIN95程序,就一定要多留意一下本類軟件了。接着出現的就是壓縮軟件了,因為WIN95下運行的EXE文件“體積”一般都比較大,所以它的實用價值比起DOS下的壓縮軟件要大很多,這類的軟件也很多,早些時候的VBOX、PEPACK、PETITE和最近才發表的ASPACK、UPX都是其中的佼佼者。在DOS下很流行的壓縮軟件WWPACK的作者也推出了對應WIN95版本的WWPACK32,由于性能并不是十分的突出,所以用的人也不太多。由于壓縮軟件其實也是間接給軟件加了殼,所以用它們來處理EXE也是很多軟件作者喜歡做的事情,最近新發表的很多軟件裡都可以看到這些加殼、加壓縮軟件的名字了。

有加殼就一定會有脫殼的,在WIN95下當然也不例外,但由于編這類軟件比編加殼軟件要難得多,所以到目前為止,我認為就隻有PROCDUMP這個軟件能稱為通用脫殼軟件了,它可以對付現在大多數的加殼、壓縮軟件所加的殼,的确是一個難得的精品。其它的脫殼軟件多是專門針對某某加殼軟件而編,雖然針對性強、效果好,但收集麻煩,而且這樣的脫殼軟件也不多。前些時候TR作者也順應潮流發表了TR的WIN95版本:TRW,由現在的版本來看可以對付的殼還不多,有待改進。

BW的作者Ding-Boy最新發表了一個WIN95的EXE加殼軟件DBPE。雖然它還不太成熟,但它可以為軟件加上使用日期限制這個功能是其它加殼軟件所沒有的,或者以後的加殼軟件真的會是像他說的那樣可以:加殼和壓縮并重、并施;随意加使用日期;加上注冊碼;加軟件狗(磁盤)保護;加硬件序列号判别。

相關信息

作者編好軟件後,編譯成exe可執行文件有一些版權信息需要保護起來,不想讓别人随便改動,如作者的姓名等需要把程序搞的小一點,從而方便使用。

于是,需要用到一些軟件,他們能将exe可執行文件壓縮,實現上述兩個功能,這些軟件稱為加殼軟件或壓縮軟件。

它不同于一般的winzip,winrar等壓縮軟件。

它是壓縮exe可執行文件的,壓縮後的文件可以直接運行。

加殼軟件

最常見的加殼軟件ASPACK,UPX,PEcompact。

不常用的加殼軟件WWPACK32;PE-PACK;PETITE;NEOLITE。

破殼方法

偵測殼和軟件所用編寫語言的軟件

偵測殼的軟件fileinfo.exe簡稱fi.exe

使用方法

第一種:待偵測殼的軟件和fi.exe位于同一目錄下,執行windows起始菜單的運行,鍵入fiaa

第二種:待偵測殼的軟件和fi.exe位于同一目錄下,将aa的圖标拖到fi的圖标上偵測殼和軟件所用編寫語言的軟件language.exe(兩個功能合為一體,很棒)推薦language2000中文版,我的主頁可下載

傻瓜式軟件,運行後選取待偵測殼的軟件即可打開。

圖中所示軟件cr-xxzs.exe是用VisualBasic6.0編的,upx加殼。

軟件常用編寫語言Delphi,VisualBasic(VB)---最難破,VisualC(VC)。

相關詞條

相關搜索

其它詞條