C 反彙編三 IF ELSE多分支語句

2021-06-03 19:19:45 字數 1300 閱讀 1626

00401500   push        ebp

00401501 mov ebp,esp

00401503 sub esp,44h

00401506 push ebx

00401507 push esi

00401508 push edi

00401509 lea edi,[ebp-44h]

0040150c mov ecx,11h

00401511 mov eax,0cccccccch

00401516 rep stos dword ptr [edi] // 初始化

32: int x=3;

00401518 mov dword ptr [ebp-4],3 // 區域性變數ebp-4賦值

33: if (5>x)

0040151f cmp dword ptr [ebp-4],5 // 區域性變數和5比較

00401523 jge grammar_if_else_if+45h (00401545) // 大於等於則跳向下乙個個分支語句.否則繼續向下執行

34:

37: else if (5>::operator<<) (0040107d)

40: }

41: else

00401569 jmp grammar_if_else_if+89h (00401589) // 輸出大於後直接跳向分支語句結束

42:

45: }

00401589 pop edi // 平衡堆疊

0040158a pop esi

0040158b pop ebx

0040158c add esp,44h

0040158f cmp ebp,esp

00401591 call __chkesp (004091d0)

00401596 mov esp,ebp

00401598 pop ebp

00401599 ret // 返回給呼叫者

C語言反彙編

這裡使用的是keil4軟體,將編寫的c語言程式彙編成組合語言。這裡只用最簡單的c語言做了一下參考,所舉的例子是最簡單的,只能用於了解一下彙編的表達方式。如圖所示,條件判斷語句的彙編語句表達是賦值後與進行異或比較,再判斷是否進行跳轉。將立即數03賦值給累加器a,然後將累加器a的值與立即數05進行異或 ...

C反彙編例項(詳細註解版)(三)

上次我分析了一下,debug 模式下反彙編後的演算法部分 天才的您可能覺得不算糟,想再搞點花樣,那麼本文就能滿足你的需求。天書夜讀上其實還貼出來了 release 模式下的 它經過 vc編譯器 o2的優化,我初次看到反彙編 時,還真汗了一把。不過定下心來細細品位還是可以看懂的,儘管正如原書所說,連語...

C反彙編例項(詳細註解版)(三)

上次我分析了一下,debug 模式下反彙編後的演算法部分 天才的您可能覺得不算糟,想再搞點花樣,那麼本文就能滿足你的需求。天書夜讀上其實還貼出來了 release 模式下的 它經過 vc編譯器 o2的優化,我初次看到反彙編 時,還真汗了一把。不過定下心來細細品位還是可以看懂的,儘管正如原書所說,連語...