NET実装注入コードの問題

1664 ワード

最近はNETで注入コードを実現したいと考えていますが、コードは基本的に問題ありませんが、注入されたDLLは実行できません.しかし、「DLL注入プロセス.exe」テストは実行可能で、憂鬱です.皆さん、見てください.
これは注入コードです.
public static bool Inject(int pid, string dllname)
{
try
{
int hProcess = -1,libFileRemote=-1;
hProcess = API.OpenProcess(API.PROCESS_ALL_ACCESS, false, pid);
if (hProcess <= 0)
return false;

int len=dllname.Length + 1;
libFileRemote = API.VirtualAllocEx(hProcess, 0,len , API.MEM_COMMIT, API.PAGE_READWRITE);

if(libFileRemote<=0)
return false;

int written = 0;
int result = API.WriteProcessMemory(hProcess, libFileRemote, dllname, len, ref written);
if (result <= 0)
return false;



int Kernel32=API.GetModuleHandle("kernel32");
if(Kernel32<=0)
return false;

int ThreadRtn = API.GetProcAddress(Kernel32,"LoadLibraryA");
if(ThreadRtn<=0)
return false;

int threadid=0;
int hRemoteThread = API.CreateRemoteThread(hProcess, 0, 0, ThreadRtn, libFileRemote, 0, ref threadid);

API.WaitForSingleObject(hRemoteThread, API.INFINITE);
API.CloseHandle(hRemoteThread);
API.VirtualFreeEx(hProcess, libFileRemote, 0, API.MEM_RELEASE);
return true;

}
catch (System.Exception ex)
{
throw ex;
}

}

注入C#コードとテストDLLダウンロード :
http://www.bmpj.net/forum-viewthread-tid-312-fromuid-19.html