花指令——多个指令共用字节
生活随笔
收集整理的這篇文章主要介紹了
花指令——多个指令共用字节
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、原理
一個字節屬于兩條指令。
短跳轉的指令機器碼是 EB XX,XX是指跳轉位置到JMP指令的下一條指令的偏移,例如 EB 00 就是跳轉到JMP 的下一條指令,相當于啥也不做,如圖:
那么如果是 EB FF ,就會跳轉到JMP指令本身的第二字節:
對于這個特性,稍加利用,可以編寫出這樣的代碼:
跳轉執行后,跳到JMP第二字節,FF C0 被識別成 INC EAX,48 被識別成 DEC EAX,執行后反匯編的結果如下:
這就是無效匯編指令的原理,EB FF C0 48 這段硬編碼可以添加到程序的任何地方,我們來看看效果:
二、演示
IDA PRO 7.5 無法處理這種情況。
可以發現使用這種花指令并不是一種非常敏感的操作,可以放心大膽地用。報毒的這兩個引擎可以無視,亂來的,helloworld都報毒的。尤其是那個 yande 什么的,名字就長得像個黃色網站。
三、另一個例子
除了jmp,我們也可以使用條件跳轉指令和別的寄存器。下面舉一個更復雜的例子。
這段花指令也是可以添加到任意位置的。
總結
以上是生活随笔為你收集整理的花指令——多个指令共用字节的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CreateProcess 重定向CMD
- 下一篇: 使用SEH实现跳转