遠端執行緒注入實現自刪除

2021-06-08 08:13:34 字數 1676 閱讀 8307

核心函式:

#include

#include

#pragma comment(lib,"kernel32.lib")

#pragma comment(lib,"user32.lib")

bool enabledebugpriv( lpctstr szprivilege )

if ( !lookupprivilegevalue( null, szprivilege, &sedebugnamevalue ) )

tkp.privilegecount = 1;

tkp.privileges[0].luid = sedebugnamevalue;

tkp.privileges[0].attributes = se_privilege_enabled;

if ( !adjusttokenprivileges( htoken, false, &tkp, sizeof tkp, null, null ) )

return true;

}typedef struct sargvdata

argvdata ;

dword winapi func(argvdata *pargv)

else

return 0 ;

}int winapi winmain(hinstance hinstance, hinstance hprevinstance, lpstr lpcmdline, int ncmdshow)

bret = process32next(hsnap,&ps) ;

}enabledebugpriv("sedebugprivilege");

hexp = openprocess(process_all_access, false, ps.th32processid) ;

if (null==hexp)

p_data = (argvdata *)virtualallocex(hexp,

null,

sizeof(argvdata),

mem_commit,

page_readwrite) ;

if (null==p_data)

if (false==writeprocessmemory(hexp,p_data,&argc_data,sizeof(argvdata),null))

//寫入遠端執行緒**

p_remote_thread = (farproc)virtualallocex(hexp,null,1024*5,mem_commit,page_execute_readwrite) ;

if (null==p_remote_thread)

if (false==writeprocessmemory(hexp,p_remote_thread,(farproc)&func,1024*5,null))

createremotethread(hexp,null,0,(lpthread_start_routine)p_remote_thread,p_data,0,null) ;

waitforsingleobject(p_remote_thread,infinite) ;

freelibrary(hkernel) ;

closehandle(hexp) ;

messagebox(null,"遠端執行緒自刪除演示","adh-cn",0) ;

while (1)

}

執行緒遠端注入

執行緒遠端注入的技術並不複雜,主要用到createremotethread這個api。難點有個地方,由於要注入其他程序的空間,因此,注入用的那個執行緒中的 必須使用和被注入程序的記憶體空間一致。換句話講,就是需要找到執行緒中使用的函式在遠端程序中的位址。明白這個,問題就沒有了。下面是乙個完整的執行緒...

遠端執行緒注入

本文記錄了最普通的一種dll注入方式 遠端執行緒注入,以便日後複習用。首先準備乙個要注入的dll 步驟略 準備乙個32位程式,本文使用掃雷。將掃雷和dll放在同一目錄,執行掃雷。然後編寫程式,將dll載入到掃雷的記憶體中。多位元組字符集 include include bool enabledebu...

遠端執行緒注入

dll程式 1 獲取程序控制代碼 2 計算dll路徑名長度,並且要加上0結尾的長度 3 在目標程序分配記憶體 4 拷貝dll路徑名到目標程序的記憶體 5 獲取模組位址 6 獲取loadlibrarya函式位址 7 建立遠端執行緒,載入dll 8 關閉控制代碼 1 獲取程序控制代碼 獲取程序控制代碼 ...