Cita:
Empezado por dec
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.