| Autor |
Beitrag |
SAiBOT
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: So 25.12.05 15:10
bin dabei einen hook zu coden der dem benutzer meldet wenn eine exe versucht einen Registry eintrag zu machen!
Die MessageBox zeigt er noch an! aber dann, unabhängig von der entscheidung (yes | no), stürtzt das Programm ab!
Ich denke wieder irgend sonn dummer fehler der sich eingeschlichen hat!
plz help
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: 46: 47: 48: 49: 50: 51: 52: 53: 54:
| library hook;
uses windows, uallhook, dialogs, Controls;
var
old_RegCreateKeyExA: function(hKey: HKEY; lpSubKey: LPCTSTR; Reserved: DWORD; lpClass: LPTSTR; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: SECURITY_ATTRIBUTES; phkResult: PHKEY; lpdwDisposition: LPDWORD): Integer; stdcall; next_RegCreateKeyExA: function(hKey: HKEY; lpSubKey: LPCTSTR; Reserved: DWORD; lpClass: LPTSTR; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: SECURITY_ATTRIBUTES; phkResult: PHKEY; lpdwDisposition: LPDWORD): Integer; stdcall;
function my_RegCreateKeyExA(hKey: HKEY; lpSubKey: LPCTSTR; Reserved: DWORD; lpClass: LPTSTR; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: SECURITY_ATTRIBUTES; phkResult: PHKEY; lpdwDisposition: LPDWORD): Integer; stdcall; begin if MessageDlg('[RegCreateKeyExA] '+ParamStr(0)+' versucht einen Eintrag in die Registry zu machen, soll dieser Eintrag erlaubt werden?',mtConfirmation, [mbYes, mbNo], 0) = mryes then begin Result := next_RegCreateKeyExA(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition); end else begin Result := 0; end; end;
procedure injectmain; var p4:pointer; begin p4 := GetProcAddress(GetModuleHandle('advapi32.dll'),'RegCreateKeyExA'); if p4 <> nil then begin @old_RegCreateKeyExA := p4; uallHook.HookCode(@old_RegCreateKeyExA,@my_RegCreateKeyExA,@next_RegCreateKeyExA); end; end;
procedure uninjectmain; begin uallHook.UnhookCode(@next_RegCreateKeyExA); 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. |
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: So 25.12.05 15:14
hasu du mal versuch nur den hook zu installieren ohne in der gehookten funktin irgendwas anderes zu machen ausser die original funktion wieder aufzurufen?
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: So 25.12.05 15:17
uall@ogc hat folgendes geschrieben: | | hasu du mal versuch nur den hook zu installieren ohne in der gehookten funktin irgendwas anderes zu machen ausser die original funktion wieder aufzurufen? |
huch O.o
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: So 25.12.05 21:52
dann versuch mal anstatt der uallHook unit die uallTableHook unit
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: So 25.12.05 22:00
zusätzlich sind ide richtigen parameter:
Delphi-Quelltext 1: 2: 3: 4:
| function RegCreateKeyExA(hKey: HKEY; lpSubKey: PAnsiChar; Reserved: DWORD; lpClass: PAnsiChar; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: PSecurityAttributes; var phkResult: HKEY; lpdwDisposition: PDWORD): Longint; stdcall; |
solltest besser das nehmen. hab mit jetzt nich das ansgesaucht wa sdu genimmen hast. und MSGDLG darf die funktion die du hookst NICHT benutzen.
ich kanns mir frühstens morgen anschaun
Moderiert von Christian S.: Delphi-Tags hinzugefügt.
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: So 25.12.05 23:01
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: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66:
| library hook;
uses windows, uallhook, dialogs, Controls;
var old_RegCreateKeyExA: function (hKey: HKEY; lpSubKey: PAnsiChar; Reserved: DWORD; lpClass: PAnsiChar; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: PSecurityAttributes; var phkResult: HKEY; lpdwDisposition: PDWORD): Longint; stdcall; next_RegCreateKeyExA: function (hKey: HKEY; lpSubKey: PAnsiChar; Reserved: DWORD; lpClass: PAnsiChar; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: PSecurityAttributes; var phkResult: HKEY; lpdwDisposition: PDWORD): Longint; stdcall; function my_RegCreateKeyExA(hKey: HKEY; lpSubKey: PAnsiChar; Reserved: DWORD; lpClass: PAnsiChar; dwOptions: DWORD; samDesired: REGSAM; lpSecurityAttributes: PSecurityAttributes; var phkResult: HKEY; lpdwDisposition: PDWORD): Longint; stdcall; begin if MessageDlg('[RegCreateKeyA] '+ParamStr(0)+' versucht einen Eintrag in die Registry zu machen, soll dieser Eintrag erlaubt werden?',mtConfirmation, [mbYes, mbNo], 0) = mryes then begin Result := next_RegCreateKeyExA(hKey, lpSubKey, Reserved, lpClass, dwOptions, samDesired, lpSecurityAttributes, phkResult, lpdwDisposition); end else begin Result := 0; end; end;
procedure injectmain; var p4:pointer; begin
p4 := GetProcAddress(GetModuleHandle('advapi32.dll'),'RegCreateKeyExA'); if p4 <> nil then begin @old_RegCreateKeyExA := p4; uallHook.HookCode(@old_RegCreateKeyExA,@my_RegCreateKeyExA,@next_RegCreateKeyExA); end;
end;
procedure uninjectmain; begin uallHook.UnhookCode(@next_RegCreateKeyExA); 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. |
so gehts, vielen Dank  !
|
|
|