1. 程式人生 > >加殼與脫殼的原理

加殼與脫殼的原理

加殼一般是指保護程式資源的方法.
脫殼一般是指除掉程式的保護,用來修改程式資源.
病毒加殼技術與脫殼防毒方法 :
殼是什麼?脫殼又是什麼?這是很多經常感到迷惑和經常提出的問題,其實這個問題一點也不幼稚。當你想聽說脫殼這個名詞並試著去了解的時候,說明你已經在各個安全站點很有了一段日子了。下面,我們進入“殼”的世
界吧。


一、金蟬脫殼的故事


我先想講個故事吧。那就是金蟬脫殼。金蟬脫殼屬於三十六計中的混戰計。金蟬脫殼的本意是:寒蟬在蛻變時,本體脫離皮殼而走,只留下蟬蛻還掛在枝頭。此計用於軍事,是指通過偽裝擺脫敵人,撤退或轉移,以實現我方的戰略目標的謀略。穩住對方,撤退或轉移,決不是驚慌失措,消極逃跑,而是保留形式,抽走內容,穩住對方,使自己脫離險境達到己方戰略目標,己方常常可用巧妙分兵轉移的機會出擊另一部分敵人。三國時期,諸葛亮六出祁山,北伐中原,但一直未能成功,終於在第六次北伐時,積勞成疾,在五丈原病死於軍中。 維遵照諸葛亮的吩咐,在諸葛亮死後,祕不發喪,對外嚴密封鎖訊息。他帶著靈柩,祕密率部撤退。司馬懿派部隊跟蹤追擊蜀軍。姜維命工匠仿諸葛亮摸樣,雕了一個木人,羽扇綸巾,穩坐車中。並派楊儀率領部分人馬大張旗鼓,向魏軍發動進攻。魏軍遠望蜀軍,軍容整齊,旗鼓大張,又見諸葛亮穩坐車中,指揮若定,不知蜀軍又耍什麼花招,不敢輕舉妄動。司馬懿一向知道諸葛亮“詭計多端”,又懷疑此次退兵乃是誘敵之計,於是命令部隊後撤,觀察蜀軍動向。姜維趁司馬懿退兵的大好時機,馬上指揮主力部隊,迅速安全轉移,撤回漢中。等司馬懿得知諸葛亮已死,再進兵追擊,為時已晚。相信這個故事,大家在大型連續劇《三國演義》裡已經看過了。呵呵,只是沒有理解得這麼深入罷了!而在黑客入侵技術中,金蟬脫殼則是指:刪除系統執行日誌 攻擊者攻破系統後,常刪除系統執行日誌,隱藏自己的痕跡...呵呵


二、殼,脫殼,加殼


在自然界中,我想大家對殼這東西應該都不會陌生了,由上述故事,我們也可見一斑。自然界中植物用它來保護種子,動物用它來保護身體等等。同樣,在一些計算機軟體裡也有一段專門負責保護軟體不被非法修改或反編譯的程式。它們一般都是先於程式執行,拿到控制權,然後完成它們保護軟體的任務。就像動植物的殼一般都是在身體外面一樣理所當然(但後來也出現了所謂的“殼中帶籽”的殼)。由於這段程式和自然界的殼在功能上有很多相同的地方,基於命名的規則,大家就把這樣的程式稱為“殼”了。就像計算機病毒和自然界的病毒一樣,其實都是命名上的方法罷了。 從功能上抽象,軟體的殼和自然界中的殼相差無幾。無非是保護、隱蔽殼內的東西。而從技術的角度出發,殼是一段執行於原始程式前的程式碼。原始程式的程式碼在加殼的過程中可能被壓縮、加密……。當加殼後的檔案執行時,殼-這段程式碼先於原始程式執行,他把壓縮、加密後的程式碼還原成原始程式程式碼,然後再把執行權交還給原始程式碼。 軟體的殼分為加密殼、壓縮殼、偽裝殼、多層殼等類,目的都是為了隱藏程式真正的OEP(入口點,防止被破解)。關於“殼”以及相關軟體的發展歷史請參閱吳先生的《一切從“殼”開始》。


(一)殼的概念


作者編好軟體後,編譯成exe可執行檔案。 1.有一些版權資訊需要保護起來,不想讓別人隨便改動,如作者的姓名,即為了保護軟體不被破解,通常都是採用加殼來進行保護。 2.需要把程式搞的小一點,從而方便使用。於是,需要用到一些軟體,它們能將exe可執行檔案壓縮, 3.在黑客界給木馬等軟體加殼脫殼以躲避防毒軟體。實現上述功能,這些軟體稱為加殼軟體。


(二)加殼軟體最常見的加殼軟體


ASPACK ,UPX,PEcompact 不常用的加殼軟體WWPACK32;PE-PACK ;PETITE NEOLITE


(三)偵測殼和軟體所用編寫語言的軟體


因為脫殼之前要查他的殼的型別。


1.偵測殼的軟體fileinfo.exe 簡稱fi.exe(偵測殼的能力極強)。


2.偵測殼和軟體所用編寫語言的軟體language.exe(兩個功能合為一體,很棒),推薦language2000中文版(專門檢測加殼型別)。


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


(四)脫殼軟體


軟體加殼是作者寫完軟體後,為了保護自己的程式碼或維護軟體產權等利益所常用到的手段。目前有很多加殼工具,當然有盾,自然就有矛,只要我們收集全常用脫殼工具,那就不怕他加殼了。軟體脫殼有手動脫和自動脫殼之分,下面我們先介紹自動脫殼,因為手動脫殼需要運用匯編語言,要跟蹤斷點等,不適合初學者,但我們在後邊將稍作介紹。


加殼一般屬於軟體加密,現在越來越多的軟體經過壓縮處理,給漢化帶來許多不便,軟體漢化愛好者也不得不學習掌握這種技能。現在脫殼一般分手動和自動兩種,手動就是用TRW2000、TR、SOFTICE等除錯工具對付,對脫殼者有一定水平要求,涉及到很多組合語言和軟體除錯方面的知識。而自動就是用專門的脫殼工具來脫,最常用某種壓縮軟體都有他人寫的反壓縮工具對應,有些壓縮工具自身能解壓,如UPX;有些不提供這功能,如:ASPACK,就需要UNASPACK對付,好處是簡單,缺點是版本更新了就沒用了。另外脫殼就是用專門的脫殼工具來對付,最流行的是PROCDUMP v1.62 ,可對付目前各種壓縮軟體的壓縮檔。在這裡介紹的是一些通用的方法和工具,希望對大家有幫助。我們知道檔案的加密方式,就可以使用不同的工具、不同的方法進行脫殼。下面是我們常常會碰到的加殼方式及簡單的脫殼措施,供大家參考: 脫殼的基本原則就是單步跟蹤,只能往前,不能往後。脫殼的一般流程是:查殼->尋找OEP->Dump->修復 找OEP的一般思路如下: 先看殼是加密殼還是壓縮殼,壓縮殼相對來說容易些,一般是沒有異常,找到對應的popad後就能到入口,跳到入口的方式一般為。 我們知道檔案被一些壓縮加殼軟體加密,下一步我們就要分析加密軟體的名稱、版本。因為不同軟體甚至不同版本加的殼,脫殼處理的方法都不相同。


常用脫殼工具:


1、檔案分析工具(偵測殼的型別):Fi,GetTyp,peid,pe-scan,


2、OEP入口查詢工具:SoftICE,TRW,ollydbg,loader,peid


3、dump工具:IceDump,TRW,PEditor,ProcDump32,LordPE


4、PE檔案編輯工具PEditor,ProcDump32,LordPE


5、重建Import Table工具:ImportREC,ReVirgin


6、ASProtect脫殼專用工具:Caspr(ASPr V1.1-V1.2有效),Rad(只對ASPr V1.1有效),loader,peid


(1)Aspack: 用的最多,但只要用UNASPACK或PEDUMP32脫殼就行了


(2)ASProtect+aspack:次之,國外的軟體多用它加殼,脫殼時需要用到SOFTICE+ICEDUMP,需要一定的專業知識,但最新版現在暫時沒有辦法。


(3)Upx: 可以用UPX本身來脫殼,但要注意版本是否一致,用-D 引數


(4)Armadill: 可以用SOFTICE+ICEDUMP脫殼,比較煩


(5)Dbpe: 國內比較好的加密軟體,新版本暫時不能脫,但可以破解


(6)NeoLite: 可以用自己來脫殼


(7)Pcguard: 可以用SOFTICE+ICEDUMP+FROGICE來脫殼


(8)Pecompat: 用SOFTICE配合PEDUMP32來脫殼,但不要專業知識


(9)Petite: 有一部分的老版本可以用PEDUMP32直接脫殼,新版本脫殼時需要用到SOFTICE+ICEDUMP,需要一定的專業知識


(10)WWpack32: 和PECOMPACT一樣其實有一部分的老版本可以用PEDUMP32直接脫殼,不過有時候資源無法修改,也就無法漢化,所以最好還是用SOFTICE配合 PEDUMP32脫殼


我們通常都會使用Procdump32這個通用脫殼軟體,它是一個強大的脫殼軟體,他可以解開絕大部分的加密外殼,還有指令碼功能可以使用指令碼輕鬆解開特定外殼的加密檔案。另外很多時候我們要用到exe可執行檔案編輯軟體ultraedit。我們可以下載它的漢化註冊版本,它的註冊機可從網上搜到。ultraedit開啟一箇中文軟體,若加殼,許多漢字不能被認出 ultraedit開啟一箇中文軟體,若未加殼或已經脫殼,許多漢字能被認出 ultraedit可用來檢驗殼是否脫掉,以後它的用處還很多,請熟練掌握例如,可用它的替換功能替換作者的姓名為你的姓名注意位元組必須相等,兩個漢字替兩個,三個替三個,不足處在ultraedit編輯器左邊用00補。


常見的殼脫法:


(一)aspack殼 脫殼可用unaspack或caspr 1.unaspack ,使用方法類似lanuage,傻瓜式軟體,執行後選取待脫殼的軟體即可. 缺點:只能脫aspack早些時候版本的殼,不能脫高版本的殼 2.caspr第一種:待脫殼的軟體(如aa.exe)和caspr.exe位於同一目錄下,執行windows起始選單的執行,鍵入 caspr aa.exe脫殼後的檔案為aa.ex_,刪掉原來的aa.exe,將aa.ex_改名為aa.exe即可。使用方法類似fi 優點:可以脫aspack任何版本的殼,脫殼能力極強缺點:Dos介面。第二種:將aa.exe的圖示拖到caspr.exe的圖示上***若已偵測出是aspack殼,用unaspack脫殼出錯,說明是aspack高版本的殼,用caspr脫即可。


(二)upx殼 脫殼可用upx待脫殼的軟體(如aa.exe)和upx.exe位於同一目錄下,執行windows起始選單的執行,鍵入upx -d aa.exe。


(三)PEcompact殼 脫殼用unpecompact 使用方法類似lanuage傻瓜式軟體,執行後選取待脫殼的軟體即可。


(四)procdump 萬能脫殼但不精,一般不要用 使用方法:執行後,先指定殼的名稱,再選定欲脫殼軟體,確定即可脫殼後的檔案大於原檔案由於脫殼軟體很成熟,手動脫殼一般用不到。

相關推薦

原理

加殼一般是指保護程式資源的方法. 脫殼一般是指除掉程式的保護,用來修改程式資源. 病毒加殼技術與脫殼防毒方法 : 殼是什麼?脫殼又是什麼?這是很多經常感到迷惑和經常提出的問題,其實這個問題一點也不幼稚。當你想聽說脫殼這個名詞並試著去了解的時候,說明你已經在各個安全站點很有了一段日子了。下面,我們進入“殼”的世

解釋

首先要認識脫殼一切從“殼”開始   我寫這篇東西的主要目的是讓初到本站的新手們能對“殼”有個大概的認識,知道我每天說了些什麼。限於本人的知識,如果有 ERROR 之處,還請多原諒。如果你覺得還可以, 也歡迎轉貼,但請保留文章的完整性和作者的資料。當然如果你想把它發表,硬塞

Android SO (加密)思路

   0x01 常見的Android SO加殼(加密)思路    1.1 破壞Elf Header    將Elf32_Ehdr 中的e_shoff, e_shnum, e_shstrndx, e_shentsize欄位處理,變為無效值。由於在連結過程中,這些欄位是無用的,所

360 so動態方法

轉載地址:http://mp.weixin.qq.com/s?__biz=MjM5NzAxMzk4NA==&mid=209300616&idx=1&sn=bcc440640f68e9355fcb20842a1ddaef&scene=0#rd

C/C++彙編的不同以及DLL相對於EXE的難點

這個月主要是學習PE檔案以及殼。革命尚未成功,先記下遇到的難點吧。C/C++殼與彙編殼的不同與DLL殼相對於EXE殼的難點看起來是不同的話題,但兩者有一定的關聯性,暫且放在一起吧。而且後面一個難題我還在攻克中,不能提供答案,只能讓人思索。 C/C++殼與彙編殼的不同 很奇怪

有關以及例項講解

當前流行的查殼工具主要以peid和fileinfo這兩個軟體為代表。 PEiD的原理是利用查特徵串搜尋來完成識別工作的。各種開發語言都有固定的啟動程式碼部分,利用這點就可識別出何種語言編譯的。同樣,不同的殼也有其特徵碼,利用這點就可以識別是被何種殼所加密。PEiD提供了一個

手動方法及原理

介紹三種方法: 1.單步跟蹤法 2.ESP定律法 3.2次記憶體映象法 1.單步跟蹤法 宗旨:向上的跳轉不讓實現,向下的跳轉實現,當發現大跨度跳轉時,即會到OEP 2.ESP定律法 遵循堆疊平衡原理,在殼對程式進行操作加密或者壓縮時,會把程式的OEP壓入棧中,當殼執行完成

]尋找真正的入口(OEP)--廣義ESP定律

  ESP定律,ESP的適用範圍是什麼,ESP定律的原理是什麼,如何使用ESP定律? 作者:Lenus FROM: poptown.gamewan.com/bbs E-MAIL:[email protected] 1.前言  在論壇上看到很多朋友,不知道什麼是E

除錯原理-逆向pe-

這幾天都沒怎麼寫部落格了,主要是因為在寫檔案系統過濾的時候老是 藍屏,感覺心力交瘁,根本一點都不想再看核心程式碼,就逆向分析了一下peid的原理,前輩們關於這一塊的分析的文章也很多,這裡只是按照我個人的思路對peid進行逆向分析,大體弄清楚peid怎麼對一個pe

_esp定律原理

本帖最後由 zf616545 於 2014-10-2 22:14 編輯ESP定律算是我們在脫殼當中最常使用的方法之一,也特別適合像我一樣的新手!而今天文章說的是ESP脫殼的原理和分析!只有知道原理了,我們的技術才能走得列遠! 一.準備知識在我們開始討論ESP定律之前,我先給你講解一下一些簡單的彙編知識。 1

的工作原理

相關名詞      1)Entry Point (入口點)      PE格式的可執行檔案的執行時的入口點,即是PE格式中的Entry Point。      用PEditor或者LordPE之類的PE檢視工具看看NotePad.exe,你就會看到Entry Point的值

總結Themida / Winlicense軟體的方法

   1, 檢視殼版本,這個方法手動也可以,因為這個殼的版本號是寫在程式裡面的,在解壓後下斷點即可檢視,這裡有通用的指令碼,我就不再羅嗦了,跟著指令碼學吧,使用方法很簡單,直接執行指令碼即可。(指令碼我也已傳在資源中,可在文章結尾獲得下載地址)     2,對於 Ve

ART模式下基於dex2oat原理分析

一般情況下,Android Dex檔案在載入到記憶體之前需要先對dex檔案進行優化處理(如果Android Dex檔案已經優化過,則不需要進行優化處理操作,後面進行載入到記憶體即可),在Dalvik虛擬機器模式下,Android dex檔案經過dex2oat程序優化為o

手動—dump重建輸入表

很久沒玩逆向了,今天權當複習,順便做個筆記 文章中用到的demo下載地址: 附件中包含demo以及文章word原稿 用到工具: Ollydbg LordPE ImportREC 這些工具請自行下載準備 Dump原理這裡也不多做描述,想要了解google it!常見的d

iOS逆向工程之App

工程 脫殼 一、生成dumpdecrypted.dylib動態庫首先我們要生成“砸殼”用的動態庫dumpdecrypted.dylib,我們“砸殼”時主要用到這個動態庫。該動態庫的源碼在github上是開源的(Github地址),要想得到dumpdecrypted.dylib這個動態庫,只需要從git

IDA分析後丟失導入表的PE

alt getc port 資源 rec mut earch 斷點 由於 1. 問題 一些程序經過脫殼後(如用OD的dump插件),一些導入表信息丟失了,導致拖入IDA後看不到API的信息(如右圖所示,第一個紅圈處實際是GetCurrentProcessId),給分析造

使用ConfuserEx加密混淆程序以及如何反編譯

準備 blog 分享 alt user mil .net 發現 guid ConfuserEx是.NET下的一款開源混淆工具,功能比較強大,應用也較廣泛,本文就使用ConfuserEx工具演示如何混淆及如何對其混淆的程序進行脫殼。 所需工具: 請自行百度下載如

IDA 調試 Android 方法及簡單的實現

all fun cati chm std function sso .apk 代碼位置 IDA 調試 Android 方法及簡單的脫殼實現 標簽: android原創逆向調試dalvik 2016-05-24 14:24 9286人閱讀 評論(3) 收藏

安卓逆向之基於Xposed-ZjDroid

重定位 war fill 沙盒 mar 內存 ces 鼠標 文件加載 http://bbs.pediy.com/thread-218798.htm 前言 之前介紹了普通常見的反編譯模式 但對於使用了 360加固 棒棒 愛加密 等等的加固應用就沒辦法了、 你

逆向工程之App

rar gin why 小文件 -a dump anti 功能 加固 本篇博客以微信為例,給微信脫殼。"砸殼"在iOS逆向工程中是經常做的一件事情,,因為從AppStore直接下載安裝的App是加殼的,其實就是經過加密的,這個“砸殼”的過程就是一個解密的過程。未砸殼的Ap