Delphi API挂钩

时间:2015-01-18 05:19:09

标签: api delphi hook

    var
  OurAddress: DWORD;
  funcMem: array[1..7] of Integer;
  orgProcAddress: Pointer;
  oldProtection: Pointer;
begin
  funcMem[1] := $b8;
  funcMem[2] := OurAddress + $FF;
  funcMem[3] := (OurAddress shr 8) + $FF;
  funcMem[4] := (ourAddress shr 16) + $FF;
  funcMem[5] := (OurAddress shr 24) + $FF;

  funcMem[6] := $FF;
  funcMem[7] := $E0;

  orgProcAddress := GetProcAddress(GetModuleHandle('user32.dll'), 'MessageBoxA');

  VirtualProtect(orgProcAddress, 1024, PAGE_EXECUTE_READWRITE, oldProtection);
  Move(funcMem, orgProcAddress, 7);
  VirtualProtect(orgProcAddress, 1024, 0, oldProtection);

我正在尝试挂钩MessageBoxA。 funcMem应代表:mov eax,OurAddress jmp eax。

当我在调用挂钩例程后调用MessageBoxA但是我仍然得到相同的输出并且没有任何改变(与拆解时完全相同)。

0 个答案:

没有答案