Autor Beitrag
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Sa 24.09.05 16:39 
Hi, ich habe versucht einen Hook auf "CompareStringA" zu setzen leider bekomme ich immer einen "Acces violation" Fehler wenn ich die gehookte funktion aufrufe!
vll findet ihr ja den Fehler, hier der Code:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
library Hook;

uses
  windows,
  uallhook;

var
old_CompareStringA:  function(Locale:LCID; dwCmpFlags:DWORD; lpString1:PAnsiChar; cchCount1:Integer; lpString2:PAnsiChar; cchCount2:Integer): Integer; stdcall;
next_CompareStringA: function(Locale:LCID; dwCmpFlags:DWORD; lpString1:PAnsiChar; cchCount1:Integer; lpString2:PAnsiChar; cchCount2:Integer): Integer; stdcall;

function my_CompareStringA(Locale:LCID; dwCmpFlags:DWORD; lpString1:PAnsiChar; cchCount1:Integer; lpString2:PAnsiChar; cchCount2:Integer): Integer;
begin
   MessageBox(0, PChar(lpString1+' with '+lpString2), 'Compare'$00000040);
   Result := next_CompareStringA(Locale, dwCmpFlags, lpString1, cchCount1 ,lpString2, cchCount2);
end;

procedure injectmain;
var p:pointer;
begin
  p := GetProcAddress(GetModuleHandle('kernel32.dll'),'CompareStringA');
  if p <> nil then begin
    @old_CompareStringA := p;
    uallHook.HookCode(@old_CompareStringA,@my_CompareStringA,@next_CompareStringA);
  end;
end;

procedure uninjectmain;
begin
  uallHook.UnhookCode(@next_CompareStringA);
end;

procedure dllmain(dwReason: integer);
begin
  case dwreason of
    DLL_PROCESS_ATTACH:
      injectmain;
    DLL_PROCESS_DETACH:
      uninjectmain;
  end;
end;

begin
  DLLProc := @DLLMain;
  DLLMain(1);
end.


Zuletzt bearbeitet von SAiBOT am So 25.09.05 10:55, insgesamt 2-mal bearbeitet
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Sa 24.09.05 16:51 
hinter dem my_CompareStringA fehlt am schluss nen

stdcall;

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
SAiBOT Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Sa 24.09.05 16:53 
X.x Danke, jetzt gehts!