IDA反彙編學習(一)

2021-10-25 19:04:49 字數 1313 閱讀 1313

@toc**

c語言**:

if

(a==b)

彙編**:

mov eax, a

cmp eax, b ;a == b?

jne l1 ;否:跳過後續指令

mov x, 1 ;是,x,y 賦值

mov y, 2

l1:

對於迴圈語句,其實也是一樣的,也是通過跳轉指令來實現。

c語言**:

while

(val1 < val2)

彙編**

mov eax, val1			;把變數複製到eax中

beginwhile:

cmp eax, val2 ;如果非val1 < val2

jnl endwhile ;退出迴圈

inc eax ;val1++

dec val2 ;val2--

jmp beginwhile ;重複迴圈

endwhile:

mov val1,eax ;儲存val1的值

其中jne代表不等於時執行

jnl代表大於等於時執行

inc代表自加

dec代表自減

邏輯判斷的實現也是通過跳轉指令來實現的,具體如下。

c語言**:

if

(a1 > b1)

and(b1 > c1)

x =1end if

彙編**

cmp a1, b1			;第乙個表示式

ja l1

jmp next

l1: cmp b1, c1 ;第二個表示式

ja l2

jmp next

l2: mov x, 1 ;全為真:將x置為1

next:

其中ja代表大於執行

jmp代表轉移至

jmp與call指令的對比:

jmp無條件跳轉,無返回,沒有壓棧(起到保護資料的作用)。call通過入口位址跳轉有返回,返回位址壓入堆疊。

下面位址為組合語言指令速查表

ida反彙編工具

ida pro 是乙個世界頂級的互動式反彙編工具,它的使用者囊括了軟體安全專家,軍事工業,資訊部門,逆向工程學者,黑客。從功能上它大大勝過了w32dasm。近來它的盜版已經在網上傳播開了,你可以很輕鬆得到它。ida pro 簡稱ida 英文 interactive disassembler的縮寫。它...

C 反彙編學習筆記(一)

chinese c 整數與浮點數的儲存方式 1 整數型別 無符號整數的所有位都用來表示數值,有符號整數的最高位是符號位,其餘位以補碼格式儲存。補碼規則就是用0減去這個數的絕對值 取反加一 首先我們知道x x 反碼 0xffffffff,因此x x 反碼 1 0,因此x 補碼 0 x x 反碼 1。補...

反彙編學習日記2010 11 14

昨天的第乙個例子是 windows api 這本書裡的,天書夜談 第一章講的是彙編指令與c語言。這是一本好書!乙個最簡單的c程式反彙編後會是什麼樣子呢?debug和release的區別是編譯出來的彙編 是不一樣的。一些彙編小知識 call的本質是push jmp,ret本質是pop jmp xor ...