Вопрос к кодерам Delphi. пытаюсь захучить API MoveFileExW для запрета удаления файла. Написал DLL:
И инжектю эту dll-ку в explorer.exe - результата никакого. С инжектом всё в порядке, проверено на 100%. Пробовал хучить другие апи типа DeleteFile и инжектить в своё приложение которое как раз и использует DeleteFile но всё так же
Код:
library my_dll;
uses
windows, dialogs, SysUtils;
type
OC=packed record
frst:dword;
sec:word;
end;
fj= packed record
pusho:byte;
pushar:pointer;
reto:byte;
end;
var
jmpmw,jmpma:fj;
ocmw,ocma:oc;
mwadr,maadr:pointer;
var TrueMoveFileEx: function(lpExistingFileName, lpNewFileName: PWideChar; dwFlags: DWORD): BOOL; stdcall;
function NewMoveFileExW(lpExistingFileName, lpNewFileName: PWideChar; dwFlags: DWORD): BOOL; stdcall;
var
filez :string;
begin
filez := lpExistingFileName;
if pos('log.txt',filez)<>0 then lpExistingFileName:='';
result:= TrueMoveFileEx(lpExistingFileName, lpNewFileName, dwFlags);
end;
procedure SetHook;
var
hwnd: dword;
Byte: dword;
mwadr: Pointer;
begin
hwnd := GetModuleHandle('kernel32.dll');
mwadr := GetProcAddress(hwnd, 'MoveFileExW');
ReadProcessMemory(INVALID_HANDLE_VALUE, mwadr, @ocmw, SizeOf(OC), Byte);
jmpmw.pusho := $68;
jmpmw.PushAr := @NewMoveFileExW;
jmpmw.RetO := $C3;
WriteProcessMemory(INVALID_HANDLE_VALUE, mwadr, @jmpmw, SizeOf(fj), Byte);
end;
begin
SetHook;
end.
И инжектю эту dll-ку в explorer.exe - результата никакого. С инжектом всё в порядке, проверено на 100%. Пробовал хучить другие апи типа DeleteFile и инжектить в своё приложение которое как раз и использует DeleteFile но всё так же