View Single Post
Re: CreateRemoteThread - Strange behaviour
Old
  (#2)
koraX
Member
 
koraX's Avatar
 
Status: Offline
Posts: 145
Join Date: Jan 2004
Location: Slovak Republic
Default Re: CreateRemoteThread - Strange behaviour - 19-09-2004

a 'bit' more readable :

PHP Code:
HMODULE RemoteLoadModuleHANDLE hProcessLPSTR lpModulepath )
{
    
HANDLE hThread INVALID_HANDLE_VALUE;
    
DWORD dwLoadLibraryA 0;
    
LPVOID lpMemory NULL;
    
DWORD dwResult 0;
    
DWORD dwBytes 0;
    
int nPathlen 0;

    
nPathlen strlenlpModulepath );

    
lpMemory VirtualAllocExhProcess0nPathlenMEM_COMMITPAGE_EXECUTE_READWRITE );
    
dwLoadLibraryA = ( DWORD GetProcAddressGetModuleHandle"kernel32.dll" ), "LoadLibraryA" );

    if ( 
lpMemory ) {
        if ( 
WriteProcessMemoryhProcesslpMemorylpModulepathnPathlen, &dwBytes ) ) {
            
hThread CreateRemoteThreadhProcessNULL0, ( LPTHREAD_START_ROUTINE dwLoadLibraryAlpMemory0NULL );

            if ( 
hThread != INVALID_HANDLE_VALUE ) {
                
WaitForSingleObjecthThreadINFINITE );
                
GetExitCodeThreadhThread, &dwResult );

                
CloseHandlehThread );
            }
        }

        
VirtualFreeExhProcesslpMemorynPathlenMEM_RELEASE );
    }

    return ( 
HMODULE dwResult;
}



BOOL CreateWithInjectLPCTSTR lpApplicationpathLPCTSTR lpCurrentdirectoryLPTSTR lpCommandlineLPCTSTR lpInjectmodulepathHMODULEpRemoteModule ) {
    
PROCESS_INFORMATION procInfo;
    
STARTUPINFO startupInfo;
    
HMODULE hRemote NULL;
    
DWORD dwEntrypoint 0;
    
BOOL bResult FALSE;

    
ZeroMemory( &procInfosizeofPROCESS_INFORMATION ) );
    
ZeroMemory( &startupInfosizeofSTARTUPINFO ) );

    if ( 
CreateProcesslpApplicationpathlpCommandlineNULLNULLTRUECREATE_SUSPENDEDNULLlpCurrentdirectory, &startupInfo, &procInfo ) ) {
        
hRemote RemoteLoadModuleprocInfo.hProcesslpInjectmodulepath );

        if ( 
hRemote != NULL )
            
bResult TRUE;

        
// TODO:
        // The function exists, free the remote ya lazy bastard :)

        
ResumeThreadprocInfo.hThread );
        
WaitForSingleObjectprocInfo.hThreadINFINITE );

        
CloseHandleprocInfo.hProcess );
        
CloseHandleprocInfo.hThread );
    }

    return 
bResult;



kXBot
koraX's utils
- see my homepage for other projects (OpenGL CSG Editor, FAT16 Sim, NNetwork Sim, ...)

Last edited by koraX; 19-09-2004 at 22:29..
  
Reply With Quote