小華的部落格: 一個關於INT 3h的知識分享

搜尋此網誌

網頁

星期三, 9月 11, 2013

一個關於INT 3h的知識分享

恩,好久沒來發文章了!  慢慢地最近比較有時間,所以會在寫些文章分享一下知識!

-----------------------------------------------------------------------------------------------------------------

一個關於INT 3h的知識分享

一般來說INT xxh的機器碼會看到是CD imm8 ,例如: CD 19 就是呼叫INT 19h.

而INT3比較特別,他有一個1 byte的OPCODE是0xCC,使用1個BYTE的好處是"他可以覆蓋在任何指令的第一個BYTE而不會去破壞掉原本的指令意思"

而2 bytes的方式就沒這個好處! 如果你了解INTEL 指令,你就會知道一行指令是由Prefix OPCODE.......部分組成的,所以一行指令所代表的機器碼長度不同,因此一個Byte的INT 3h就可以利用這些特性讓Debugger去插入INT 3h的斷點,然後跳到Debug Engine裡面.


底下是範例代碼,一個換掉原本位置的方式:

    lds      bx,BreakToAddress  ;Insert INT3h OPCODE to this addrees
    mov    al,0CCh                  ;INT 03h opcode 
    xchg   [bx],al                    ;Set INT 3h OPCODE and also save original opcode into AL          

    mov    OriginalOpCode,al   ;Save  original opcode 
  

沒有留言: