




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、逆向(n xin)工程學校:華北電力大學班級(bnj):信安1301組號:第二組 組員:-共三十五頁http:/www.RedO 逆向工程背景逆向工程(又稱逆向技術),是一種產品設計技術再現過程,即對一項目標產品進行逆向分析及研究,從而演繹并得出該產品的處理流程、組織結構、功能特性及技術規格等設計要素,以制作出功能相近,但又不完全一樣的產品。逆向工程源于商業及軍事領域中的硬件分析。其主要目的是在不能輕易獲得必要的生產信息的情況下,直接從成品分析,推導出產品的設計原理。逆向工程是從任何的人造的東西中提取知識或者設計規劃的過程。逆向工程的概念早在計算機或者說現代技術出現之前就已經存在了,這個概念可
2、以追溯到工業革命時期。逆向工程與傳統的科學研究非常相似。在傳統科學研究中,研究者們致力于搞清楚原子(yunz)的構造或人類的思維。逆向工程與傳統科學研究之間的差異是,逆向工程的研究對象是人造的,而傳統科學研究的對象是自然現象。共三十五頁逆向工程(gngchng)工具逆向工程(gngchng)方法手段逆向工程原理及總結逆向工程123共三十五頁脫掉保護(boh)軟件的殼根據(gnj)軟件的注冊性質暴力破解逆向工程工具共三十五頁 逆向工程工具(1)文件分析工具(偵測殼的類型(lixng):Fi,Get-Typ, peid,pescan;(2)OEP入口查找工具:peid;(3)調試工具:SoftIC
3、E,TRW,ollybdg;(4)Dump工具:IceDump,TRW,PEditor,ProcDump32,lmrdPE;(5)PE文件編輯工具:PEditor,ProcDump32,LordPE;(6)重建ImportTable工具:ImportREC,Re-Virgin。共三十五頁文件(wnjin)分析工具Fi:是各類查殼工具中,性能最強的。但由于其長時間沒更新,其識別文件的數據庫比較舊,己不能識別各種新殼。peid:現在軟件越來越多的加殼,給破解帶來非常大的不便,用這個軟件可以檢測(jin c)出常見的各種殼,非常方便。 共三十五頁OEP入口查找(ch zho)工具 peid:PEiD
4、(PE Identifier)是一款著名的查殼工具,其功能強大,幾乎可以偵測出所有的殼,其數量(shling)已超過470 種PE 文檔 的加殼類型和簽名。共三十五頁調試(dio sh)工具SoftICESoftICE是Compuware NuMega公司的產品,是Windows2000及之前的內核級調試(dio sh)工具,兼容性和穩定性極好,可在源代碼級調試(dio sh)各種應用程序和設備驅動程序,也可使用TCP/IP連接進行遠程調試(dio sh)。ICE的含義(In Circuit Emulator)即實體電路模擬器,是用來跟蹤軟件執行動作細節的一個模擬CPU的電子設備。當然這種設備
5、價格昂貴,不是常人所能擁有的。NuMega公司推出的Soft ICE,意思是靠軟件實現ICE的功能。TRW運行于 WIN9x 下的跟蹤調試器,可以跟蹤 DOS COM, DOS EXE, DOS保護模式程序, 16位 NE, 32位 PE 等類程序。允許設置各種復雜斷點。對Win9x下的程序跟蹤引入了許多新的思想。另外,也可以像解殼工具一樣,對加密外殼的去除,自動產生EXE文件,適合喜歡對程序進行除錯和跟蹤的電腦玩家使用。 OLLYDBG是一個新的動態追蹤工具,將IDA與SoftICE結合起來的思想,Ring 3級調試器,非常容易上手,己代替SoftICE成為當今最為流行的調試解密工具了。同時
6、還支持插件擴展功能,是目前最強大的調試工具。共三十五頁Dump工具(gngj)IceDump:是一款配合SoftICE擴展其內存操作的工具,IceDump支持Windows 9x、Windows Millennium系統,它的出現,使SoftICE如虎添翼,TRW2000的許多特色功能在SoftICE里也可實現了。PEditor:一款很好的PE文件編輯工具,其功能有轉存進程、在SoftICE中插入中斷、編輯PE文件的導入表、節表、重建校驗和、重建程序等。其重建程序功能可有效減小脫殼后程序的大小,去除其中的垃圾代碼。與其它PE編輯工具相比,PEditor 可把以上功能都集中在一個右鍵菜單內,方便
7、修改PE文件。是hack編程,破解軟件及做免殺的必備工具。ProcDump32:是一個輕量級的Sysinternal團隊開發的命令行工具, 它的主要目的是監控應用程序的CPU異常動向, 并在此異常時生成crash dump文件, 供研發人員和管理員確定(qudng)問題發生的原因. 共三十五頁PE文件(wnjin)編輯工具LordPE:是一款功能強大的PE文件分析、修改、脫殼軟件。LordPE是查看PE格式文件信息的首選工具,并且可以(ky)修改相關信息。還有PEditor,Proc,Dump32等共三十五頁重建(zhn jin)ImportTable工具ImportREC(Import RE
8、Constructor) 它可以從雜亂的IAT中重建一個新的Import表(例如加殼軟件等),重建Import表的描述符、IAT和所有(suyu)的ASCII函數名。用它配合手動脫殼,可以脫UPX、CDilla1、PECompact、PKLite32、Shrinker、ASPack, ASProtect等殼。Re-Virgin 對比與importREC來說這重建輸入表工具,不太容易上手共三十五頁 手動脫殼方法 手動脫殼的主要步驟是尋找人口點,轉儲(dump)程序,修復引人函數表(ImportTable),修復pe文件。 現在的殼分壓縮殼,加密殼,偽裝殼,多重殼。 1.壓縮殼的目的是使文件由大小
9、變小,便于在網上傳播。并有一定的保護作用,他人無法反匯編加殼程序。 2.加密殼的目的是用各種手段保護軟件殼不被脫掉、跟蹤,文件大小不是(b shi)它的目的,有時候甚至變大。 3.偽裝殼其實也還是一種加密殼,只不過它先是偽裝成一些開發工具的頭部,如VC,使得偵殼工具無法準確地偵察出它加殼的種類。 4.多重殼技術是采用多種殼加密技術,不光加一層殼,加多重不一樣的殼達到保護的目的。共三十五頁加殼程序(chngx)判定 判斷加殼程序和普通程序很容易,用Ollydbg(簡稱Od)載入程序,沒加殼軟件無任何提示。加密殼有些Od載人時會提示壓縮,用運行后,Od提示程序異常。普通加殼Od載人時一般都會發現,
10、提示軟件被加殼,是否(sh fu)繼續分析。若脫殼沒有脫干凈,Od載人時也會提示加殼。手動脫殼時,用OUdbg載人程序,脫殼程序里面就會有很多循環。對付循環時,只能讓程序往前運行,基本不能讓它往回跳,要想辦法跳出循環圈。單步跟蹤,找到程序的人口地址。這就是動態共三十五頁 調試脫殼的基本思想 開始用Od載人程序,一般有殼的話都會彈出一個人口警告,屬于正常現象,此時,如果(rgu)先用peid等軟件探察過提示沒有加殼,軟件是用c+編寫的,那么如果彈出入口警告極有可能表示程序的殼是經過偽裝的。這里有幾個小竅門,如果使用aspack或upx加的殼,人口指令一般都是pushad,用于保護現場,記住這個小
11、竅門有可能成為脫掉多層殼的捷徑。然后開始單步跟蹤調試,這也是逆向工程最常用的方法。接下來的步驟就是一路前進,保證不要往后退,對于簡單殼,遇到回跳指令,可直接點擊其下一條指令然后強行跳轉到那里,但是這只是很簡單的情況,一般來說這種情況程序都要跑飛,如此就只有再看前面是否忽略可以跳出循環的地方。 共三十五頁方法(fngf)動態分析方法(fngf)逆向實現方法靜態分析方法1)詞法和語法分析。2)圖形、圖表。3)復用代碼分析。4)程序切片1)植入法 2)采用調試器獲取動態信息 3) 在二進制碼中植入信息。1.)分析通過信息交換所得的觀察。2)反匯編,即使用反匯編器.3)反編譯逆向工程方法手段共三十五頁
12、基本的逆向方法(1)離線代碼分析 即使用反匯編器或者反編譯器將二進制的可執行文件轉換成人們可以閱讀的表示形式。通過人工的閱讀和分析出來進行的,為我們提供(tgng)了程序的整體框架,且易于查找人們感興趣的特定函數。缺點:(與現場分析相比)1)無法看到程序所處理的數據以及數據的流動,故需更好的理解代碼。2)你必須猜測程序處理的是哪些類型的數據,而這些數據又是如何隨著代碼的執行流動的。3)當程序“加殼”好之后,其代碼被加密或者壓縮了,只有在運行時才能脫殼。這種情況下,就只能使用現場分析了。共三十五頁基本的逆向方法(2)現場代碼分析 現場分析同樣涉及代碼轉換成易于人們理解的形式,但是(dnsh)人們
13、要做的是在調試器中運行代碼,并觀察其在運行現場中的行為,而不需要靜態的閱讀轉換好的代碼。1)由于可以觀察程序的內部數據以及數據對代碼流的影響,因而可以為我們提供更多的信息。2)人們可以看到程序中包含哪些變量,當程序讀取或修改這些數據時會發生什么。3)它提供了更多有用的數據,對于初學者來說,是個更好的方法。共三十五頁軟件逆向工程分析(fnx)方法 原理: 軟件逆向工程的基本原理是抽取軟件系統的主要部分而隱藏細節,然后使用抽取出的實體在高層上描述軟件系統。 研究現狀(xinzhung): 軟件逆向工程的研究已經有10多年的歷史了。在國外,軟件逆向工程是作為對軟件維護的一部分出現的,主要是通過逆向工
14、程理解程序,對系統進行維護、遷移和進化遺產系統。共三十五頁 目前,逆向工程技術的重要性已經(y jing)引起重視,得到了國內外學術界和商業界的廣泛認同。在學術界,面向逆向工程領域的國際會議WCREEl4、IWPC和PASTE每年舉行一次。卡內基梅隆大學軟件工程研究所成立了專門的再工程中心,致力于逆向工程的研究。IBM研究中心(IBM Research)設立了“軟件工程中關注點的多維分解”研究項目,研究工作已經進行了多年。軟件逆向(n xin)工程分析方法共三十五頁軟件逆向工程分析方法1.靜態分析方法 對軟件的分析一般從靜態開始,通過閱讀程序,跟蹤數據變化過程和控制過程,對代碼有一個初步認識,
15、靜態分析方法主要有以下四種(s zhn):1)詞法和語法分析。通過分析代碼中的分支情況 ,循環情況, 以及調用關系 , 語句含義, 變量之間的聯系等 ,對代碼功能有一個初步的認識。2)圖形、圖表。在面向對象的軟件逆向分析過程中, 組件之間關系比較復雜, 包括繼承、泛化、訪問、多態等, 所以常采用類圖、協作圖等表示不同對象或類之間的關系。共三十五頁軟件逆向工程分析方法1.靜態分析方法 3)復用代碼分析。對代碼中常出現的代碼段或函數功能段進行深入分析, 對重復代碼的大小 ,次數 ,上下文信息等的分析能夠幫助(bngzh)我們更好地理解使用這些重復代碼的程序功能。4)程序切片。這主要是針對較長的程序
16、段的分析方法, 根據程序中的跳轉語句、判斷語句等, 將程序分成較小的片段 ,這樣每一個小片段的功能比較單一 ,而且只涉及盡量少的代碼, 在功能理解上更為容易。共三十五頁2.動態分析方法 只通過靜態模型很難理解一個(y )復雜系統的行為,因此監視并獲取系統運行時產生的動態信息是十分重要的。動態分析方法主要有3種:1)植入法,即采用在源代碼中植入語句。主要原理是利用代碼的結構信息,依據固定的規則,將軟件觸發器添加到代碼中。2)采用調試器獲取動態信息。調試器是用戶可用在程序運行時控制代碼的執行,檢查程序狀態以及變量的值等信息。3)在二進制碼中植入信息。這方面需要良好的工具支持。共三十五頁軟件逆向工程
17、實現方法1.分析通過信息交換所得的觀察 最常用于協議逆向工程,涉及(shj)使用總線分析器和數據包嗅探器。(1)在接入計算機總線或網絡的連接,并成功截取通信數據后,可以對總線或網絡行為進行分析,以制造出擁有相同行為的通信實現。(2)此法特別適用于設備驅動程序的逆向工程。有時,由硬件制造商特意所做的工具,如JTAG端口或各種調試工具,也有助于嵌入式系統的逆向工程。對于微軟的Windows系統,受歡迎的底層調試器有SoftICE。共三十五頁2.反匯編 即使用反匯編器,把程序的原始機器碼,翻譯成較便于閱讀(yud)理解的匯編代碼。這適用于任何的計算機程序,對不熟悉機器碼的人特別有用。流行的相關工具有
18、Ollydebug和IDA。(1)對于逆向工作人員而言,OllyDebug可能是最佳的用戶模式調試器,且具有強大的內置反匯編器,能夠提供強大的代碼分析能力的反匯編器。(2)如果要逆向內核模式的代碼,或者跨多個進程觀察全局系統,可以使用內核模式調試器,否則OllyDebug就已經足夠了。共三十五頁(3)OllyDebug中還包括一個內置的編譯和修補引擎,可以在程序中的任何(rnh)區域輸入匯編語言代碼,然后將這個更改后的程序提交運行,還可以為某個程序所作的修補存儲一個列表,并在調試程序的時候應用這些修補中的部分或全部。(4)IDA Pro是強大的反匯編器和不錯的用戶模式調試器,它成功地把IDA強
19、大的反匯編器和扎實的調試能力結合在一起。這無疑使IDA成為逆向工程領域的瑞士軍刀。共三十五頁3.反編譯 即使用反編譯器,嘗試從程序的機器碼或字節碼,重現高級語言形式的源代碼。其思想是嘗試逆向編譯過程(guchng),以獲取最初的源代碼文件或與接近于最初源代碼的文件。(1)對于未被混淆的程序,高質量的反編譯對于我們來說意味著可以把這樣的.NET程序的逆向工程簡單的歸結為閱讀高級語言代碼和試著弄清楚程序的功能,也就是通常所說的程序理解;我們很少需要閱讀代碼,除非代碼混淆很嚴重,使得反編譯器無法生成一個可讀性比較高的高級語言來表達它。共三十五頁當我們無法得到想要的知識、思想和設計理念時,通常使用逆向
20、工程來獲取它們。一般地,逆向工程就是在物理上將已有的產品解剖,以揭示其中的秘密。然后用這些設計秘密來制造相似或者更好的產品。逆向工程是了解軟件“所作所為”的一套最重要的技術和工具。正式地講,逆向工程是“通過分析目標系統以識別系統組件(z jin)以及這些組件(z jin)之間相互關系并創建該系統另一種形式的表現或更高級的抽象過程(IEEE 1990).這使得我們能夠想象出軟件的結構,他的工作方式以及驅動它行為的特征。分析技術和軟件自動檢測工具的應用程序,為我們理解軟件的復雜度和弄清“真相”提供了切實可行的方法。逆向要求深入地理解這些較底層次的東西。逆向工程師必須完全了解在程序源代碼與CPU之間
21、傳遞的所有事物。逆向工作分成兩個階段,首先是對早期程序進行大范圍的觀察,這個階段被稱為系統級逆向。系統級逆向幫助我們確定程序的基本結構,有時甚至能幫我們找到感興趣的區域。一旦對程序結構有了一個基礎的認識,并確定了感興趣的區域,你就可以使用代碼級逆向技術進一步開展工作了。代碼級逆向技術為我們提供所選代碼塊的詳細信息。共三十五頁系統級逆向包括程序上運行各種不同工具、利用不同的操作系統服務獲取信息、檢查程序可執行文件、跟蹤程序輸入輸出等等。這些信息大多數來自操作系統,因為根據定義,一個程序與外部世界任何交互都必須通過操作系統。這正是逆向工程者必須了解操作系統的原因在逆向過程中,通過操作系統可以獲取所
22、研究的目標程序的大量信息。代碼級逆向是一種藝術,從程序的二進制代碼中提取設計理念和算法是一個復雜的過程,他要求逆向工程師不但要掌握逆向技術,而且還要對軟件開發、CPU以及操作系統有相當深入地了解。軟件的復雜度深不可測,即便能夠得到編寫良好、文檔齊全的源代碼,人們也會驚訝于理解它所面臨的困難。破解構成程序所用的低級指令序列更是難上加難。必須熟悉軟件工程的重要概念。代碼級逆向從非常低階層次觀察代碼,我們將會看到關于如何運轉軟件的所有微小的細節,這些細節大多由編譯器自動生成,理解這些細節如何與程序及其功能聯系(linx)起來成為一件困難的事情。共三十五頁底層軟件是逆向工程領域中的一個重要方面,是軟件
23、體系中基礎設施部分的總稱。由于軟件的底層部分通常只對逆向工程師可見,所以我們必須深入了解對這些共同構成底層軟件“王國”的層次在逆向過程中,當我們嘗試在高階概念與在查看程序的二進制代碼所持的低階視角之間建立直觀的聯系時,就能體會到其中的復雜性操作系統在逆向工程中有著很重要的作用。程序與操作系統緊密聯系在一起,通過探查(tn ch)程序與操作系統之間的接口來獲取大量信息,另外,每個程序的關鍵之處在于它與外界之間的通信(程序接收用戶輸入,并將數據輸出到屏幕、寫入文件等等),了解關于操作系統的基礎知識,首先理解操作系統的可執行文件格式是至關重要的,因為可執行文件頭通常會包含相當多的關于程序及其結構的信
24、息,另外,了解一下操作系統是怎樣與外界通信,將會有助于我們利用各種破譯程序。共三十五頁總結(zngji)存在問題: 盡管經過這么多年的發展,逆向工程研究取得了進步性的研究成果,但在應用、理論方面仍然不夠成熟,有待于在以下幾方面進行進一步研究:(1)符合經濟實用的需求。 逆向工程的目標在于為系統維護和系統演化中的系統理解提供支持,其在實際使用中的經濟影響是至關重要的。因而,逆向工程系統必須以實用性為首要目的,要能產生實際的經濟效益。逆向工程過程相當復雜,開發全自動的逆向工程工具解決真正的問題在短期內是不可能的。所以,逆向工程工具的研究應注重于實用的半自動工具的開發,并做大量(dling)的案例研
25、究。利用逆向工程進行開發初期就應對經濟效益作評估,不要一味追求這一方法而導致經濟損挫。(2)缺乏統一的逆向工程的概念、標準術語 缺乏統一的逆向工程的概念、標準術語,缺乏統一的逆向工程機制的分類框架,缺乏對現有逆向工程的廣泛使用,缺乏對現有工具和理論進行有效評估的標準及工具,這些都導致了研究人員在交流上的困難,不利于工具的研制,也不利于逆向工程技術的應用、推廣和提高。共三十五頁(3)避免使用虛構的數據。由于其不成熟,很多逆向工程研究都針對于虛構問題。但是,以虛構問題為目標限制了逆向工程系統的實用性。為了使逆向工程的研究真正走向成熟,必須從虛構問題過渡到有經濟影響的實際問題。為此,逆向工程研究應當
26、遵循以下幾個原則:a用實際程序作為例子;b用系統作為例子;c利用多種信息源。(4)黑盒理解。傳統的逆向工程輔助程序理解的方式可視為“白盒”理解,主要依賴于分析源代碼程序抽取程序結構和控制流信息。由分布式對象技術、構件技術和構架技術發展(fzhn)而導致的基于構件的軟件開發對程序理解提出了新的挑戰。逆向工程的黑盒理解不僅可用于傳統的系統維護,而且可用于新構件的驗證、適應性修改和組裝。很多情況下,系統的成功演化需要結合使用白盒理解和黑盒理解。共三十五頁發展(fzhn)方向 逆向工程研究作為軟件工程中一個正在興起的研究領域,理論和應用的研究都處于探索階段,筆者認為應該在以下(yxi)幾個方面作進一步的研究: (1)與具體領域相結合。對一個特定系統進行逆向工程的根本目的是理解這個系統的結構和行為,而這個系統的結構和實現過程必然受它所處理的問題的影響,所以要很好地理解這個系統,一些領域知識是必不可少的。在逆向工程工具中可以用設立領域知識庫。增加人機交互等手段解決這個問題。 (2)提高逆向工程過程的可重復性使逆向工程過程可定義、可管理及可優化;要注重于提高逆向工程過程的自動化程度,開發實用的半自動化的工具。盡量使用工具自動實現逆向工程過程的各部分功能,減少用戶的負擔。 (3)增加學習功能。對目標系統實施逆向工程得到的結果不一定完全滿足用戶的要求,需要將滿足用戶要求的部分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025企業管理人員安全培訓考試試題及答案【考點梳理】
- 2025年企業主要負責人安全培訓考試試題完整參考答案
- 2025年公司及項目部安全培訓考試試題附答案【模擬題】
- 2025標準店鋪租賃合同協議
- 2025工程承包合同范本 建筑工程施工合同樣本
- 2025深圳市汽車租賃合同書模板
- 2025年勞動合同解除標準范本
- 2025年新款代理合同協議書模板
- 2025鋼筋制作合同模板
- 2025【視障人士康復按摩師勞動合同】視障人士康復按摩樣本
- 廣西2025年體育統考身體素質測試項目評分標準
- 品牌運營推廣合同范本
- 檔案補辦申請書
- 體外診斷試劑培訓課件
- 醫院6S管理達標創建
- 《建筑裝飾工程施工圖設計》學習領域課程標準
- 2025年興業銀行股份有限公司招聘筆試參考題庫含答案解析
- 2025年1月四川高考改革適應性演練測試物理試題(八省聯考四川物理卷)(原卷版)
- DB33T 1214-2020 建筑裝飾裝修工程施工質量驗收檢查用表標準
- 2025年沈陽鐵路局集團招聘筆試參考題庫含答案解析
- 大學生實習手冊
評論
0/150
提交評論