Ver Mensaje Individual
  #8  
Antiguo 19-11-2016
Reasen Reasen is offline
Miembro
NULL
 
Registrado: dic 2015
Ubicación: Barcelona
Posts: 140
Reputación: 9
Reasen Va por buen camino
Cita:
Empezado por dec Ver Mensaje
No sabía yo de esa restricción de editar un post luego de 30 minutos... de todas formas puedes añadir más posts. Y, si realmente quieres editar el primer post, por favor, añade un nuevo post a este hilo con lo que quisieras que estuviese en primer lugar... y yo mismo lo pondré ahí.
Quería añadir un ejemplo para evitar inyecciones de DLL a una aplicación Delphi con un sencillo hook y sin usar condiciones.

Me vendría de perlas tener el botón de editar solamente en este post principal...

Código Delphi [-]
program Project2;


{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows;

procedure hook(target, newfunc: pointer);
var
  jmpto: dword;
  OldProtect: Cardinal; 
begin
  jmpto := dword(newfunc) - dword(target) - 5;
  VirtualProtect(target, 5, PAGE_EXECUTE_READWRITE, @OldProtect);
  pbyte(target)^ := $e9;
  pdword(dword(target) + 1)^ := jmpto;
end;

procedure myLdrLoadDll(PathToFile: PAnsiChar; Flags: variant; ModuleFileName: PAnsiChar; var ModuleHandle: THandle);
begin
  MessageBox(0, 'DLL Detectada!!', 'Nope!', MB_OK);
  ModuleHandle := 0;
  halt;
end;

procedure Maina;
begin
  Hook(GetProcAddress(GetModuleHandle('ntdll.dll'), 'LdrLoadDll'), @myLdrLoadDll);
end;

begin
  Maina;
  readln;
end.

Última edición por Reasen fecha: 19-11-2016 a las 19:29:57.
Responder Con Cita