欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種遠(yuǎn)程線程注入技術(shù)方法

文檔序號(hào):6558294閱讀:387來源:國知局
專利名稱:一種遠(yuǎn)程線程注入技術(shù)方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種遠(yuǎn)程線程注入技術(shù)方法。這種方法是主要用在遠(yuǎn)程線程注入的監(jiān)控系統(tǒng)實(shí)現(xiàn)的關(guān)鍵技術(shù)和實(shí)現(xiàn)方法,分析了在DLL中定時(shí)監(jiān)控功能的實(shí)現(xiàn),提出采用兩級(jí)監(jiān)控的方法來提高監(jiān)控系統(tǒng)的功能。
背景技術(shù)
監(jiān)控系統(tǒng)必須要保證系統(tǒng)的正常運(yùn)行,并最大程度地減少系統(tǒng)資源負(fù)擔(dān),同時(shí)要防止被用戶結(jié)束,較為有效的方法就是把進(jìn)程隱藏。進(jìn)程隱藏的實(shí)現(xiàn)機(jī)制包括修改動(dòng)態(tài)鏈接庫、應(yīng)用程序的接口掛鉤、遠(yuǎn)程線程注入等方式。遠(yuǎn)程線程注入技術(shù)是指在指定遠(yuǎn)程進(jìn)程中創(chuàng)建線程,通過注入到指定進(jìn)程的內(nèi)存地址空間。通過遠(yuǎn)程線程注入技術(shù)將所需的線程代碼注入的目標(biāo)進(jìn)程中運(yùn)行,不創(chuàng)建獨(dú)立的進(jìn)程,很難被發(fā)現(xiàn),但常規(guī)的遠(yuǎn)程線程注入技術(shù)難以避過安全檢測(cè)技術(shù)的檢測(cè)。遠(yuǎn)程線程注入被廣泛的運(yùn)用到電腦病毒傳播中,然而也由 于其不易被使用者刪除的特點(diǎn)可以協(xié)助管理人員安裝監(jiān)控、計(jì)費(fèi)等系統(tǒng)管理程序而不被使用者破壞,達(dá)到安全管理的目的。

發(fā)明內(nèi)容
針對(duì)以上的不足,本發(fā)明的目的是提出一種遠(yuǎn)程線程注入技術(shù)方法,實(shí)現(xiàn)在Windows系統(tǒng)下進(jìn)程的隱藏,將監(jiān)控程序編譯成動(dòng)態(tài)鏈接庫文件,采用遠(yuǎn)程線程注入技術(shù)注入到系統(tǒng)進(jìn)程運(yùn)行,能有效地提高監(jiān)控系統(tǒng)的安全性能。每一 DLL必須有一個(gè)人口點(diǎn),DlIMain函數(shù)是DLL模塊的默認(rèn)入口點(diǎn)。DllMain負(fù)責(zé)初始化和結(jié)束工作。DLLMain函數(shù)在將DLL模塊加載到進(jìn)程時(shí)、DLL模塊與進(jìn)程分離時(shí)被調(diào)用。Delphi語言中,DLL入口由DLLProc傳入。在DLL文件中編寫一個(gè)線程執(zhí)行體函數(shù)ThreadProc實(shí)現(xiàn)監(jiān)控的功能,比如監(jiān)控某個(gè)程序是否在運(yùn)行,如果沒有則重新啟動(dòng)這個(gè)程序。定時(shí)功能可調(diào)用API函數(shù)SetTimer實(shí)現(xiàn),比用組件精度高。在DLL注入到目標(biāo)進(jìn)程后,將監(jiān)控程序創(chuàng)建一個(gè)線程,啟動(dòng)過程如圖2所示。創(chuàng)建和結(jié)束線程分別用到CreateThread函數(shù)和TerminateThread函數(shù)。CreateThread 的函數(shù)定義
function CreateThread(
IpThreadAttributes: Pointer;dwStackSize: DWORD;IpStartAddress: TFNThreadStartRoutine;
IpParameter: Pointer;dwCreat ionFIags: DWORD;var IpThreadId: DWORD):THandle; stdcall;
其中IpStartAddress,IpParameter, IpThreadId 三個(gè)參數(shù)是必須的。IpStartAddress參數(shù)指向的是線程執(zhí)行體ThreadProc的開始地址;lpParameter
指針類型,線程的傳入?yún)?shù),給線程執(zhí)行體ThreadProc傳遞數(shù)據(jù);lpThreadId返回創(chuàng)建線
程ID,這是控制線程必須的。實(shí)現(xiàn)監(jiān)控功能的DLL文件的主要代碼如下
procedure ThreadProc(p : pointer); stdcall;
//線程執(zhí)行體,實(shí)現(xiàn)監(jiān)控功能begin
SetTimer(O, I, 10000,nil);
//設(shè)置定時(shí)器的時(shí)間間隔為10000毫秒 while GetMessage(Msg, O, O, O) do //從消息隊(duì)列得到消息 begin
if Msg. message- WM_TIMER thenIl WM_TIMER定時(shí)器消息try
if not FindProcess (’watch, exe’)then winexec (pchar (’ watch, exe’), SW_Show);
//此處為定時(shí)處理的內(nèi)容,功能是檢測(cè) //’watch, exe進(jìn)程是否存在,如果不存在啟動(dòng) except; end else begin
TranslateMessage(Msg);
//用于將virtul-key消息翻譯為字符消息DispatchMessage(Msg);■
//派送消息到窗口過程 end; end;

end;
procedure DlIMain(dwReason : DWORD);
//DLL入口程序var
dwThreadID : DWORD; begin
case dwReason ofDLL_PROCESS_ATTACH : //進(jìn)程被調(diào)用begin
hThreadHandle := CreateThread(nil, 0, ThreadProc, nil, 0,dwThreadID);·
//將ThreadProc創(chuàng)建一個(gè)線程 end;
DLL_PROCESS—DETACH : //進(jìn)程被停止 begin
SendMessage(hWnd, WM_THREADEXIT, 0, 0);
//發(fā)送線程結(jié)束消息
if (hThreadHandle <> 0) thenbegin
TerminateThread(hThreadHandle, 0);
//撤消該線程 end; end;
DLL_THREAD_ATTACH : //線程被調(diào)用Beginend;
DLL—THREAD—DETACH : //線程被停止beginend;end;end;begin
DLLProc := @DLLMain;//DLL 入口DLLMain(DLL_PR0CESS_ATTACH);
//調(diào)用 DLLMain,參數(shù)為 DLL—PROCESS—ATTACH

end.
具體實(shí)施例方式遠(yuǎn)程線程注入技術(shù)的主要步驟如下(I)調(diào)整權(quán)限,使程序可以訪問其他進(jìn)程的內(nèi)存空間(EnableDebugPriv)。(2)得到遠(yuǎn)程進(jìn)程的 HANDLE (OpenProcess)。(3)在遠(yuǎn)程進(jìn)程中為要注入的數(shù)據(jù)分配內(nèi)存(VirtualAllocEx)。(4)將注入DLL復(fù)制到本進(jìn)程,實(shí)現(xiàn)函數(shù)DLL裝載過程(MapInjectFile)。(5)把DLL資源復(fù)制到分配的內(nèi)存中(WriteProcessMemory)。
(6)用 CreateRemoteThread 啟動(dòng)遠(yuǎn)程的線程。
權(quán)利要求
1.一種遠(yuǎn)程線程注入技術(shù)方法遠(yuǎn)程線程注入是通過CreateRemoteThread函數(shù)建立一個(gè)遠(yuǎn)程線程,調(diào)用LoadLibrary函數(shù)來加載指定的DLL。
CreateRemoteThread 函數(shù)的方法如下function CreateReraoteThread( hProcess: THandle; //遠(yuǎn)程進(jìn)程的句柄 IpThreadAttributes: Pointer; //線程安全描述字, dwStackSize: DWORD; //線程找大小,以字節(jié)表示 IpStartAddress: TFNThreadStartRoutine; //一個(gè)TFNThreadStartRoutine類型的指針,指向在遠(yuǎn)程進(jìn)程中執(zhí)行的函數(shù)地址IpParameter: Pointer; //傳入?yún)?shù)的指針dwCreationFlags: DWORD; //創(chuàng)建線程的其它標(biāo)志 var IpThreadId: DWORD //線程身份標(biāo)志,如果為0,則不返回 ):THandle; 在Windows系統(tǒng)下,每個(gè)進(jìn)程都擁有自己的地址空間,各個(gè)進(jìn)程之間都是相互獨(dú)立的。需要在遠(yuǎn)程進(jìn)程的內(nèi)存空間里申請(qǐng)一塊內(nèi)存空間,寫入需要注入的DLL的路徑。需要用到的API函數(shù)有 (1)OpenProcess O :打開目標(biāo)進(jìn)程,得到目標(biāo)進(jìn)程的操作權(quán)限。
(2)VirtualAllocEx O :用于在目標(biāo)進(jìn)程內(nèi)存空間中申請(qǐng)內(nèi)存空間以寫入DLL的文件名。
(3)WriteProcessMemory O :往申請(qǐng)到的空間中寫入DLL的文件名
2.根據(jù)權(quán)利要求I的遠(yuǎn)程線程注入技術(shù)方法,其特征是每一線程DLL必須有一個(gè)人口點(diǎn),DllMain函數(shù)是DLL模塊的默認(rèn)入口點(diǎn)。DllMain負(fù)責(zé)初始化和結(jié)束工作。DLLMain函數(shù)在將DLL模塊加載到進(jìn)程時(shí)、DLL模塊與進(jìn)程分離時(shí)被調(diào)用。Delphi語言中,DLL入口由DLLProc 傳入。
全文摘要
一種遠(yuǎn)程線程注入技術(shù)方法監(jiān)控系統(tǒng)要求具有實(shí)時(shí)性和隱藏性,遠(yuǎn)程線程注入技術(shù)能實(shí)現(xiàn)在Windows系統(tǒng)下進(jìn)程的隱藏。將監(jiān)控程序編譯成動(dòng)態(tài)鏈接庫文件,采用遠(yuǎn)程線程注入技術(shù)注入到系統(tǒng)進(jìn)程運(yùn)行,能有效地提高監(jiān)控系統(tǒng)的安全性能。本方法分析了基于遠(yuǎn)程線程注入的監(jiān)控系統(tǒng)的關(guān)鍵技術(shù)和實(shí)現(xiàn)方法,通過設(shè)置定時(shí)器的方法解決了系統(tǒng)實(shí)時(shí)性需求,通過給出的遠(yuǎn)程線程注入技術(shù)解決了隱藏性需求。最后分析采用兩級(jí)監(jiān)控和應(yīng)對(duì)安全檢測(cè)技術(shù)來提高監(jiān)控系統(tǒng)的安全性。
文檔編號(hào)G06F9/445GK102841795SQ201110172279
公開日2012年12月26日 申請(qǐng)日期2011年6月24日 優(yōu)先權(quán)日2011年6月24日
發(fā)明者楊際榮 申請(qǐng)人:鎮(zhèn)江華揚(yáng)信息科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
贵溪市| 偃师市| 封丘县| 乐亭县| 正安县| 福州市| 盐亭县| 黄浦区| 通州市| 拜城县| 安远县| 开封县| 乐昌市| 蒲城县| 唐海县| 南木林县| 阿克陶县| 阿图什市| 叙永县| 和政县| 乌鲁木齐县| 陆川县| 临泉县| 博客| 茌平县| 精河县| 兴城市| 德昌县| 大同县| 高台县| 扬中市| 岳西县| 会昌县| 寿阳县| 公主岭市| 深州市| 中方县| 泗阳县| 翁源县| 镇安县| 邹平县|