《软件加密与解密》第三版学习日志一
一 動(dòng)態(tài)分析技術(shù)
?
動(dòng)態(tài)分析技術(shù)中最重要的工具是調(diào)試器,分為用戶模式和內(nèi)核模式兩種類型。用戶模式調(diào)試器是指用來(lái)調(diào)試用戶模式應(yīng)用程序的調(diào)試器,他們工作在Ring 3級(jí),如OllyDbg、Visual C++等編譯器自帶的調(diào)試器。內(nèi)核模式調(diào)試器是指能調(diào)試操作系統(tǒng)內(nèi)核的調(diào)試器,它們處于CPU和操作系統(tǒng)之間,工作在Ring 0級(jí),如SoftICE等。
OllyDbg(簡(jiǎn)稱OD)是有Oleh Yuschuuk(www.ollydbg.de)編寫(xiě)的一款具有可視化界面的用戶模式調(diào)試器,可以在當(dāng)前各種Windows版本上運(yùn)行,但NT的系統(tǒng)架構(gòu)更能發(fā)揮OllyDbg強(qiáng)大功能。OllyDbg結(jié)合了動(dòng)態(tài)調(diào)試和靜態(tài)分析,具有GUI界面,易上手,并且對(duì)異常的跟蹤處理相當(dāng)靈活,這些使得OllyDbg成為調(diào)試Ring 3級(jí)程序的首選工作。它的反匯編引擎很強(qiáng)大,可識(shí)別數(shù)千個(gè)被C和Windows頻繁使用的函數(shù),并能將其參數(shù)注釋出。它會(huì)自動(dòng)分析函數(shù)過(guò)程、循環(huán)語(yǔ)句、代碼中的字符串等。
?
二 靜態(tài)分析技術(shù)
?
用高級(jí)語(yǔ)言編寫(xiě)的程序有兩種形式,一種是被編譯成機(jī)器語(yǔ)言在CPU上執(zhí)行,如Visual C++、Pascal等。由于機(jī)器語(yǔ)言和匯編語(yǔ)言幾乎是對(duì)應(yīng)的,因此可將機(jī)器語(yǔ)言轉(zhuǎn)化成匯編語(yǔ)言,這個(gè)過(guò)程稱為反匯編(Disassembler)。例如,在X86系統(tǒng)中,機(jī)器碼“EBh”對(duì)應(yīng)的匯編語(yǔ)句是“jmp short xx”。另一種是高級(jí)語(yǔ)言一邊解釋一邊執(zhí)行的,稱為解釋性語(yǔ)言,如Visual Basic、Visual FoxPro等,這類語(yǔ)言編譯后的程序可以被還原成高級(jí)語(yǔ)言的原始結(jié)構(gòu),這個(gè)過(guò)程稱為反編譯(Decompiler)。
所謂靜態(tài)分析,即從反匯編、反編譯手段獲得程序匯編代碼或源代碼,然后從程序清單上分析程序流程,了解模塊完成的功能。靜態(tài)分析的第一步就是分析程序的類型,了解程序是用什么語(yǔ)言編寫(xiě)的或用什么編譯器編譯的?程序是否被某種加密程序處理過(guò)?常見(jiàn)的分析工具有PEiD、FileInfo等。PEiD是一款常用的文件檢測(cè)分析工具,具有GUI界面。它能檢測(cè)大多數(shù)編譯語(yǔ)言、病毒和加密的殼。PEiD這類文件分析工具是利用查特征串搜索來(lái)完成識(shí)別工作的。各種開(kāi)發(fā)語(yǔ)言都有固定的啟動(dòng)代碼部分,利用這點(diǎn)就可識(shí)別出是何種語(yǔ)言編譯的。被加殼程序處理過(guò)的程序,在殼里會(huì)留下相關(guān)加殼軟件的信息,利用這點(diǎn)就可以識(shí)別是被何種殼所加密的。FileInfo(簡(jiǎn)稱Fi)是另一款不錯(cuò)的文件檢測(cè)工具。Fi運(yùn)行時(shí)是DOS界面。
在進(jìn)行反匯編前,建議用FileInfo、PEiD等檢測(cè)工具分析一下文件是否加殼。如果加殼,就需要利用脫殼技術(shù)脫殼,然后再反匯編。常用的反匯編工具有W32Dasm、C32asm、IDA Pro等。W32Dasm、C32asm這兩款工具已不升級(jí),不支持64位程序。
反匯編引擎的作用是把機(jī)器碼解析成可以匯編指令,開(kāi)發(fā)反匯編引擎需要對(duì)Intel公司的i386的機(jī)器指令編碼有深入的了解。常見(jiàn)的反匯編引擎有udis86、ade、xde等,像mlde32和virxasm反匯編引擎也比較有特色,大小僅400字節(jié)左右。OllyDbg自帶的反匯編引擎也比較強(qiáng)大,但其指令集不全,對(duì)MMX、SSE支持的不好,不過(guò)FullDisasm插件可以解決這個(gè)問(wèn)題。
IDA Pro(簡(jiǎn)稱IDA)是DataRescue公司(www.datarescue.com)出品的一款交互式反匯編工具,它的主要特性是交互和多處理器。操作者可以通過(guò)對(duì)IDA的交互來(lái)指導(dǎo)IDA更好地反匯編,IDA并不自動(dòng)解決程序中的問(wèn)題,但它會(huì)按用戶的指令找到可以之處,用戶的工作是通知IDA怎樣去做,比如人工指定編譯器類型,對(duì)變量名、結(jié)構(gòu)定義、數(shù)組等定義。 IDA適合分析文件,但要對(duì)文件進(jìn)行編輯修改,需專門(mén)的十六進(jìn)制工具。常用的有Hiew、HexWorkshop、WinHex等。各工具都有其特色,HexWorkshop提供了文件比較功能,WinHex可以查看內(nèi)存映像文件,Hiew可以在匯編狀態(tài)下修改代碼。
?
三 逆向分析技術(shù)
將可執(zhí)行文件反匯編,通過(guò)分析反匯編代碼來(lái)理解其代碼功能,如各接口的數(shù)據(jù)結(jié)構(gòu)等,然后用高級(jí)語(yǔ)言重新描述這段代碼,逆向分析原軟件的思路,這個(gè)過(guò)程被稱做“逆向工程(Reverse Engineering)”,或者有時(shí)只是簡(jiǎn)單地稱作“逆向(Reversing)”。這是一個(gè)很重要的技能,需要扎實(shí)的編程功底和匯編知識(shí)。逆向分析的首選工具是IDA,其中它的一款插件Hex-Rays Decompiler能完成許多代碼反編譯的工作,逆向時(shí)可以作為一款輔助工具參考。逆向工程可以讓人們了解程序的結(jié)構(gòu)以及程序的邏輯,因此利用逆向工程可以深入洞察程序的運(yùn)行過(guò)程。
?
?
參考看雪軟件安全:
http://www.pediy.com
總結(jié)
以上是生活随笔為你收集整理的《软件加密与解密》第三版学习日志一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vc6.0制作窗体可嵌入IE内的OCX
- 下一篇: 《软件加密与解密》第三版学习日志二