| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: zum Hooking im Forum Code Kitchen, in der Kategorie Software Home; Alos, ich hab mir das tut mal durchgelesen udn ausprobiert, und da is mir ne idee gekommen. also man kann ...
![]() |
| | #1 (permalink) |
| Registriert seit: 10.01.08 ![]() | Alos, ich hab mir das tut mal durchgelesen udn ausprobiert, und da is mir ne idee gekommen. also man kann ja anscheinend fremde prozeduren überlagern so das die eigenen aufgerufen werden. aber ist es dann auch wieder möglich aus der überlagerten die original.. aufzurufen? also z.B. das prog. startet und geht halt zur prozedur, kommt in usere überlagerte, wir verändern parameter, und rufen die alte mit unseren parametern auf. ist das möglich? |
| | |
| | #2 (permalink) |
| Registriert seit: 22.04.08 ![]() | Ich vermute, dass du da einfach dann eine Fallunterscheidung machen kannst, um die originale Prozedur/Funktion dann aufzurufen, wenn als Parameter xyz übergeben wurde. Aber da ich mich damit nicht auskenne, kann ich dazu nicht mehr sagen. |
| | |
| HaBOT | |
| |
| | #3 (permalink) |
| Registriert seit: 13.01.08 ![]() | durchaus möglich, sonst würde Hooking ja wenig Sinn machen wenn die original Funktion nicht mehr zur Verfügung stände Ich kenne mich nur mit IAT Patching aus, und falls man den OriginalFunktionspointer speichert, kann man natürlich die originalFunktion wieder aufrufen. Falls du Interesse hast kann ich hier mal nen Delphi SourceCode zu dem THhema posten. |
| | |
| | #4 (permalink) |
| Themenstarter Registriert seit: 10.01.08 ![]() | das wäre nett^^ delphi is ja auch nicht viel anders als c++ :3 ( das benutze ich halt lieber ) |
| | |
| | #5 (permalink) |
| Registriert seit: 13.01.08 ![]() | Also hier mal ne Funktion zum Hooken einer Funktion: Code: procedure PatchIAT(strMod : Pchar; Alt, Neu : Pointer);
var
pImportDir : pImage_Import_Descriptor;
size : CardinaL;
Base : Cardinal;
pThunk : PDWORD;
bw : Cardinal;
begin
Base := GetModuleHandle(0);
pImportDir := ImageDirectoryEntryToData(Pointer(Base),True,IMAGE_DIRECTORY_ENTRY_IMPORT,size);
while pImportDIr^.Name <> 0 Do begin
If (lstrcmpiA(Pchar(pImportDir^.Name+ Base),strMod) = 0) then begin
pThunk := PDWORD(Base + pImportDir^.FirstThunk);
While pThunk^ <> 0 Do begin
if DWORD(Alt) = pthunk^ Then begin
//pthunk^ := Cardinal(Neu);
VirtualProtectEx(GetCurrentProcess,pthunk,4,PAGE_EXECUTE_READWRITE,bw);
WriteProcessMemory(GetCurrentProcess, pthunk, @Neu, sizeof(Neu), bw);
end;
Inc(pThunk);
end;
end;
Inc(PImportDir);
end;
end; Code: procedure TForm1.Button1Click(Sender: TObject);
begin
pOldMessageBoxA := GetProcAddress(GetModuleHAndle('user32.dll'),'MessageBoxA'); //alte Adresse speichern
PatchIat('user32.dll',GetProcAddress(GetModuleHAndle('user32.dll'),'MessageBoxA'),@NewMessageBoxA);
end; Code: function newMessageBoxA(hWnd: HWND; lpText, lpCaption: PAnsiChar; uType: UINT): Integer; stdcall; var myMesBoxA : function(hWnd: Cardinal; lpText, lpCaption: PAnsiChar; uType: UINT): Integer;stdcall; begin If lpText = 'DD2' Then begin myMesBoxA := pOldMessageBoxA; myMEsBoxA(hwnd,lptext,lpCaption,uType); end else begin Form1.Button1.Caption := 'keine MSGBOX!'; end; end; |
| | |
![]() |
| | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Inline Hooking | Schurke | (In)security allgemein | 5 | 03.05.09 14:44 |
| Dll Hooking über Api Hook | Schurke | Code Kitchen | 5 | 11.03.09 17:38 |
| [HowTo] Api-Hooking -- Interesse? | Xalon | (In)security allgemein | 44 | 14.01.08 19:30 |
| Artikelsuche Social engineering, security, dll hooking | Verucca | (In)security allgemein | 5 | 25.09.07 14:04 |