AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi HookHandle, nCode, wParam, lParam bei afxCodeHook
Thema durchsuchen
Ansicht
Themen-Optionen

HookHandle, nCode, wParam, lParam bei afxCodeHook

Ein Thema von MCQ · begonnen am 2. Nov 2005 · letzter Beitrag vom 2. Nov 2005
Antwort Antwort
MCQ

Registriert seit: 14. Jan 2004
Ort: Dessau
80 Beiträge
 
#1

Re: HookHandle, nCode, wParam, lParam bei afxCodeHook

  Alt 2. Nov 2005, 13:35
Mein Problem ist, das jedes Tutorial und jedes Beispiel zum Thema API-Hooking die API MessageBoxA hookt. Dabei wird eine Funktion genutzt die die selben Parameter hat wie die Orgnimalfunktion. Darin wird die Orginalfunkion mit veränderten Werten wieder aufgerufen und das Ergebnis an den Prozess weitergeleitet. Das geht hier aber so nicht. Prozeduren übergeben normalerweise keine Werte. GetLocalTime ist aber eine Procedure.
Die API CallNextHookEx kann ich so auch nicht nutzen, da mir die Parameter dafür fehlen.

Ob ich nun afxCodeHook.pas nutze oder deine Collection. Das Problem bleibt nach wie for. Egal ob ich 1 API hooke oder 2. Sobald ich die Orginal-Prozedur aufrufe kommt es zum Crash


Zitat:
Zugriffsverletzung bei Adresse 0042E3F4 in Modul "test.exe". Lesen von Adresse 2D0FC30C.
z.Z. Sieht der Code wie folgt aus:

Delphi-Quellcode:
library LogTime_DLL;


uses
  SysUtils,
  Dateutils,
  windows,
  UallHook;

{$R *.res}
var
  GetRealTime,GetNextTime:procedure(orgdate:_SYSTEMTIME);stdcall;



procedure LogTime(orgdate:_SYSTEMTIME)stdcall;
begin
  // Hier werden sämtliche Zeitanfragen protokoliert
  MessageBox(0,'Das aktuelle Datum wird abgefragt.','LogTime',MB_ICONINFORMATION);
  {
    Hier besteht mein Problem. Die Test-Message wurde zwar ausgegeben, allerdings
    gibt die Testanwendung als Zeit eine 0 zurück. Es fehlt also die übergabe der Zeit.
    Doch wie kann ich das bewerkstelligen ?
  }

  GetNextTime(orgdate); // <-- solange diese Zeile im Code steht gibt es eine Zugriffsverletzung
end;

Procedure SetHook();
begin
  @GetRealTime:=GetProcAddress(GetModuleHandle('kernel32.dll'),'GetLocalTime');
  uAllHook.HookCode(@GetRealTime,@LogTime,@GetNextTime);
end;


begin
  SetHook();
end.
Programmiert nach dem Beispiel uallCollection.zip\examples\CodeHook\codehook.dpr

Tut mir leid wenn ich mich nen bisschen blöd anstelle, aber das ist mein erster API-Hook ... abgesehen vom MessageBox-Hook.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz