Ver Mensaje Individual
  #3  
Antiguo 05-08-2013
Jais Jais is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 12
Reputación: 0
Jais Va por buen camino
Hola escafandra

Gracias por tu respuesta. La DLL que quiero inyectar es esta:

Código:
library Sumar;

{$APPTYPE CONSOLE}

uses
  SysUtils,Windows;

Var
  i: Integer;
  Cuenta: String;

begin
  { TODO -oUser -cConsole Main : Insert code here }
  Cuenta := '';
  For i:=0 To 10 Do
    Begin
      Cuenta := Cuenta + IntToStr(i);
    End;

  MessageBox(0,PAnsiChar(Cuenta),'Cuenta',64);
end.
Llevo tiempo leyendo tutoriales, tanto los que mencionas como otros, pero no tengo muy claro el funcionamiento.

Ahora mismo estoy trabajando con este codigo, que me funciona en Windows XP:

Código:
procedure InjectDll(PID: dword;  DLL: pChar);
var
  BytesWritten, hProcess, hThread, TID: Cardinal;
  Parameters: pointer;
  pThreadStartRoutine: Pointer;
begin
  // Abrimos el proceso
  hProcess := OpenProcess(PROCESS_ALL_ACCESS,  False,  PID);
  // Creamos espacio en el proceso
  Parameters := VirtualAllocEx( hProcess, nil, Length(DLL)+1, MEM_COMMIT or MEM_RESERVE, PAGE_READWRITE);
  // Escribimos en el proceso la ruta de nuestra DLL
  WriteProcessMemory(hProcess,Parameters,Pointer(DLL  ),Length(DLL)+1,BytesWritten);
  // Obtenemos la direccion de LoadLibrary con GetProcAddress
  pThreadStartRoutine := GetProcAddress(GetModuleHandle('KERNEL32.DLL'), 'LoadLibraryA');
  // Creamos un Thread en el proceso remoto que ejecute nuestra dll
  hThread := CreateRemoteThread(hProcess,  nil,  0,  pThreadStartRoutine,  Parameters,  0,  TID);
  // Cerramos el hProcess abierto
  CloseHandle(hProcess);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  InjectDll(Aqui pongo el PID del notepad o de la calculadora,PAnsiChar('C:\Sumar.dll'));
end;
He probado este codigo tanto con el PID de un notepad y con el de la calculadora y con los dos me ha funcionado.

Tengo unas dudas, ¿porque obtenemos la dirección de LoadLibrary?
He leido el algun tutorial, pero no se porque motivo es, que este codigo no funciona en Sistemas Operativos de 64 bits. ¿Por que razon no funciona? Yo no le podido probar en sistemas operativos de 64 bits porque no tengo.

Muchisimas gracias de antemano.

Saludos
Responder Con Cita