OD學習雜記

2021-09-11 04:22:04 字數 2415 閱讀 4762

出call

ctrl+f9  執行到段尾然後f8出call

+-可以觀測執行的上一步,下一步,但cpu沒執行。故可以用-看call以外,只是看看

call :相當與:push eip然後jmp***;

od中摁「/」按鈕可以看自己所有改過的patch,可以撤銷等操作

dword   雙字 就是四個位元組

ptr     pointer縮寫 即指標

裡的資料是乙個位址值,這個位址指向乙個雙字型資料

比如mov eax, dword ptr [12345678]  把記憶體位址12345678中的雙字型(32位)資料賦給eax

test命令將兩個運算元進行邏輯與運算,並根據運算結果設定相關的標誌位。但是,test命令的兩個運算元不會被改變。運算結果在設定過相關標記位後會被丟棄。

test詳解:

mov的指令型別是通用資料傳送,傳送的是資料

lea的指令型別是目的位址傳送,傳送的是位址

xor ***,***其實就是將***清零(異或原理)

任何彙編函式的返回值都是存放在eax裡的。。。。。

f2下斷點,alt+b開啟斷點編輯器,空格可切換斷點狀態

如果跟進系統dll提供的api函式中,此時想返回到應用程式領空中,可以alt+f9執行返回到使用者**命令

程式通常讀取文字框內容的字串用的函式為:getwindowtexta(getwindowtextw)

getdlgitemtexta(getdlgitemtextw)

ctrl+g鍵開啟跟隨表示式的視窗

ctrl+n開啟應用程式的匯入表(輸入表)可據此推斷需要在**挖下陷阱

關於返回值,彙編**的返回值約定是存放在eax這個暫存器裡面的,如果32位的eax不夠存放返回值,系統會將返回值放在記憶體某個位置並把該位置的位址放在eax返回

jz 表示當zf =1 時跳轉,即結果為0跳轉。

jnz 即 zf=0 時跳轉,即結果不為0 跳轉。

sbb的含義 

sbb是帶借位減法指令,它利用了cf位上記錄的借位值。 

指令格式:sbb 操作物件1,操作物件2 

功能:操作物件1=操作物件1-操作物件2-cf

sbb與sub的區別 

sub ax,bx 的結果是 ax-bx 

sbb ax,bx 的結果是 ax-bx-cf(進/借位標誌

標誌位:

標誌暫存器psw(程式狀態字暫存器psw)    標誌暫存器psw是乙個16為的暫存器。它反映了cpu運算的狀態特徵並且存放某些控制標誌。8086使用了16位中的9位,包括6個狀態標誌位和3個控制標誌位

cf(進製標誌位):當執行乙個加法(減法)運算時,最高位產生進製(或借位)時,cf為1,否則為0。    zf零標誌位:若當前的運算結果為零,則zf為1,否則為0。    sf符號標誌位:該標誌位與運算結果的最高位相同。即運算結果為負,則sf為1,否則為0。    of溢位標誌位:若運算結果超出機器能夠表示的範圍稱為溢位,此時of為1,否則為0。判斷是否溢位的方法是:進行二進位制運算時,最高位的進製值與次高位的進製值進行異或運算,若運算結果為1則表示溢位of=1,否則of=0    pf奇偶標誌:當運算結果的最低16位中含1的個數為偶數則pf=1否則pf=0    af輔助進製標誌:乙個加法(減法)運算結果的低4位向高4位有進製(或借位)時則af=1否則af=0

另外還有三個控制標誌位用來控制cpu的操作,可以由程式進行置位和復位。    tf跟蹤標誌:該標誌位為方面程式除錯而設定。若tf=1,8086/8088cpu處於單步工作方式,即在每條指令執行結束後,產生中斷。    if中斷標誌位:該標誌位用來控制cpu是否響應可遮蔽中斷。若if=1則允許中斷,否則禁止中斷。    df方向標誌:該標誌位用來控制串處理指令的處理方向。若df=1則串處理過程中位址自動遞減,否則自動遞增。

inc 加1指令

dec 減1指令

一、加一指令inc

inc a 相當於 add a,1 //i++

優點 速度比sub指令快,占用空間小

這條指令執行結果影響af、of、pf、sf、zf標誌位,但不影響cf進製標誌位.

二、減一指令dec

dec a 相當於 sub a,1 

優點 速度比sub指令快,占用空間小

這條指令執行結果影響af、of、pf、sf、zf標誌位,但不影響cf進製標誌位.

cmp指令:

cmp dest,src

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

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

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

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

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

python 學習雜記

一 模組匯入問題 如果在機器上安裝了多個版本的python,往往會有匯入錯誤,例如一般的python程式頭都寫的是 usr bin env python 這個實際是 usr bin python 但是如果新版本的python是後安裝的,且沒有 prifex usr 可能這個鏈結仍指向老版本pytho...

Python學習雜記

學習資料 python核心程式設計 第二版 class c object foo 100 name 是給定類的字元名字,它適用於那種只需要字串 類物件的名字 而非類物件本身的情況。內建的型別也有這個屬性。type 123 str type 123 name str type type 123 typ...

學習筆記雜記

命令 具體操作 ls顯示檔案或目錄 l列出檔案詳細資訊l list a列出當前目錄下所有檔案及目錄,包括隱藏的a all mkdir 建立目錄 p建立目錄,若無父目錄,則建立p parent cd切換目錄 touch 建立空檔案 echo 建立帶有內容的檔案。cat檢視檔案內容 cp拷貝 mv動或重...