转的,还不知道能用不http://community.csdn.net/Expert/topic/5645/5645084.xml?temp=.8446161

使用CreateRemoteThread和LoadLibrary技术的步骤如下:
1.  得到远程进程的HANDLE(使用OpenProcess)。
2.  在远程进程中为DLL文件名分配内存(VirtualAllocEx)。
3.  把DLL的文件名(全路径)写到分配的内存中(WriteProcessMemory)
4.  使用CreateRemoteThread和LoadLibrary把你的DLL映射近远程进程。
5.  等待远程线程结束(WaitForSingleObject),即等待LoadLibrary返回。也就是说当我们的DllMain(是以DLL_PROCESS_ATTACH为参数调用的)返回时远程线程也就立即结束了。
6.  取回远程线程的结束码(GetExitCodeThtread),即LoadLibrary的返回值――我们DLL加载后的基地址(HMODULE)。
7.  释放第2步分配的内存(VirtualFreeEx)。
8.  用CreateRemoteThread和FreeLibrary把DLL从远程进程中卸载。调用时传递第6步取得的HMODULE给FreeLibrary(通过CreateRemoteThread的lpParameter参数)。
9.  等待线程的结束(WaitSingleObject)。

10.采用C++/CLI编写:

C# 进程注入的代码// InjectDll.h
C# 进程注入的代码

C# 进程注入的代码#pragma once
C# 进程注入的代码
C# 进程注入的代码#include 
<windows.h>
C# 进程注入的代码
using namespace System;
C# 进程注入的代码

 


生成Dll,然后在C#项目中将它引用进来,最后编写:

C# 进程注入的代码public partial class Form1 : Form

相关文章: