定義
軟體脫殼,顧名思義,就是對軟體加殼的逆操作,把軟體上存在的殼去掉。
矛與盾
軟體的保護與破解
執行檔加密(加殼)是諸多
軟體保護方法中的一種。在上個世紀90年代後期(大約是1995-1999年其間)加殼方式的
軟體保護與破解的優勢經歷了交替上升、彼消此長的過程。
保護一方和破解一方基本上都需要閱讀DOS中斷21和中斷10的相關部分,深入的了解了計算機軟體的運行機制。
軟體保護經歷了簡單的加殼、內外結合、迷宮技術等過程。破解方使用SoftIce等工具進行跟蹤,從單機單步跟蹤分析到雙機比較運行等方式進行破解的過程。
其間也曾出現過一些破解工具,但是複雜的
軟體保護方法(高強度的
軟體加密),還需有破解高手進行長時間的手工勞動,才能部分破解。
隨著
軟體保護產品(
軟體狗、
加密鎖)硬體處理能力的提高,軟體保護越來越依賴高性能的硬體及高強度的
加密算法。
軟體保護和破解的個人英雄主義的色彩逐漸褪去了,依靠個人的能力支撐一個行業的時代也離我們逐漸遠去了。
殼的概念
簡介
首先我想大家應該先明白“殼”的概念。在自然界中,我想大家對殼這東西應該都不會陌生了,植物用它來保護種子,動物用它來保護身體等等。同樣,在一些計算機軟體里也有一段專門負責保護軟體不被非法修改或反編譯的程式。它們一般都是先於程式運行,拿到控制權,然後完成它們保護軟體的任務。就像動植物的殼一般都是在身體外面一樣理所當然(但後來也出現了所謂的“殼中帶籽”的殼)。由於這段程式和自然界的殼在功能上有很多相同的地方,基於命名的規則,大家就把這樣的程式稱為“殼”了。就像計算機病毒和自然界的病毒一樣,其實都是命名上的方法罷了。
發展
最早提出“殼”這個概念的,據我所知,應該是當年推出脫殼軟體 RCOPY 3 的作者熊焰先生。在幾年前的 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 檔案(後來放棄了)的脫殼軟體,在我的站台公開後,得到了很多朋友們的肯定。要知道,從RCOPY 3 開始,絕大部分的脫殼軟體都是要兩次運行
目標程式來確定 EXE 的重定位數據的。BW 的這一特點雖然有兼容性的問題,但也樹立了自己的風格、特色。經過幾個月的改善, BW 升級到了 2.0 版本,這個版本的推出可以說是 BW 的轉折點,因為它已經是一個成熟、穩定脫殼軟體了,它可以對付當時(現在)大多數的殼,包括當時最新的 FSE 0.6 等。更重要的是這個版本把選擇殼的和軟體“分界線”這個最令新手頭疼的步驟簡化到不能再簡化的地步,使更多的朋友接受了它。另外,能加強 BW 功力的 CI 模式也是其它脫殼軟體沒有的東西。BW 發表了最新的 2.5 BETA2 版本,增強了一些方面的功能,因它竟然可以脫掉號稱最厲害的磁碟加密工具 LOCKKING 2.0 的加密殼,因而進一步奠定了它在“脫殼界”的地位。說到最新,就不能不提 GTR、LTR、EDUMP、ADUMP、UPS、UPX、APACK 這幾個國外的好軟體了,它們每個都有自己的特色,可以說都是當今各類“殼”中的最新代表了。
技術演變
其他技術發展
由於 WINDOWS 3.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(偵測殼的能力極強)
使用方法:
第一種:待偵測殼的軟體(如aa.exe)和fi.exe位於同一目錄下,執行
windows起始選單的運行,鍵入
fi aa
第二種:待偵測殼的軟體(如aa.exe)和fi.exe位於同一目錄下,將aa的圖示拖到fi的圖示上
⒉偵測殼和軟體所用編寫語言的軟體language.exe(兩個功能
合為一體,很棒) 推薦language2000中文版,我的主頁可下載
傻瓜式軟體,運行後選取待偵測殼的軟體即可(open)
圖中所示軟體cr-xxzs.exe是用Visual Basic6.0編的,upx加殼
⒊軟體常用編寫語言Delphi,VisualBasic(VB)---最難破,VisualC(VC)