欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

破解入門(mén)(一)-----常用寄存器介紹(圖文)

  發(fā)布時(shí)間:2012-06-28 15:40:46   作者:代碼人生   我要評(píng)論
第一講.來(lái)說(shuō)一下常用的寄存器

1 CPU構(gòu)成
CPU大體上可以分成以下三部分
(1) 算術(shù)邏輯部分ALU(arithmetic logic unit),用來(lái)進(jìn)行算術(shù)和邏輯運(yùn)算
(2) 控制邏輯。
(3) 工作寄存器,每個(gè)寄存器相當(dāng)于運(yùn)算器中的一個(gè)存儲(chǔ)單元,但它存取速度快。用來(lái)存放運(yùn)算過(guò)程中的需要或得到的各種信息,包括操作數(shù)地址、操作數(shù)及運(yùn)算的中間結(jié)果。
2 計(jì)算機(jī)中數(shù)據(jù)存儲(chǔ)方式
在計(jì)算機(jī)中,一個(gè)二進(jìn)制數(shù)占用一位,八位是一個(gè)字節(jié)。
在計(jì)算機(jī)內(nèi)存中,就是以字節(jié)為單位來(lái)存儲(chǔ)信息的。計(jì)算機(jī)給每一個(gè)字節(jié)單元分配一個(gè)唯一的存儲(chǔ)器地址,稱(chēng)為物理地址。當(dāng)需要訪(fǎng)問(wèn)相應(yīng)的內(nèi)存的數(shù)據(jù)時(shí),就是通過(guò)這個(gè)地址。
一個(gè)二進(jìn)制可以表達(dá)所有的ASCII,即一個(gè)內(nèi)存單元可以存儲(chǔ)一個(gè)英文字符或數(shù)字等。而中文要用Unicode表示,也就是需要兩個(gè)字節(jié)單元才能裝一個(gè)漢字。
十六位就是兩個(gè)字節(jié),才能裝一個(gè)漢字。三十二位能裝兩個(gè)漢字叫做雙字。六十四位能裝四個(gè)漢字叫做四字。
3 基本寄存器
3.1通用寄存器(32位)
通用寄存器一共有八個(gè):EAX、EBX、ECX、EDX、ESP、EBP、EDI、ESI
其中EAX、EBX、ECX、EDX稱(chēng)為數(shù)據(jù)寄存器,用于存放計(jì)算過(guò)程中所用操作數(shù)、結(jié)果或其他信息。除了直接訪(fǎng)問(wèn)外,還可分別對(duì)其高十六位和低十六位,它們的低十六位就是把它們前邊兒的E去掉,即EAX的低十六位就是AX。而且它們的低十六位又可以分別進(jìn)行八位訪(fǎng)問(wèn),也就是說(shuō),AX還可以再進(jìn)行分解,即AX還可分為AH(高八位)AL(低八位)。
高16位
EAX 高8位(AH)
低16位(AX)
低8位(AL)
則操作32位數(shù)時(shí)可用:MOV EAX
則操作16位數(shù)時(shí)可用:MOV AX
則操作8位數(shù)時(shí)可用: MOV AH / MOV AL
備注:從386以后,所有寄存器都可以用來(lái)存儲(chǔ)內(nèi)存地址。在破解的時(shí)候是不是看到過(guò)[EBX]這樣的形式呢?這就是說(shuō)此時(shí)EBX中裝的是一個(gè)內(nèi)存地址,而真正要訪(fǎng)問(wèn)的,就是那那個(gè)內(nèi)存單元中所存儲(chǔ)的值。
ESP、EBP、EDI、ESI四個(gè)寄存器主要用途就是在存儲(chǔ)器尋址時(shí),提供偏移地址。因此,它們可以稱(chēng)為指針或變址寄存器。
ESP稱(chēng)為堆棧指針寄存器。堆棧是以“后進(jìn)先出”方式工作的一個(gè)存儲(chǔ)區(qū),它必須存在于堆棧段中,因而其段地址存放于SS寄存器中。它只有一個(gè)出入口,所以只有一個(gè)堆棧指針寄存器。ESP的內(nèi)容在任何時(shí)候都指向當(dāng)前的棧頂。
當(dāng)向堆棧中壓入數(shù)據(jù)時(shí),ESP會(huì)向上移動(dòng),使用PUSH指令,ESP變化為:ESP - 數(shù)據(jù)位數(shù)。
當(dāng)向堆棧中壓出數(shù)據(jù)時(shí),ESP會(huì)向下移動(dòng),使用POP指令,ESP變化為:ESP + 數(shù)據(jù)位數(shù)
EBP,它稱(chēng)為基址指針寄存器,它們都可以與堆棧段寄存器SS聯(lián)用來(lái)確定堆棧中的某一存儲(chǔ)單元的地址,ESP用來(lái)指示段頂?shù)钠频刂?,而EBP可作為堆棧區(qū)中的一個(gè)基地址以便訪(fǎng)問(wèn)堆棧中的信息。
ESI(源變址寄存器)和EDI(目的變址寄存器)一般與數(shù)據(jù)段寄存器DS聯(lián)用,用來(lái)確定數(shù)據(jù)段中某一存儲(chǔ)單元的地址。這兩個(gè)變址寄存器有自動(dòng)增量和自動(dòng)減量的功能,可以很方便地用于變址。在串處理指令中,ESI和EDI作為隱含的源變址和目的變址寄存器時(shí),ESI和DS聯(lián)用,EDI和附加段ES聯(lián)用,分別達(dá)到在數(shù)據(jù)段和附加段中尋址的目的。
3.2 專(zhuān)用寄存器
專(zhuān)用寄存器,有兩個(gè),一個(gè)是EIP,一個(gè)是FLAGS。
EIP算是所有寄存器中最重要的一個(gè)了。它的意思就是指令指針寄存器,它用來(lái)存放代碼段中的偏移地址。在程序運(yùn)行的過(guò)程中,它始終指向下一條指令的首地址。它與段寄存器CS聯(lián)用確定下一條指令的物理地址。當(dāng)這一地址送到存儲(chǔ)器后,控制器可以取得下一條要執(zhí)行的指令,而控制器一旦取得這條指令就馬上修改EIP的內(nèi)容,使它始終指向下一條指令的首地址??梢?jiàn),計(jì)算機(jī)就是用EIP寄存器來(lái)控制指令序列的執(zhí)行流程的。 那些跳轉(zhuǎn)指令,就是通過(guò)修改EIP的值來(lái)達(dá)到相應(yīng)的目的的。
FLAGS,標(biāo)志寄存器,又稱(chēng)PSW(program status word),即程序狀態(tài)寄存器。這一個(gè)是存放條件標(biāo)志碼、控制標(biāo)志和系統(tǒng)標(biāo)志的寄存器。
下面有個(gè)例子
Cmp EAX,EBX ;用EAX與EBX相減
JNZ 00470395 ;不相等的話(huà),就跳到這里;
這兩條指令很簡(jiǎn)單,就是用EAX寄存器裝的數(shù)減去EBX寄存器中裝的數(shù)。來(lái)比較這兩個(gè)數(shù)是不是相等,當(dāng)Cmp指令執(zhí)行過(guò)后,就會(huì)在FLAGS的ZF(zero flag)零標(biāo)志位上置相應(yīng)值,如果結(jié)果為0,也就是他們兩個(gè)相等的話(huà),ZF置1,否則置0。其它還有OF(溢出標(biāo)志)SF(符號(hào)標(biāo)志)CF(進(jìn)位標(biāo)志)AF(輔助進(jìn)位標(biāo)志)PF(奇偶標(biāo)志)等。
3.3 段寄存器
段寄存器一共六個(gè),分別是CS代碼段,DS數(shù)據(jù)段,ES附加段,SS堆棧段,F(xiàn)S以及GS這兩個(gè)還是附加段 

相關(guān)文章

最新評(píng)論