Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-01-2017
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Reglas básicas:

1. No puedes inyectar código 32 bits en un proceso de 64bits
2. No puedes inyectar código 64bits en un proceso de 32bits.
3. Si puedes inyectar 32->32 y 64->64
4. Para inyectar en 32bits necesitas un inyector compilado a 32bits
5. Para inyectar 64bits necesitas un inyector compilado a 64bits.
6. Las dos últimas reglas pueden solucionarse teóricamente con técnicas complejas.

Saludos.
Responder Con Cita
  #2  
Antiguo 10-01-2017
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código Delphi [-]
function InjectCRT(Pid: integer; dll: PCHAR): BOOL;
var
   hThread:  THANDLE;
   ExitCode: DWORD;
   hLib:     Pointer;//LPTHREAD_START_ROUTINE;
   hProc:    THANDLE;
   Buffer:   Pointer;
begin
   Result:= false;
   if(dll^ = #0) then exit;
 
   hThread:= 0;
   ExitCode:= 0;
   hProc:= OpenProcess(PROCESS_ALL_ACCESS, false, Pid);
   if hProc<>0 then
   begin
     Buffer:= VirtualAllocEx(hProc, nil, lstrlen(dll)+1, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE);
     if Buffer<>nil then
     begin
       if WriteProcessMemory(hProc, Buffer, dll, lstrlen(dll)+1, PDWORD(0)^) then
       begin
         hLib:= GetProcAddress(GetModuleHandle('Kernel32.dll'), 'LoadLibraryA');
         if hLib <> nil then
         begin
           hThread:= CreateRemoteThread(hProc, nil, 0, hLib, Buffer, 0, PDWORD(0)^);
           if hThread <> 0 then
           begin
             // libero la memoria localizada...
             WaitForSingleObject(hThread, INFINITE);  // Espero a que se cree y termine el Thread
             GetExitCodeThread(hThread, ExitCode);    // Extraigo el código de terminación del Thread
             CloseHandle(hThread);                    // Cierro el Handle hThread
           end;
         end;
       end;
       VirtualFreeEx(hProc, Buffer, 0, MEM_RELEASE);  // Libero memoria
     end;
     CloseHandle(hProc);                       // Cierro el Handle hProc
   end;
   Result:= (ExitCode <> 0);
end;


Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sobre SetWindowsHookEx dec Trucos 0 01-07-2006 00:31:30


La franja horaria es GMT +2. Ahora son las 08:36:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi