![]() |
MsgBox Injection
Hallo,
ich versuche einen MessageBox Code in eine fremde Anwendung zu injizieren. Leider erscheint einfach keine MessageBox. Der Code ansich scheint aber zu funktionieren..
Delphi-Quellcode:
Weiß jemand, wo der Fehler liegt?
function InjectMsgbox(dwTargetProc: Cardinal; lpMessage, lpTitle: PChar; mbIcon: Cardinal):LongBool;
type PRemMsg = ^TRemMsg; TRemMsg = packed record bPushOp1: Byte; dwHandleAddr: DWord; bPushOp2: Byte; dwCaptionAddr: DWord; bPushOp3: Byte; dwTitleAddr: DWord; bPushOp4: Byte; dwIconAddr: DWord; bCallOp: Byte; dwMBAAddr: DWord; bRetn: Byte; dwHandle: HWND; lpCaption: array[0..250-1] of Char; lpTitle: array[0..250-1] of Char; bIcon: DWord; end; var gRemMsg: TRemMsg; hProc: Cardinal; pAlloc: Pointer; dwBytesWritten: Cardinal; remThreadID: Cardinal; begin result := false; SetLastError(ERROR_SUCCESS); hProc := OpenProcess(PROCESS_ALL_ACCESS, not true, dwTargetProc); if hProc <> 0 then begin pAlloc := VirtualAllocEx(hProc, nil, sizeof(TRemMsg), MEM_RESERVE or MEM_COMMIT, PAGE_EXECUTE_READWRITE); if pAlloc <> nil then begin gRemMsg.bPushOp1 := $68; gRemMsg.dwHandleAddr := Cardinal(pAlloc) + 26; gRemMsg.bPushOp2 := $68; gRemMsg.dwCaptionAddr := Cardinal(pAlloc) + 30; gRemMsg.bPushOp3 := $68; gRemMsg.dwTitleAddr := Cardinal(pAlloc) + 280; gRemMsg.bPushOp4 := $68; gRemMsg.dwIconAddr := Cardinal(pAlloc) + 530; gRemMsg.bCallOp := $E8; gRemMsg.dwMBAAddr := Cardinal(GetProcAddress(GetModuleHandle('user32.dll'), 'MessageBoxA')) - Cardinal(pAlloc) - 25; gRemMsg.bRetn := $C2; gRemMsg.dwHandle := 0; lstrcpy(gRemMsg.lpCaption, lpMessage); lstrcpy(gRemMsg.lpTitle, lpTitle); gRemMsg.bIcon := mbIcon; if WriteProcessMemory(hProc, pAlloc, @gRemMsg, sizeof(TRemMsg), dwBytesWritten) = true then begin CreateRemoteThread(hProc, nil, 0, pAlloc, nil, 0, remThreadID); if GetLastError = ERROR_SUCCESS then result := true; end; end; end; end; begin InjectMsgBox(dwDieProcessID, 'Hallo', 'Test', 0); end; Danke im Vorraus für Hilfe! MfG: sk0r |
Re: MsgBox Injection
scheint zu funktionieren? bist du mal durchgesteppt (mit Haltepunkten etc.)? und hast du mal den rückgabewert gecheckt?
|
Re: MsgBox Injection
Hi,
ich weiß nicht genau, was du willst, aber wenn du eine MessageBox anzeigen willst und es nur so aussehen soll, als stamme sie von einer anderen Anwendung, kannst du doch einfach das fremde Fenster-Handle als ersten Parameter angeben. Dann verhält sich die MessageBox eben so, als käme sie von dem anderen Programm. Mfg FAlter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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