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

1 CPU構(gòu)成
CPU大體上可以分成以下三部分
(1) 算術(shù)邏輯部分ALU(arithmetic logic unit),用來進行算術(shù)和邏輯運算
(2) 控制邏輯。
(3) 工作寄存器,每個寄存器相當(dāng)于運算器中的一個存儲單元,但它存取速度快。用來存放運算過程中的需要或得到的各種信息,包括操作數(shù)地址、操作數(shù)及運算的中間結(jié)果。
2 計算機中數(shù)據(jù)存儲方式
在計算機中,一個二進制數(shù)占用一位,八位是一個字節(jié)。
在計算機內(nèi)存中,就是以字節(jié)為單位來存儲信息的。計算機給每一個字節(jié)單元分配一個唯一的存儲器地址,稱為物理地址。當(dāng)需要訪問相應(yīng)的內(nèi)存的數(shù)據(jù)時,就是通過這個地址。
一個二進制可以表達(dá)所有的ASCII,即一個內(nèi)存單元可以存儲一個英文字符或數(shù)字等。而中文要用Unicode表示,也就是需要兩個字節(jié)單元才能裝一個漢字。
十六位就是兩個字節(jié),才能裝一個漢字。三十二位能裝兩個漢字叫做雙字。六十四位能裝四個漢字叫做四字。
3 基本寄存器
3.1通用寄存器(32位)
通用寄存器一共有八個:EAX、EBX、ECX、EDX、ESP、EBP、EDI、ESI
其中EAX、EBX、ECX、EDX稱為數(shù)據(jù)寄存器,用于存放計算過程中所用操作數(shù)、結(jié)果或其他信息。除了直接訪問外,還可分別對其高十六位和低十六位,它們的低十六位就是把它們前邊兒的E去掉,即EAX的低十六位就是AX。而且它們的低十六位又可以分別進行八位訪問,也就是說,AX還可以再進行分解,即AX還可分為AH(高八位)AL(低八位)。
高16位
EAX 高8位(AH)
低16位(AX)
低8位(AL)
則操作32位數(shù)時可用:MOV EAX
則操作16位數(shù)時可用:MOV AX
則操作8位數(shù)時可用: MOV AH / MOV AL
備注:從386以后,所有寄存器都可以用來存儲內(nèi)存地址。在破解的時候是不是看到過[EBX]這樣的形式呢?這就是說此時EBX中裝的是一個內(nèi)存地址,而真正要訪問的,就是那那個內(nèi)存單元中所存儲的值。
ESP、EBP、EDI、ESI四個寄存器主要用途就是在存儲器尋址時,提供偏移地址。因此,它們可以稱為指針或變址寄存器。
ESP稱為堆棧指針寄存器。堆棧是以“后進先出”方式工作的一個存儲區(qū),它必須存在于堆棧段中,因而其段地址存放于SS寄存器中。它只有一個出入口,所以只有一個堆棧指針寄存器。ESP的內(nèi)容在任何時候都指向當(dāng)前的棧頂。
當(dāng)向堆棧中壓入數(shù)據(jù)時,ESP會向上移動,使用PUSH指令,ESP變化為:ESP - 數(shù)據(jù)位數(shù)。
當(dāng)向堆棧中壓出數(shù)據(jù)時,ESP會向下移動,使用POP指令,ESP變化為:ESP + 數(shù)據(jù)位數(shù)
EBP,它稱為基址指針寄存器,它們都可以與堆棧段寄存器SS聯(lián)用來確定堆棧中的某一存儲單元的地址,ESP用來指示段頂?shù)钠频刂?,而EBP可作為堆棧區(qū)中的一個基地址以便訪問堆棧中的信息。
ESI(源變址寄存器)和EDI(目的變址寄存器)一般與數(shù)據(jù)段寄存器DS聯(lián)用,用來確定數(shù)據(jù)段中某一存儲單元的地址。這兩個變址寄存器有自動增量和自動減量的功能,可以很方便地用于變址。在串處理指令中,ESI和EDI作為隱含的源變址和目的變址寄存器時,ESI和DS聯(lián)用,EDI和附加段ES聯(lián)用,分別達(dá)到在數(shù)據(jù)段和附加段中尋址的目的。
3.2 專用寄存器
專用寄存器,有兩個,一個是EIP,一個是FLAGS。
EIP算是所有寄存器中最重要的一個了。它的意思就是指令指針寄存器,它用來存放代碼段中的偏移地址。在程序運行的過程中,它始終指向下一條指令的首地址。它與段寄存器CS聯(lián)用確定下一條指令的物理地址。當(dāng)這一地址送到存儲器后,控制器可以取得下一條要執(zhí)行的指令,而控制器一旦取得這條指令就馬上修改EIP的內(nèi)容,使它始終指向下一條指令的首地址。可見,計算機就是用EIP寄存器來控制指令序列的執(zhí)行流程的。 那些跳轉(zhuǎn)指令,就是通過修改EIP的值來達(dá)到相應(yīng)的目的的。
FLAGS,標(biāo)志寄存器,又稱PSW(program status word),即程序狀態(tài)寄存器。這一個是存放條件標(biāo)志碼、控制標(biāo)志和系統(tǒng)標(biāo)志的寄存器。
下面有個例子
Cmp EAX,EBX ;用EAX與EBX相減
JNZ 00470395 ;不相等的話,就跳到這里;
這兩條指令很簡單,就是用EAX寄存器裝的數(shù)減去EBX寄存器中裝的數(shù)。來比較這兩個數(shù)是不是相等,當(dāng)Cmp指令執(zhí)行過后,就會在FLAGS的ZF(zero flag)零標(biāo)志位上置相應(yīng)值,如果結(jié)果為0,也就是他們兩個相等的話,ZF置1,否則置0。其它還有OF(溢出標(biāo)志)SF(符號標(biāo)志)CF(進位標(biāo)志)AF(輔助進位標(biāo)志)PF(奇偶標(biāo)志)等。
3.3 段寄存器
段寄存器一共六個,分別是CS代碼段,DS數(shù)據(jù)段,ES附加段,SS堆棧段,F(xiàn)S以及GS這兩個還是附加段
相關(guān)文章
- “CMOS密碼”就是通常所說的“開機密碼”,主要是為了防止別人使用自已的計算機,設(shè)置的一個屏障2023-08-01
QQScreenShot之逆向并提取QQ截圖--OCR和其他功能
上一篇文章逆向并提取QQ截圖沒有提取OCR功能, 再次逆向我發(fā)現(xiàn)是可以本地調(diào)用QQ的OCR的,但翻譯按鈕確實沒啥用, 于是Patch了翻譯按鈕事件, 改為了將截圖用百度以圖搜圖搜索.2023-02-04- QQ截圖是我用過的最好用的截圖工具, 由于基本不在電腦上登QQ了, 于是就想將其提取出獨立版目前除了屏幕錄制功能其他都逆出來了, 在此分享一下2023-02-04
非系統(tǒng)分區(qū)使用BitLocker加密導(dǎo)致軟件無法安裝的解決方法
很多電腦用戶在考慮自己電腦磁盤分區(qū)安全時會采用 Windows 自帶的 BitLocker 加密工具對電腦磁盤分區(qū)進行加密。但有些人加密后就會忘記自己設(shè)置的密碼從而導(dǎo)致在安裝其它軟2020-11-25防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生
這篇文章為大家詳細(xì)介紹了如何才能防止離職員工帶走客戶、防止內(nèi)部員工泄密、避免華為員工泄密事件的發(fā)生,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-27徹底防止計算機泄密、重要涉密人員離職泄密、涉密人員離崗離職前防范舉
近些年企業(yè)商業(yè)機密泄漏的事件屢有發(fā)生,這篇文章主要教大家如何徹底防止計算機泄密、重要涉密人員離職泄密、告訴大家涉密人員離崗離職前的防范舉措,具有一定的參考價值,2017-06-27- 最近有電腦用戶反應(yīng)量子計算機可以破解下載的所有的加密算法嗎?其實也不是不可以,下面虛擬就為大家講解買臺量子計算機,如何分分鐘破解加密算法2016-09-26
怎么破解Webshell密碼 Burpsuite破解Webshell密碼圖文教程
webshell是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,一種網(wǎng)頁后門。黑客通常會通過它控制別人網(wǎng)絡(luò)服務(wù)器,那么怎么破解webshell密碼呢?一起來看看吧2016-09-19- 本文討論了針對Linux系統(tǒng)全盤加密的冷啟動攻擊,大家都認(rèn)為這種攻擊是可行的,但執(zhí)行這么一次攻擊有多難?攻擊的可行性有多少呢?需要的朋友可以參考下2015-12-28
防止泄露公司機密、企業(yè)數(shù)據(jù)防泄密軟件排名、電腦文件加密軟件排行
面對日漸嚴(yán)重的內(nèi)部泄密事件,我們?nèi)绾问刈o企業(yè)的核心信息,如何防止內(nèi)部泄密也就成了擺在各個企業(yè)領(lǐng)導(dǎo)面前的一大問題。其實,針對內(nèi)網(wǎng)安全,防止內(nèi)部信息泄漏早已有了比較2015-12-17