簡體   English   中英

了解匯編中的JMP代碼

[英]Understanding JMP Codes in Assembly

最近,我剛剛接觸了匯編語言和調試技術。 我有以下代碼:

Address   Hex dump          Command                                  Comments
006E3689   .  E8 C5F9FFFF   CALL 006E3053
->006E368E      E9            DB E9
->006E368F      35            DB 35                                    ; CHAR '5'
->006E3690      80            DB 80
->006E3691   .  0000D490      DD 90D40000
006E3695  />  E8 72040000   CALL 006E3B0C

再往下走...

Address   Hex dump          Command                                  Comments
006EB6C8  /.  6A 58         PUSH 58
006EB6CA  |.  68 A0372A00   PUSH 2A37A0
006EB6CF    ^ E9 C17FFFFF   JMP 006E3695

現在,在我編譯由->指示的代碼之前,它們實際上全部都包含在JMP 006EB6C8中,它當然跳到了第二組代碼,推送了幾句話,然后又回到了頂部。

現在該代碼仍然可以正常工作,但是我不確定為什么在編譯時會更改代碼(使用Ollydbg),但更重要的是(我相信)代碼知道跳轉的方式和距離。 到目前為止,我的研究告訴我E9是跳轉的操作碼,但我無法在35和80上找到信息。我假設0000D490是某種偏移量,但我找不到任何可加起來的數學運算006EB6C8地址。

希望這個問題能夠形成,我還是一個新手。 提前致謝!

我感到困惑的是,為什么OllyDbg不會為您拆卸該跳台。 無論如何,正如您所知, E9幾乎是一個難題。 從下一條指令的開頭開始需要4字節的偏移量。 因此,您的指令實際上是E9 35 80 00 00 ,這意味着jump to address of next instruction + 00008035 (x86使用低位字節序)。 下一條指令的地址當然是006E3693 ,因此跳轉將使您進入006E3693 + 00008035 = 006EB6C8 ,這是您最初編寫的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM