對程式調用API變形的一點認識

來源:互聯網
上載者:User

我就從簡單分析下怎樣躲過殺毒軟體的查殺說起吧

這是我以前的文章,據說這種技術可以過主動防禦

.386
.Model Flat, StdCall
Option Casemap :None

Include windows.inc
Include user32.inc
Include kernel32.inc
IncludeLib user32.lib
IncludeLib kernel32.lib

.DATA
szDllKernel db 'user32.dll',0
szMessageBox db 'MessageBoxA',0

.DATA?
lpMessageBox dd ?
.CODE
START:
invoke GetModuleHandle,addr szDllKernel
mov ebx,eax
invoke GetProcAddress,ebx,offset szMessageBox
mov lpMessageBox,eax
push MB_OK
push 0
push 0
push 0
mov EAX,offset _END
push EAX
jmp lpMessageBox
_END:
invoke ExitProcess,0

END START

 上面的代碼可用於反殺毒軟體的病毒裡,殺毒軟體一般都用特徵碼判斷是否調用了危險API,而上面的代碼就是把CALL分解開來,實現了簡單的代碼變形
如果殺毒軟體是靠判斷JMP的目標是否為危險API的話,也可以寫成這樣躲過殺毒軟體

 

.CODE
START:
invoke GetModuleHandle,addr szDllKernel
mov ebx,eax
invoke GetProcAddress,ebx,offset szMessageBox
mov lpMessageBox,eax
push MB_OK
push 0
push 0
push 0
mov EAX,offset _END
push EAX
;添加的代碼開始
mov edi,edi
push ebp
mov ebp,esp
add lpMessageBox,5
;添加的代碼結束
jmp lpMessageBox
_END:
invoke ExitProcess,0 
END START

 

殺毒軟體一般是靠特徵碼判斷病毒的,比如殺毒軟體監視MessageBox這個函數的調用,只要調用這個函數殺毒軟體就認為你有破壞系統的動機,所以我們就得想辦法躲過殺毒軟體的監視,但又不能不用這個函數那怎麼辦呢?
www.xbin.cn
瞭解調用過程的人都知道CALL指令就是先把下一條指令地址壓棧然後在用JMP跳轉到函數入口處,那我們的解決辦法就出來了,我們可以自己完成這個調用動作,先把下一條指令壓棧

 

mov EAX,offset _END
push EAX

 

在跳轉到函數入口處

 

jmp lpMessageBox 

 

這樣就騙過殺毒軟體了,因為在二進位代碼層級上,上面的代碼和CALL指令的二進位是不同的,但實現的功能是相同的。

有的殺毒軟體不光靠判斷特徵碼,而且還判斷跳轉的目標地址,就是判斷你的指令是否跳轉到他認為危險的API入口處,當然我們也有辦法騙過他,那就是把目標API的前幾行代碼在自己程式裡實現,然後在跳轉到API函數中去繼續運行。比如我是把MessageBox的前3行代碼在自己的程式裡實現,然後在條到MessageBox的第4行裡繼續運行。
www.xbin.cn
這樣跳轉到目標入口地址就不是API函數的入口了

如果殺毒軟體是靠判斷是否跳轉到一個指定的地區的話,那還有一個更毒的招,那就是分配一個動態記憶體,把API函數代碼考到自己的2G空間裡運行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.