逆向基礎學習(一)

2021-10-06 09:25:57 字數 2004 閱讀 9718

單獨的學習彙編指令可能較為枯燥且難以理解,但是結合逆向來看,往往會生動一些。當你在使用工具時發現一些無法看懂的指令但卻無法繞過時,不自覺的就會去查詢學習,這就是無意識的學習了相關指令,但是回過頭來在總結一下,可能就沒有那麼難懂了。

常用彙編指令:

add(加)

語法:add 被加數 加數

加法指令將乙個數值加在乙個暫存器上或者乙個記憶體位址上。

add eax ,123=eax+123;

加法指令對zf,of,cf都有影響

sub(減)

語法:sub 被減數 減數

減法指令將減數減去被減數後儲存在被減數中

sub可以標記zf,of,cf

and(邏輯與)

語法:and 目標數 原數

and對兩個數進行邏輯與運算

and指令會清空of,cf,設定zf標記

and 10001100 10011010=10001000

相同為真(1),不同為假(0)

or(邏輯或)

語法:or 目標數 原數

or對兩個數進行邏輯或運算

or指令會清空of,cf,設定zf標記

or 10001100 10011010=10011110

有乙個1就為1

mov(賦值)

語法:mov 目標暫存器 賦值數(也可以是暫存器,但是是取暫存器裡的值)

mov將目標暫存器賦值

mov ax 18 ax=18;

call(呼叫)

語法:call 語句

call指令將當前的相對位址壓入棧中,並且呼叫call後的子程式

比如 call 位址(012411);call 暫存器(eax)

cmp(比較)

語法:cmp 目標數 原數

cmp指令比較兩個數的值並標記cf,of,zf

cmp eax,ebx 比較兩個暫存器的值是否相等,相等zf設為1

dec(自減)

語法:dec 語句

dec用來自減1,相當於c中的- -

dec eax;eax的值減1

inc(自加)

語法:inc 語句

inc用來自加1,相當於c中的++

inc eax;eax 的值加1

nop(無操作,nop填充就是利用這個)

語法:nop

這個指令說明不做任何操作,所以運用範圍很廣

push

語法:push 值

push指令將值壓入棧並減小棧頂指標的值以指向新棧頂

ret語法:ret

ret指令是從**區域退出到呼叫call指令處

test

語法:test 操作符 操作符

大部分操作都是test eax eax;兩個暫存器相與,如果結果為零就標記zf,不然zf清零

shl語法:shl 運算元

左移shr

語法:shr 運算元

右移常用暫存器

32位 16位 8位

eax ax al

ebx bx bl

ecx cx cl

edx dx dl

esp sp ah

ebp bp bh

esi si ch

edi di dh

這裡是32位的常用通用暫存器,在存入數值時,分別對應相對應的暫存器

比如 mov ah,8將ax的高八位存入8,按二進位制儲存。這些在通過彙編編譯器裡更加容易理解,8位暫存器,16位暫存器,32位暫存器是同乙個暫存器裡的不同段。

下面是將ax設為1,可以看到,出現變化的位置是在eax暫存器的後16位,這也就說明,他們是統一暫存器的不同位置段。

觀察右側的eax暫存器可以看到變化

逆向基礎學習(二)

儲存方式0xa2c2 小端儲存 可以看到,資料的地位c2儲存在低位,資料高位a2在高位,x86一般採用小段儲存 大端儲存相反,手機處理器有些會採用大端儲存 mov dword ptr ds 位址 eax 含義 將eax的值寫入位址 寫入的寬度需要一致,比如將ax寫入,但ax是16位,就會出錯 記憶體...

逆向基礎之彙編(一)

目錄 1.前言 2.進製 2.1 進製的簡寫 3.資料寬度 4.原始碼 反碼和補碼 4.1 有符號與無符號 4.1.1 無符號 4.1.2 有符號 4.2 編碼規則 4.2.1 原碼 4.2.2 反碼 4.2.3 補碼 5 位運算 5.1 與運算 5.2 或運算 5.3 異或運算 5.4 非運算 5...

逆向基礎 常用逆向工具介紹

偵錯程式修補和轉儲工具 整合工具 immunity debugger ida interactive disassembler,互動式反彙編器 是業界乙個功能十分強大的反彙編工具,是安全滲透人員進行逆向安全測試的必備工具,其強大的靜態反彙編和逆向除錯功能能夠幫助安全測試人員發現 級別的高危致命安全漏...