自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

逆向分析技術(shù)全揭秘 資深黑客分析

企業(yè)動態(tài)
以下的文章主要大家講述的是黑客老鳥講逆向分析以及對逆向分析技術(shù)的全揭秘,其中包括函數(shù)調(diào)用,循環(huán),靜態(tài)分析等內(nèi)容的描述。

文章主要描述的是黑客老鳥講逆向分析以及對逆向分析技術(shù)的全揭秘,講到逆向,更多的人都是考慮到既然是逆向那就應該反著來推或者相反,其實則不然,這里我們要講的是為了更深入的研究windows編寫機制,更好的研究他們的安全,誰讓微軟這么保守雖然曾經(jīng)流出過windows的部分代碼.....

經(jīng)過前幾課的學習,我們現(xiàn)在開始正式開講逆向分析。逆向分析技術(shù)是指通過分析反匯編代碼來理解其代碼功能,如各接口的數(shù)據(jù)結(jié)構(gòu)等,然后用高級語言重新描述這段代碼,逆向推出原軟件的思路。下面從函數(shù)的調(diào)用、循環(huán)、控制語句等方面分析。

 

在高級語言中,子程序依懶于堆棧來傳遞參數(shù)。

例如test1(Par1,Par2,Par3:integer),按C,Psacal和StdCall的調(diào)用約定匯編代碼如下:

 

函數(shù)調(diào)用

按StdCall約定調(diào)用函數(shù)test2(par1,par2),其堆棧建立情況如下:

Push ebp ;保護現(xiàn)場原先的EBP指針

Mov ebp,esp ;設(shè)置新的EBP指針,指向棧頂

Sub esp,xxx ;堆棧中留出點空間放局部變量

… …

Add esp,xxx ;釋放局部變量占用的堆棧

Pop ebp ;恢復現(xiàn)場的ebp指針

Ret 8 ;返回

 

循環(huán)

如果確定某段代碼是循環(huán),就可以分析其計數(shù)器,一般是用ecx寄存器做計數(shù)器。

下面的匯編代碼:

xor ecx,ecx;ecx清零

:00440000

inc ecx;計數(shù)

… …

cmp ecx,05;循環(huán)4次

jbe 00440000;重復

上面的匯編代碼用C語言描述有以下3種形式:

◆While(i<5){… …}

◆For(i=0;i<5;i++){… …}

◆i=0

Repeat

i++;

Unitl(i>=5)

控制語句

If …else語句:

Cmp byte prt[00221450],bl

Jne 00221590

Case語句:

匯編代碼高級語句

Mov eax,edi ;

Sub eax,00000002 ;

Je 00401 ;

Sub eax,0000000E ;

Jne 0040114E

…Swith(K)

{

case’0x2’:…;break;

case’0x10’:…;break;

Default: …

}#p#

 

靜態(tài)分析

靜態(tài)分析:從反匯編出來的程序清單上分析程序流程,了解模塊完成的功能。

靜態(tài)分析先分析程序的文件類型,如果程序使用加殼保護,則要先進行脫殼。

通過靜態(tài)分析工具加載程序進行分析。(例如IDA pro工具)

 

動態(tài)分析逆向分析技術(shù):動態(tài)跟蹤調(diào)試程序,分為用戶模式和內(nèi)核模式兩種類型。

用戶模式調(diào)試器是指用來調(diào)試用戶模式的應用程序,工作在Ring 3級。(例如VC++編譯器調(diào)試器)

內(nèi)容模式調(diào)試器是指能調(diào)試系統(tǒng)內(nèi)核的調(diào)試器,工作在Ring 0級。(例如SoftICE、OllDBG)

OD動態(tài)分析

 

調(diào)試中常用的快捷鍵:

F2:設(shè)置斷點,只要在光標定位的位置(上圖中灰色條)按F2鍵即可,再按一次F2鍵則會刪除斷點。

F8:單步步過。每按一次這個鍵執(zhí)行一條反匯編窗口中的一條指令,遇到 CALL 等子程序不進入其代碼。

F7:單步步入。功能同單步步過(F8)類似,區(qū)別是遇到 CALL 等子程序時會進入其中,進入后首先會停留在子程序的第一條指令上。

F4:運行到選定位置。作用就是直接運行到光標所在位置處暫停。

F9:運行。按下這個鍵如果沒有設(shè)置相應斷點的話,被調(diào)試的程序?qū)⒅苯娱_始運行。

CTR+F9:執(zhí)行到返回。此命令在執(zhí)行到一個 ret (返回指令)指令時暫停,常用于從系統(tǒng)領(lǐng)空返回到我們調(diào)試的程序領(lǐng)空。

ALT+F9:執(zhí)行到用戶代碼。可用于從系統(tǒng)領(lǐng)空快速返回到我們調(diào)試的程序領(lǐng)空。

結(jié)構(gòu)化異常處理

 

結(jié)構(gòu)化異常處理(Structured Exception Handling ,簡稱SEH)是Windows操作系統(tǒng)處理程序錯誤或異常的技術(shù)。

兩種類型的異常處理句柄:

一種是final型的,這是在異常未能得到線程相關(guān)處理例程處理操作系統(tǒng)在即將關(guān)閉程序之前會回調(diào)的例程,這個例程是進程相關(guān)而不是線程相關(guān)的,因此無論是哪個線程發(fā)生異常未能被處理都會調(diào)用這個例程.

另一種是per_Thread Exception Handler->線程相關(guān)的異常處理,通常每個線程初始化準備好運行時fs指向一個TIB結(jié)構(gòu) (THREAD INFORMATION BLOCK),這個結(jié)構(gòu)的第一個元素fs:[0]指向一個_EXCEPTION_REGISTRATION結(jié)構(gòu) 。

當Windows檢測到異常時,執(zhí)行線程立即被中斷 ,處理從用戶模式轉(zhuǎn)向了內(nèi)核模式,控制權(quán)交給了異常調(diào)試程序,它負責查找處理新異常的方法。

反調(diào)試逆向分析技術(shù)

檢測內(nèi)核模式調(diào)試器

利用NT的ZwQuerySystemInformation()或NtQuerySystemInformation()檢測內(nèi)核模式調(diào)試器。

檢測用戶模式調(diào)試器

利用NT的ZwQueryInformationProcess()或NtQueryInformationProcess()檢測使用Win32 Debug API的用戶模式調(diào)試器。

檢測API斷點

對于比較關(guān)鍵的API,可以檢測其是否被設(shè)置了斷點,即檢查該API的入口的第一個字節(jié)是否為Int 3指令。

花指令

花指令是一堆匯編指令組成,對于程序來說,是一堆廢話,加不加花指令都不影響程序的正常運行.編寫的花指令要終始保持堆棧的平衡?;ㄖ噶畹淖饔檬歉蓴_反匯編。

花指令的指令含意:

push ebp ----把基址指針寄存器壓入堆棧

pop ebp ----把基址指針寄存器彈出堆棧

push eax ----把數(shù)據(jù)寄存器壓入堆棧

pop eax ----把數(shù)據(jù)寄存器彈出堆棧

nop -----不執(zhí)行

mov edi,edi-----和nop效果一樣

add esp,1-----指針寄存器加1

sub esp,1-----指針寄存器減1

inc ecx -----計數(shù)器加1

dec ecx -----計數(shù)器減1

子明最近一直在研究有關(guān)逆向分析技術(shù)。上面的就是我的一點研究,不知道大家是否還能夠滿意。我以后還會為大家服務,寫出更加通俗易懂的文章來。

 

責任編輯:佚名 來源: 比特網(wǎng)論壇
相關(guān)推薦

2015-03-17 11:15:06

2011-07-05 16:13:18

2022-10-20 10:37:44

2015-04-17 09:27:24

2015-08-21 17:52:52

逆向分析BinNavi

2010-09-06 10:47:00

PPP配置

2024-08-06 09:54:20

2014-03-24 17:54:25

2010-07-28 10:31:24

ADSL加速方法

2015-09-01 10:52:16

安全數(shù)據(jù)分析架構(gòu)

2011-06-20 09:29:19

2010-09-01 10:19:43

配置DHCP

2020-02-06 10:20:19

硬件黑客技術(shù)

2009-11-04 13:51:46

ADO.NET性能

2018-08-20 13:46:59

Android逆向分析終端安全

2022-09-07 18:13:15

智能數(shù)據(jù)

2010-02-01 14:28:50

黑客產(chǎn)業(yè)鏈

2011-04-06 13:49:41

2019-09-09 06:30:06

Springboot程序員開發(fā)

2010-09-08 12:29:52

點贊
收藏

51CTO技術(shù)棧公眾號