AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C++ zu delphi

Ein Thema von k4ni · begonnen am 25. Jan 2008 · letzter Beitrag vom 26. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#1

C++ zu delphi

  Alt 25. Jan 2008, 02:35
hey leute,

ich will diese c++ function in eine delphi function umwandeln:

Code:
 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]
      }
   }
und hab das erreicht:

Delphi-Quellcode:
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;
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.

danke
k4ni
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#2

Re: C++ zu delphi

  Alt 25. Jan 2008, 07:11
Danke für diesen Quiz
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: C++ zu delphi

  Alt 25. Jan 2008, 14:47
Wieso Quiz ? Ich kriegs doch selber nich hin
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#4

Re: C++ zu delphi

  Alt 25. Jan 2008, 14:56
Du musst verhindern, dass delphi den stackframe zerstoert.
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: C++ zu delphi

  Alt 25. Jan 2008, 15:08
Ahh danke
Nur weis ich nicht wie das geht. Und wieso? in C macht ers ja auch nicht oder?
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#6

Re: C++ zu delphi

  Alt 25. Jan 2008, 15:17
__declspec(naked) ist in delphi mit

Delphi-Quellcode:
asm
...
end;
zu vergleichen, also kannst du es in asm programmieren oder du laesst dir was anderes einfallen.
  Mit Zitat antworten Zitat
Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#7

Re: C++ zu delphi

  Alt 25. Jan 2008, 15:56
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;
  Mit Zitat antworten Zitat
k4ni

Registriert seit: 17. Jul 2007
Ort: Ulm
258 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: C++ zu delphi

  Alt 25. Jan 2008, 16:04
Danke!
Ich habs jetzt dann gleich mal getested mit:
Delphi-Quellcode:
Secure_PostMessageA(ms, Wm_keyDown, VK_Return, 0);
Secure_PostMessageA(ms, Wm_keyUp, VK_Return, 0);
es kommt ne AccessViolation sendet then key aber trotzdem. Idee?

Edit:
Mir ist aber aufgefallen das die address violation diesmal nicht von der user32.dll sondern von der application selber kommt.
[Bild im anhang]
Miniaturansicht angehängter Grafiken
eaccesviolation_211.jpg  
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#9

Re: C++ zu delphi

  Alt 25. Jan 2008, 16:08
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
  Mit Zitat antworten Zitat
Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#10

Re: C++ zu delphi

  Alt 25. Jan 2008, 16:12
Funktioniert, wenn einige Bedingungen stimmen.(5 Bytes Hotpatch Fix vorhanden,...) Das "stdcall" induziert den Function Prolog.

Disassembly von Secure_PostMessageA:

Delphi-Quellcode:
0044C86C $ 55 PUSH EBP
0044C86D . 8BEC MOV EBP,ESP
0044C86F .-FF25 D8FB4400 JMP DWORD PTR DS:[44FBD8] ; user32.7E36CB8A
Jedenfalls bei Delphi 7.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz