抗去除花指令(三)——去除檢測

任何技術都有被攻破的一天,沒有包打天下的方法。再強的花指令也是有可能被清除的,這時我們也要想辦法應對。所以我們經常需要檢測花指令是否被清除,加以應對。

一、花指令被清除後的痕跡
    我們來看一下,下面一段簡單花指令被清除後的結果:
代碼:
  jmp @F
   byte 08eH
@@:
   ret

清除後:

 

二、檢測   

     從上文我們可以看到,花指令被替換指令NOP,這樣就不必重構代碼,就能夠使代碼正常運行。顯然,我們只要NOP就行了。
舉例:
.386
.model stdcall,flat
option casemap:none
include windows.inc
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib
.data
Context byte "Junkcode has been cleaned",0
Tip byte "Tip",0
.code
start:
JunkCode:
  jmp @F
  byte 8eH
@@:
  mov al,byte ptr[$-1]
  cmp al,90H
  jnz  Pro_End
  invoke MessageBox,NULL,addr Context,addr Tip,MB_OK  
Pro_End:
  invoke ExitProcess,0
end start

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章