傀儡程序建立過程:
(1) createprocess乙個程序,並掛起,即向dwcreationflags
引數傳入create_suspended;
(2) getthreadcontext獲取掛起程序context,其中,eax為程序入口點位址,ebx指向程序peb;
(3) zwunmapviewofsection解除安裝掛起程序記憶體空間資料;
(4) virtualalloc分配記憶體空間;
(5) writeprocessmemory將惡意**寫入分配的記憶體;
(6) setthreadcontext設定掛起程序狀態;
(6) resumethread喚醒程序執行。
傀儡程序是惡意軟體隱藏自身**的常用方式,在調式過程中,若遇到傀儡程序,需要將建立的子程序資料從記憶體中dump出來,作為pe檔案單獨除錯,dump的時機為resumethead呼叫之前,此時傀儡程序記憶體資料已經完全寫入,程序還未正式開始執行。
若dump後檔案無法執行,od載入失敗,則需要做如下修復:
(1) filealignment值修改為sectionalignment值;
(2) 所有section的raw address值修改為virtual address.
參考:
dll注入系列 傀儡程序
0x0 介紹 之前說過,要動態注入dll檔案,則需要執行程式中本身沒有的載入操作,必須改變控制流,除了建立執行緒外,還可以劫持控制流。這與二進位制漏洞利用比較類似,我們向程式寫入一段shellcode,然後改變執行緒上下文,讓其去執行shellcode,這段shellcode完成loadlibrar...
程式除錯原理及步驟
在微控制器或者程式開發過程中,有乙個很重要的步驟就是 除錯 又叫 debug 通過除錯能夠迅速找到程式出現的問題,用好除錯能讓我們事半功倍。除錯 的過程就是在程式段某個可能出現問題的地方打乙個 斷點 程式執行到斷點之後就會停止執行,之所以叫 斷電 乙個可以從它的工作原理上理解,因為打斷點實現程式停止...
守護程序構造原理及實現
守護程序的 實現 守護程序 daemon 在後台執行的一種特殊程序,沒有控制終端,週期性的執行某項任務。在linux上很多服務都是以守護程序的形式執行在系統上,如inetd程序偵聽系統網路介面,定時任務程序cron。在centos系統上輸入ps命令,檢視所有的程序情況 圖中列出部分 注意事項 系統建...