麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 編程設(shè)計(jì) > 正文

windows任務(wù)管理器中隱藏進(jìn)程的方法

2020-06-27 15:21:39
字體:
供稿:網(wǎng)友

在WinNT下 "真正隱藏進(jìn)程 "這一說法,可以講是根本不可能實(shí)現(xiàn),只要我們的程序是以進(jìn)程內(nèi)核的形式運(yùn)行,都是不可能逃離CTRL+ALT+DEL的法眼。那么奇怪了,這豈不是與我們的標(biāo)題《WinNT   &   Win2K下實(shí)現(xiàn)進(jìn)程的完全隱藏》相矛盾嗎?是的,實(shí)際上應(yīng)該是:以非進(jìn)程方式執(zhí)行目標(biāo)代碼,而逃避進(jìn)程查看器的檢查,從而達(dá)到 "進(jìn)程隱藏 "的目的。
我們這里用的,是在宿主進(jìn)程中,以線程的方式執(zhí)行我們的代碼。實(shí)現(xiàn)起來非常簡(jiǎn)單。首先,我們先建立一個(gè)不執(zhí)行任何語句的線程

 

復(fù)制代碼
代碼如下:

DWORD stdcall ThreadProc(LPVOID *lpVoid){
return 0;
}

 

然后,將線程代碼拷備至宿主進(jìn)程所能夠執(zhí)行的任何地方(即頁面屬性為PAGGE_EXECUTE_READWRITE),如:共享內(nèi)存影射區(qū)、宿主進(jìn)程內(nèi)。這里我們選擇宿主進(jìn)程,拷備的時(shí)侯,我們需要先在宿主進(jìn)程中使用VirtualAllocEx函數(shù)申請(qǐng)一段內(nèi)存,然后再使用WriteProcessMemory將線程體寫入宿主進(jìn)程中。
以上工作完成后,我們便可CreateRemoteThread函數(shù)激活其執(zhí)行。下面給出一個(gè)完整的例子
 

復(fù)制代碼
代碼如下:

//遠(yuǎn)程線程執(zhí)行體
DWORD __stdcall ThreadProc (void *lpPara){
return 0;
}
int main(int argc, char* argv[]){
const DWORD THREADSIZE=1024*4;//暫定線程體大小為4K,實(shí)際上沒這么大,稍后我將會(huì)介紹
DWORD byte_write;
//獲得指定進(jìn)程ID句柄,并設(shè)其權(quán)限為PROCESS_ALL_ACCESS,992是宿進(jìn)程的ID號(hào),獲取ID號(hào)的方法這里我就不多講了
HANDLE hWnd = ::OpenProcess (PROCESS_ALL_ACCESS,FALSE,992);
if(!hWnd)return 0;
void *pRemoteThread =::VirtualAllocEx(hWnd,0,THREADSIZE,MEM_COMMIT| MEM_RESERVE,PAGE_EXECUTE_READWRITE);//申請(qǐng)
if(!pRemoteThread)return 0;
if(!::WriteProcessMemory(hWnd,pRemoteThread,&ThreadProc,THREADSIZE,0))//寫入進(jìn)程
return 0;
//啟動(dòng)線程
HANDLE hThread = ::CreateRemoteThread (hWnd ,0,0,(DWORD (__stdcall *)(void *))pRemoteThread ,NULL,0,&byte_write);
if(!hThread){ //還有內(nèi)存分配未釋放
return 0;
}
return 0;
}

 

到這里,對(duì)于隱藏的方法就算告一段落,相信看過的朋友對(duì)這個(gè)思路有個(gè)非常明確的概念了吧。 

在理解隱藏的方法后,我們著重開始寫線程的執(zhí)行部分了。如下:

 

復(fù)制代碼
代碼如下:

DWORD __stdcall ThreadProc(void *lpPara){
MessageBox(NULL, "hello ", "hello ",0);
return 0;
}

 

編譯執(zhí)行后,你會(huì)發(fā)現(xiàn)出現(xiàn)一個(gè)非法操作錯(cuò)誤,為什么呢?在我們以段頁式內(nèi)存管理的win2K操作系統(tǒng)中,編譯時(shí)會(huì)把所有的常量編譯在PE文件的.data節(jié)中,而代碼段則在.text中,所以,我們拷備到宿主進(jìn)程中的代碼是在.text中的代碼,MessageBox(NULL,(char   *)指針,p,0);所指向的地址是本進(jìn)程的內(nèi)存虛擬地址。而在宿主進(jìn)程中是無法訪問的。解決的方法很簡(jiǎn)單,按舊照搬的將 "hello "也拷備到目標(biāo)進(jìn)程中,然后再引用。同理,MessageBox函數(shù)地址編譯時(shí),也是保存在.Import中,寫過Win2k病毒的朋友都知道,所有常量與函數(shù)入口地址都需在代碼段定義與得出,我們這里也與他有點(diǎn)類似。言歸正傳,同樣情況我們也把函數(shù)的入口地址一起寫入目標(biāo)進(jìn)程中。

 

復(fù)制代碼
代碼如下:

//先定義參數(shù)結(jié)構(gòu)
typedef struct _RemotePara{//參數(shù)結(jié)構(gòu)
char pMessageBox[12];
DWORD dwMessageBox;
}RemotePara;
//付值
RemotePara myRemotePara;
::ZeroMemory(&myRemotePara,sizeof(RemotePara));
HINSTANCE hUser32 = ::LoadLibrary ( "user32.dll ");
myRemotePara.dwMessageBox =(DWORD) ::GetProcAddress (hUser32 , "MessageBoxA ");
strcat(myRemotePara.pMessageBox, "hello/0 ");

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 韩国一大片a毛片 | 国产免费久久久久 | 毛片在线免费播放 | 国内精品伊人久久 | 依依成人综合 | 黄色片网站在线免费观看 | 黄色片免费在线播放 | 久久午夜神器 | 一级做a爱性色毛片免费1 | 海外中文字幕在线观看 | 国产精品99久久久久久大便 | 久久99精品久久久久久国产越南 | 午夜视频免费播放 | 538在线精品 | 蜜桃成品人免费视频 | 久久成人激情视频 | 国产精品亚洲精品久久 | 日日草夜夜 | 性明星video另类hd | 免费一级毛片在线播放视频老 | 欧美精品一区自拍a毛片在线视频 | 国产精品自拍片 | 日本不卡一区二区三区在线观看 | av影院在线播放 | 一级黄色片在线看 | 免费淫视频| 亚洲一区 国产 | 91成人在线免费 | 在线2区| 成人免费激情视频 | 海角在线观看91一区二区 | 久久国产精品久久久久久 | 一区二区三区欧美精品 | 成人综合免费视频 | 久久国产成人精品国产成人亚洲 | 成人男男视频拍拍拍在线观看 | 国产精品99久久久久久大便 | 男人的天堂视频网站 | 欧美人一级淫片a免费播放 久久久久久久久91 国产99久久久久久免费看 | 久久精品一二三区白丝高潮 | 毛片a区 |