![]() |
C++ zu delphi
hey leute,
ich will diese c++ function in eine delphi function umwandeln:
Code:
und hab das erreicht:
ULONG reentry_address = GetProcAddress( LoadLibrary("user32.dll"), "PostMessageA" ) + 5;
__declspec(naked) void myPostMessageA(void) { __asm { mov edi,edi push ebp mov ebp,esp jmp [reentry_address] } }
Delphi-Quellcode:
Was ist daran falsch? beim compilen bekomm ich kein error aber dann beim ausführen. Hab schon viele sachen ausprobiert. k.A. was da falsch ist. Ich hoffe ihr könnt mir helfen. :)
function PostMessage1337(
hWnd:HWND; MSG:UINT; WPARAM:wParam; LPARAM:lParam):BOOL; var reentry_address: pointer; nub: Integer; begin reentry_address:=GetProcAddress( LoadLibrary('user32.dll'), 'PostMessageA'); Nub := integer(reentry_address)+5; reentry_address := pointer(nub); asm mov edi,edi push ebp mov ebp,esp jmp reentry_address end; Result := LongBool(Nub); end; danke :) k4ni |
Re: C++ zu delphi
Danke für diesen Quiz
|
Re: C++ zu delphi
Wieso Quiz ? Ich kriegs doch selber nich hin :(
|
Re: C++ zu delphi
Du musst verhindern, dass delphi den stackframe zerstoert.
|
Re: C++ zu delphi
Ahh danke :)
Nur weis ich nicht wie das geht. Und wieso? in C macht ers ja auch nicht oder? |
Re: C++ zu delphi
Delphi-Quellcode:
ist in delphi mit
__declspec(naked)
Delphi-Quellcode:
zu vergleichen, also kannst du es in asm programmieren oder du laesst dir was anderes einfallen.
asm
... end; |
Re: C++ zu delphi
Delphi-Quellcode:
var
pOrgPostMessage: Pointer; function Secure_PostMessageA(hWnd:HWND ;MSG:UINT ;WPARAM: wParam; lPARAM:lParam):BOOL;stdcall;assembler; asm jmp pOrgPostMessage end; procedure InitializeSecureApi; begin pOrgPostMessage := Pointer(DWORD(GetProcAddress( GetModuleHandle('user32.dll'), 'PostMessageA'))+5); end; procedure TForm1.FormCreate(Sender: TObject); begin InitializeSecureApi; Secure_PostMessageA(Application.Handle,WM_SYSCOMMAND,SC_MINIMIZE,0); end; |
Re: C++ zu delphi
Liste der Anhänge anzeigen (Anzahl: 1)
Danke!
Ich habs jetzt dann gleich mal getested mit:
Delphi-Quellcode:
es kommt ne AccessViolation sendet then key aber trotzdem. Idee?
Secure_PostMessageA(ms, Wm_keyDown, VK_Return, 0);
Secure_PostMessageA(ms, Wm_keyUp, VK_Return, 0); Edit: Mir ist aber aufgefallen das die address violation diesmal nicht von der user32.dll sondern von der application selber kommt. [Bild im anhang] |
Re: C++ zu delphi
Wie soll das auch funktionieren? Diesmal wird garkein stackframe erzeugt ... Versuche doch erstmal zu verstehen was du da versuchst.
//Edit: sorry, hatte das stdcall nicht wahrgenommen |
Re: C++ zu delphi
Funktioniert, wenn einige Bedingungen stimmen.(5 Bytes Hotpatch Fix vorhanden,...) Das "stdcall" induziert den Function Prolog.
Disassembly von Secure_PostMessageA:
Delphi-Quellcode:
Jedenfalls bei Delphi 7.
0044C86C $ 55 PUSH EBP
0044C86D . 8BEC MOV EBP,ESP 0044C86F .-FF25 D8FB4400 JMP DWORD PTR DS:[44FBD8] ; user32.7E36CB8A |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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