Code:
DWORD ThreadId;
HANDLE hExp = GetProcessHandle("explorer.exe",PROCESS_ALL_ACCESS);
std::string DllPath = "C:\\DEBUG_DLL.DLL";
/*
LPVOID WINAPI VirtualAllocEx(
__in HANDLE hProcess,
__in_opt LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD flAllocationType,
__in DWORD flProtect
);
*/
SIZE_T WB;
unsigned BaseAddr = (unsigned)VirtualAllocEx( hExp, NULL, DllPath.length() + 50, MEM_COMMIT, PAGE_READWRITE );
int BufferLen = DllPath.length() + 10;
char * Buffer = new char[BufferLen];
std::fill(Buffer,Buffer+BufferLen,0);
std::copy(DllPath.begin(),DllPath.end(),Buffer);
if ( !WriteProcessMemory( hExp, (LPVOID)BaseAddr, Buffer, BufferLen, &WB ) )
MessageBox(NULL,"Failed!","OMG",MB_OK);
//LPTHREAD_START_ROUTINE Pointer = (LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("KERNEL32.DLL"),"LoadLibraryA");
if ( !CreateRemoteThread( hExp,
NULL,
0,
(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("KERNEL32.DLL"),"LoadLibraryA"),
(LPVOID)BaseAddr,
0,
&ThreadId ) )
MessageBox(NULL,"Failed!","OMG",MB_OK);
CloseHandle(hExp);
das ist derzeitig mein code, mein konzept.
-> Den parameter für load libary in den externen prozess schreiben
-> Die funktion mit der adresse von load libary und der start adresse des strings aufrufen und fertig
o.o...
nur leider funzt das ganze nicht so ^^
überprüft hab ich ->
allokierung im externen prozess - geht
schreiben des strings - geht
erzeugen des neuen thread - ???
edit:
DLL name hat nicht gestimmt, naja wenigstens zeigts ne schöne methode :|