![]() |
Re: C++ zu delphi
Hmm ich habs mit Delphi 7 und 10 versucht.
Es macht schon was es machen muss aber dann gibts dann halt danach ne eAddressViolation :gruebel: |
Re: C++ zu delphi
Gib nochmal den ganzen Code oder gleich das Test Projekt als Anhang.
Vlt. habe ich einen Fall übersehen. Geht es denn, wenn du ein ganz neues projekt machst und meinen code reinkopierst? |
Re: C++ zu delphi
Dann liegt das Problem warscheinlich auch woanders, hast du dir den Anfang von PostMessage mal im disassembler angeschaut?
BTW, mein vorschlag waere:
Delphi-Quellcode:
function PostMessage1337(hWnd:HWND;MSG:UINT;WPARAM:wParam;LPARAM:lParam):BOOL; stdcall;
asm jmp @go @usr32: db 'user32.dll',0 @PMA: db 'PostMessageA',0 @go: lea eax, @usr32 push eax call LoadLibraryA lea ecx, @PMA push ecx push eax call GetProcAddress add eax,5 jmp eax end; |
Re: C++ zu delphi
Liste der Anhänge anzeigen (Anzahl: 1)
Hab ich auch schon versucht.
Werd jetz auch mal Win32.Api's version testen. Ich hab das project mal im ahhang. (mit der kompilierten exe). Edit: Komisch. Win32.Api's geht auch nicht. Auch eAddressViolation. |
Re: C++ zu delphi
Jo Win32.APIs Lösung klappt bei mir auch problemlos. ;)
Wollte halt sowenig ASM wie möglich benutzen, da man daraus dann besser eine Secure Api Klasse basteln könnte. Zitat:
//Edit2: Selbst die Binary von dir klappt bei mir. Das bedeutet wohl, dass entweder: 1. PostMessageA bei dir von irgendeinem anderen Programm so merkwürdig gehookt wird, dass es nicht geht. 2. Du hast ServicePack2 nicht, da dort (afaik?) MOV EDI, EDI für Hotpatching eingeführt wird. Hmm mehr fällt mir im Moment nicht ein. |
Re: C++ zu delphi
Deine kompilierte version laeuft bei mir, welche windows version benutzt du? Welches Programm versucht du zu umgehen?
|
Re: C++ zu delphi
Okay..danke.
Ne SP2 hab ich nicht, werd ich mir jetzt aber mal ziehen aber vorher erst mal mit nem PC restart versuchen. Hatte vorher das spiel mal aus mit dem GameGuard (nProtect rev1139) das PMA hookt Und genau das will ich damit umgehen. Achso ja, das spiel heist MapleStory. Edit: Vielen vielen dank an euch 2. Liegt wohl an SP2 (installier ich gerade) müsst dann gehen. DANKE!! :thumb: |
Re: C++ zu delphi
Hey, das soll jetz kein bump sein sondern nur eine frage zum gleichen thema.
Also das spile bzw. der GameGuard hookt ReadProcessMemory auch. (glaub ich zumindest) Wenn ich versuche vom Prozess zu lesen gibt er einfach keine value zurück. So hab ich das gemacht:
Delphi-Quellcode:
Bei anderen prozessen geht das super. Dann hab ich das bei MapleStory (also das spiel) versucht dann bekomm ich die Message "1337". Hab ich ja davor noch deklariert.
procedure TForm1.Button1Click(Sender: TObject);
var ThreadId: Integer; HandleWindow: Integer; wnd: HWND; ProcessId, vl: Integer; p : pointer; puffer : array[0..1] of DWord; BytesRead: DWord; begin vl := 1337; wnd := FindWindow('MapleStoryClass', nil); if wnd = 0 then begin ShowMessage('Could not find the Window'); Exit; end; ThreadId := GetWindowThreadProcessId(wnd, @ProcessId); HandleWindow := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId); ReadProcessMemory( HandleWindow, ptr($0040000), @puffer[0], 4, BytesRead ); vl := Puffer[0]; ShowMessage(IntToStr(vl)); CloseHandle(HandleWindow); end; Dann hab ich hier mal das gleiche versucht wie bei PMA. Also:
Delphi-Quellcode:
Mal keine EAddressViolation :)
function RPM(hProcess: Cardinal; const IpBaseAddress: Pointer; IpBuffer: Pointer; nSize: Cardinal; var IPNumberOfBytedRead: Cardinal):BOOL;stdcall;assembler;
asm jmp @go @usr32: db 'Kernel32.dll',0 @PMA: db 'ReadProcessMemory',0 @go: lea eax, @usr32 push eax call LoadLibraryA lea ecx, @PMA push ecx push eax call GetProcAddress add eax,5 jmp eax end; Jetzt kommt auch kein "1337" mehr als message sondern immer diese zahl bei jeder addy: 1769498 Wenigstens ein kleiner erfolg. Jetzt die frage: Kann das sein das es auch an OpenProcess() liegt das er das hookt? Oder ist der asm-code extra nur für PMA`? Danke :) |
Re: C++ zu delphi
Gameguard veranstaltet wesentlich mehr als Usermode Apis zu hooken. (Obwohl ich mir jetzt nicht sicher bin, ob GameGuard ÜBERHAUPT was im Userland hooked, aber da scheinst du dich informiert zu haben oder hast nachgeschaut?)
Wie dem auch sei, GameGuard lädt einen Treiber und verhindert jegliche Manipulation des Zielprozesses von Ring0 aus. Es wird also viel schwieriger werden GameGuard zu umgehen, als du anfangs dachtest. Denn jetzt wäre es an der Zeit GameGuard zu reversen um zu gucken, was GameGuard macht und was man dagegen tun könnte. Leider kommen auch noch AntiDebug-Tricks dazu, also wie gesagt es wird nicht einfach. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:54 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