(1)用virtualallocex函式在遠端程序的位址空間中分配一塊記憶體。
(2)用writeprocessmemory函式反映dll的路徑名複製到第1步分配的記憶體中
(3)用getprocaddress函式來得到loadlibrary w(或a)函式在kernel32.dll的真實位址。
(4)用createremotethread函式在遠端程序中建立乙個執行緒,讓新執行緒呼叫正確的loadlibrary函式並在引數中傳入第1步分配的記憶體位址。這時,dll己經被注入到遠端程序的位址空間中,dll的dllmain函式會收到dll_process_attach通知並縣城可以執行我們想要執行的**。當dllmain返回時,遠端執行緒會從執行緒函式(loadlibraryw/a)呼叫返回到執行緒啟動函式rtluserthreadstart(該函式的實現可參考第6章),最後呼叫exitthread使遠端執行緒終止。
(5)此時遠端程序中那塊在第1步分配的記憶體還在,dll也還在遠端程序的位址空間中。這裡只需呼叫virtualfreeex就可以釋放遠端程序的記憶體。
(6)但dll的釋放,要先通過getprocaddress獲得freelibrary的位址,然後再通過createremotethread在遠端程序中建立乙個執行緒,讓該執行緒呼叫freelibrary,pvparam引數傳入遠端dll中控制代碼。
//
//建立遠端執行緒並注入dll
//@@dwproid——目標程序id
//@@lpszdll ——要注入的dll完整路徑
typedef pthread_start_routine lpfn;
bool winapi injectlibw(dword dwproid, pcwstr lpszdll)
__finally
return bresult;
}
建立遠端執行緒
include using namespace std include include bool loaddll dword dwprocessid,char szdllpathname 2.計算dll路徑名字長度,並且要加上0結尾的長度 dwlength strlen szdllpathname ...
mysql建立遠端帳戶 mysql 建立遠端帳戶
linux上安裝的mysql。預設狀況下只有乙個帳戶 root 此帳戶只能進行本地鏈結 對外拒絕鏈結 mysql 咱們須要建立乙個容許遠端登陸的資料庫帳戶 這樣才能夠方便的進行遠端操做資料 linux 預設狀況下 linux內的mysql資料庫mysql,user表內的使用者許可權只是對localh...
執行緒 建立執行緒
重寫run public void run 例項化物件 類名 t new 類名 設定屬性 名字,優先順序 優先順序是1 10的整數,1最小,預設是5 優先順序越高,該執行緒占用cpu的時間 機會 越多。id是自動生成 t.setname 執行緒1 t.setpriority 4 啟動執行緒,預設呼叫...