日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

逆向与汇编的一些笔记

發(fā)布時(shí)間:2024/4/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逆向与汇编的一些笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

寄存器

EAX:累加寄存器

EBX:基址寄存器

ECX:計(jì)數(shù)寄存器

EDX:數(shù)據(jù)寄存器

ESI:來(lái)源寄存器

EDI:目標(biāo)寄存器

EBP:基址指針寄存器

ESP:堆棧指針寄存器

EIP:指令指針寄存器

?

條件跳轉(zhuǎn)指令

ja? CF=0 and ZF=0

jab CF=0

jb?? CF=1

jbe? CF=1 of ZF =1

jcxz? CX=0

je???? ZF=1

jecxz?? ECX=0

jg?? ZF=0? and??? SF=OF

jge? SF=OF

jl? SF!=OF

jle? ZF=1?? or SF!=OF

jmp? 無(wú)條件跳轉(zhuǎn)

jna? CF=1 or? ZF=1

jnae? CF=1

jnb?? CF=0

jnbe? CF=0 and ZF=0

jnc???? CF=0

jne???? ZF=0

jng???? ZF=1 or SF!=OF

jnge?? SF!=OF

jnl?????? SF=OF

jnle???? ZF=0 and SF=OF

jno????? OF=0

jnp????? PF=0

jns??????SF=0

jnz????? ZF=0

jo?????? OF=1

jp?????? PF=1

jpe??? PF=1

jpo???? PF=0

js????? SF=1

jz????? ZF=1

?

標(biāo)志位

Z標(biāo)志位(0標(biāo)志),這個(gè)標(biāo)志位是最常用的,運(yùn)算結(jié)果為0時(shí)候,Z標(biāo)志位置1,否則置0。

O標(biāo)志位(溢出標(biāo)志),在運(yùn)行過(guò)程中,如操作數(shù)超出了機(jī)器能表示的范圍則稱為溢出,此時(shí)OF位置1,否則置0。

C標(biāo)志位(進(jìn)位標(biāo)志),記錄運(yùn)算時(shí)從最高有效位產(chǎn)生的進(jìn)位值。例如執(zhí)行加法指令時(shí),最高有效位有進(jìn)位時(shí)置1,否則置0。

?

cmp指令大概有以下幾種格式:

cmp eax, ebx ;如果相等,Z標(biāo)志位置1,否則0.

cmp eax, [404000] ;將eax和404000地址處的dword型數(shù)據(jù)相比較并同上置位。

cmp [404000], eax ;同上。

?

test指令

test eax,eax? ;如果eax的值為0,則Z標(biāo)志位置1

?

邏輯運(yùn)算

and eax,ebx?

or eax,ebx

xor eax,ebx

not eax

?

CALL指令

call XXX; 等于 push eip; 然后 jmp XXX;

call有以下幾點(diǎn)調(diào)用方式?

call 404000h ;直接跳到函數(shù)或過(guò)程的地址

call eax ;函數(shù)或過(guò)程地址存放在eax

call dword ptr [eax]

call dword ptr [eax+5]

call dword ptr [<&API>] ;執(zhí)行一個(gè)系統(tǒng)API

?

PE文件格式

PE文件結(jié)構(gòu):

DOS header

DOS stub

PE File Header

Image Optional Header

Section Table

Data Directories

Sections

?

GetModuleHandleA這個(gè)API函數(shù)用于獲取程序的ImageBase(基址)

VA(VirtualAddress,虛擬地址)

RVA(RelativeVirtualAddress,相對(duì)虛擬地址)

EP(EntryPoint,程序入口點(diǎn))

?

?

軟件斷點(diǎn)

設(shè)置該斷點(diǎn)的原理是在斷點(diǎn)處重寫代碼,插入一個(gè)int3中斷指令,當(dāng)CPU執(zhí)行到int3指令的時(shí)候,OD就可以獲得控制權(quán)。軟件斷點(diǎn)只能在OD的CPU界面下,在數(shù)據(jù)段它下不了,在一條指令的中間它也下不了。?

硬件斷點(diǎn):

這個(gè)原理跟軟件斷點(diǎn)不同,硬件斷點(diǎn)的可行性依賴于CPU的物理支持。CPU有四個(gè)調(diào)試寄存器。如果我們想下在windows的動(dòng)態(tài)鏈接庫(kù)里下斷點(diǎn),需要用到硬件斷點(diǎn),因?yàn)橛密浖帱c(diǎn)下在dll文件中是不會(huì)保存的,重啟程序后將丟失斷點(diǎn)。

?

總結(jié)

以上是生活随笔為你收集整理的逆向与汇编的一些笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。