CTF逆向工程學習入門 二 組合語言基本知識

2021-10-16 11:47:40 字數 930 閱讀 6017

1.暫存器和記憶體

除此之外,cpu中還存在乙個標誌暫存器,其中的每位表示對於標誌位的值,常用標誌位如下:

2.cpu的定址方式

定址方式

示例操作物件

立即定址

1000h

1000h這個數字

直接定址

[1000h]

記憶體位址1000h的單元

暫存器定址

raxrax這個暫存器

暫存器間接定址

[rax]

以rax中存的數作為位址的記憶體單元

基址定址

[rbp+10h]

將rbp中數作為基址,加10h,訪問這個位址的記憶體單元

變址定址

[rdi+10h]

rdi中數字為基址+10h,訪問這個位址的記憶體單元

基址加變址定址

[rbx+rsi+10h]

……

x86和x64彙編指令的基本格式:操作碼 [運算元1] [運算元2]

組合語言中的條件跳轉指令:

反彙編的兩種演算法:線性掃瞄反彙編演算法遞迴下降反彙編演算法線性掃瞄法從**起始片段開始乙個接乙個地解析指令,直到結束;缺點是一旦有新資料插入到**段中,後續的反彙編結果均為錯誤的。遞迴下降法則會嘗試推測每條**的執行結果。

x86 32位呼叫約定

x86 64位呼叫約定

區域性變數在函式呼叫時一同臨時儲存在棧中,每個函式存在的一片棧區域叫做棧幀,乙個函式中每個區域性變數相對於該函式棧幀的偏移都是固定的,所以引入乙個暫存器專門儲存棧幀的位置,即ebp。

CTF逆向工程學習入門(一) 可執行檔案的相關概念

ctf中的逆向工程一般指軟體逆向工程,即對已經編譯完成的可執行檔案進行分析,研究程式的行為和演算法,然後以此為依據,計算出出題人想隱藏的flag。1.可執行檔案的形成過程 考慮到執行效能等因素的影響,在每一步過程中會伴隨著資訊的丟失。逆向則需要利用相關知識及經驗,還原其中的部分資訊,進而還原全部或部...

逆向工程學習記錄

od基本指令 指令快捷鍵 含義restart ctrl f2 重新開始除錯 step info 單步步入 f7執行一句op code 操作碼 若遇到呼叫命令 call 將進入函式 內部 step over 單步步過 f8執行一句op code 操作碼 若遇到呼叫命令 call 將進入函式自身,不跟隨...

軟體逆向工程學習(一)

本專題學習軟體逆向的基本原理 方法,並針對具體案例進行逆向分析,從而學習一套完整 系統的軟體逆向的方法並獲取相關經驗。ollydbg 常用於動態除錯程式,無法除錯核心,ui功能強大。softice 工作在ring0態的偵錯程式,常用於除錯驅動程式,功能強大的命令列工具。windbg 介於上兩者之間的...