OD教程(彙編基礎)

2021-06-22 00:21:18 字數 2388 閱讀 4883

一、call有以下幾種方式:

call 404000h ;

直接跳到函式或過程的位址

call eax ;

函式或過程位址存放在eax

執行乙個系統api

windows

應用程式執行在ring3級別(包括我們的倚天劍:ollydbg)

等級安排

但有時候需要ring0級別才能進行操作,那咋整?

我們可以通過系統為我們搭建的橋梁:api函式,我們也稱之為系統提供給我們的介面。

因為系統只信任自己提供的函式,所以我們要通過api才能實現對核心的操作。

你可以這麼想,假如小甲魚送給你一輛法拉利跑車,恩,你沒聽錯,是假如,不是真的!那你要怎麼來駕駛她?

沒錯,要通過踩油門來加速,要通過打方向盤來轉彎……而油門,方向盤

就是所謂的介面,對於法拉利來說,它們就是api函式。

mov指令格式:mov dest, src

這是乙個很容易理解的指令,mov指令將src的內容拷貝到dest,mov指令總共有以下幾種擴充套件:

movs/movsb/movsw/movsdedi

,esi:這些變體按串/位元組/字/雙字為單位將esi暫存器指向的資料複製到edi暫存器指向的空間。

movsx

符號位擴充套件,byte->word,word->dword (擴充套件後高位全用符號位填充),然後實現mov。

movzx

零擴充套件,byte->word,word->dword(擴充套件後高位全用0填充),然後實現mov。

cmp指令格式:cmp dest, src

cmp指令比較dest和src兩個運算元,並通過比較結果設定c/?o/z標誌位。

cmpeax, ebx ;

如果相等,z標誌位置1,否則0.

cmpeax, [404000] ;

將eax和404000位址處的dword型資料相比較並同上置位。

cmp[404000], eax ;

同上。對於這個概念,建議魚油以關注蒼井空老師的熱情去關注它,因為它在破解中起到的作用是至關重要的。

事實上所有的標誌位歸併與乙個32位的標誌位暫存器,也就是說有32個不同的標誌位。

每個標誌位有兩個屬性:置1或置0,就相當於我們平時說的ok或不ok,ok就買魚c優盤支援小甲魚,不ok就看著小甲魚餓死街頭醬紫啦~

哈哈,大家可能更加關注的是32個標誌位都要記住?那不折騰死人才怪!

在逆向中,你真正需要關心的標誌位只有三個,也就是cmp指令能修改的那三個:z/o/c。

z標誌位(0標誌),這個標誌位是最常用的,運算結果為0時候,z標誌位置1,否則置0。 o

標誌位(溢位標誌),在執行過程中,如運算元超出了機器能表示的範圍則稱為溢位,此時of位置1,否則置0。 c

標誌位(進製標誌),記錄運算時從最高有效位產生的進製值。例如執行加法指令時,最高有效位有進製時置1,否則置0。

邏輯運算

指令格式:test dest, src

這個指令和and指令一樣,對兩個運算元進行按位的『與』運算,唯一不同之處是不將『與』的結果儲存到dest。

即本指令對兩個運算元的內容均不進行修改,僅是在邏輯與操作後,對標誌位重新置位。

小甲魚很負責任地告訴大家該指令的實戰形態百分之九十九是醬紫:test eax, eax(如果eax的值為0,則z標誌位置1)

條件跳轉指令,就是根據各種不同標誌位的條件判斷是否成立,條件成立則跳轉。

也就是我們平時所說的補丁。

所謂給程式打補丁就是我們對程式破解所進行的修改,就是說像我們衣服破了,如果沒有打補丁,就會**的意思。

ollydbg

的「/」可以檢視所有打過的補丁。

od基礎彙編

標誌暫存器代表某種狀態。在32位cpu中有32個不同的標誌暫存器,不過不用擔心,我們只關心其中的3個 zf of cf。在逆向工程中,你了解了標誌暫存器就能知道程式在這一步是否會跳轉,標誌暫存器就是乙個標誌,只能是0或者1,它們決定了是否要執行某個指令。z flag 零標誌 zf是破解中用得最多的暫...

OD 彙編指令 記錄(1)

一.mov eax 0x12 1.mov 目標運算元 源運算元 作用把 源運算元拷貝到目標運算元 mov 語法 1.mov r m8 r8 r 代表通用暫存器 2.mov r m16 r16 m 代表記憶體 3.mov r m32 r32 imm 代表立即數 4.mov r8,r m8 r8代表8位...

OD入門基礎

je,jz 結果為零則跳轉 jne,jnz 結果不為零則跳轉 js 結果為負則跳轉 jns 結果不為負則跳轉 jp,jpe 結果中1的個數為偶數則跳轉 jnp,jnpe 結果為1的個數為奇數則跳轉 jo 結果溢位了則跳轉 jno 結果沒有溢位則跳轉 jb,jnae 小於則跳轉 無符號數 jnb,ja...