向进程注入自己的代码

时间:2012-08-06 11:46:32
【文件属性】:

文件名称:向进程注入自己的代码

文件大小:52KB

文件格式:RAR

更新时间:2012-08-06 11:46:32

注入

向进程注入自己的dll 带有测试dll 路径和要注入的程序可以自己改 hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD| //允许远程创建线程 PROCESS_VM_OPERATION | //VM操作 PROCESS_VM_WRITE , //允许写 FALSE,dwProcessID); if(!hRemoteProcess) AfxMessageBox(L"无法打开目标进程"); // KillTimer(m_ntime); //计算DLL路径需要多大内存 int cb=(1+lstrlenW(pszLibFile))*sizeof(WCHAR); //使用VirtualAllocEx函数在远程进程的内存地址空间分配DLL文件名缓冲区 pszLibFileRemote=(PWSTR)VirtualAllocEx(hRemoteProcess,NULL,cb,MEM_COMMIT,PAGE_READWRITE); if(pszLibFileRemote==NULL) { AfxMessageBox(L"建立内存失败"); CloseHandle(hRemoteProcess); return; } //使用WriteProcessMemory函数将DLL的路径名复制到远程进程的内存空间 BOOL iReturnCode=WriteProcessMemory (hRemoteProcess,pszLibFileRemote,(PVOID)pszLibFile,cb,NULL); if(!iReturnCode) { AfxMessageBox(L"写入错误"); VirtualFreeEx(hRemoteProcess,NULL,0,MEM_RELEASE); CloseHandle(hRemoteThread); CloseHandle(hRemoteProcess); return; } //计算loadlibraryW入口地址 HMODULE hModule=LoadLibrary(L"C:\\WINDOWS\\system32\\kernel32"); PTHREAD_START_ROUTINE pfnStartAddr=( PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("Kernel32")),"LoadLibraryW"); hRemoteThread=CreateRemoteThread(hRemoteProcess,NULL,0,pfnStartAddr,pszLibFileRemote,0,NULL); if(hRemoteThread==NULL) { //等待线程结束 WaitForSingleObject(hRemoteThread,INFINITE); DWORD RetV; if(GetExitCodeThread(hRemoteThread,&RetV)) CloseHandle(hRemoteThread);


【文件预览】:
LoadDll
----LoadDll.sln(887B)
----LoadDll.suo(26KB)
----Debug()
----Release()
----LoadDll()
--------resource.h(817B)
--------stdafx.h(2KB)
--------targetver.h(1KB)
--------LoadDllDlg.h(1KB)
--------testdll.dll(8KB)
--------LoadDll.aps(58KB)
--------Debug()
--------stdafx.cpp(207B)
--------ReadMe.txt(4KB)
--------LoadDllDlg.cpp(10KB)
--------LoadDll.cpp(3KB)
--------LoadDll.h(570B)
--------Release()
--------res()
--------LoadDll.vcproj.YZ.yz.user(1KB)
--------LoadDll.vcproj(5KB)
--------LoadDll.rc(6KB)

网友评论