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:
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;
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.
Dann hab ich hier mal das gleiche versucht wie bei PMA.
Also:
Delphi-Quellcode:
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;
Mal keine EAddressViolation
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