Autoit Addressen überschreiben

06/01/2009 15:53 .0.-..0-000#1
Sehr geehrtes Forum!

Ich kann mit autoit addressen nicht überschreiben...:(:mad::confused:

Hier ist mein Code für Solitaire (ggf. müsst ihr NomadMemory.au3 welches unten ist beim include Pfad einfügen.):
PHP Code:
#include <NomadMemory.au3>

If not WinExists("Solitär"Then
    MsgBox
(0,"Error","Starte zuerst Solitär und dann den Hack!")
    Exit
EndIf

$address1 01007170 adresse des Zeigers
$offset 
0x30
$process 
WinGetProcess("Solitär")
$OpenProccess _MemoryOpen($Process)

If @
error Then
    MsgBox
(0,"error","error opening process.")
    Exit
EndIf

MsgBox(0"[DEBUG]""Die 1. Addresse liegt bei " $address1)

$address2 _MemoryRead($OpenProccesshex($address1))
MsgBox(0,"[DEBUG]""Addresse 2 ist " $address2)
$address2 int($address2) + int($offset)
MsgBox(0"[DEBUG]""Die 1. Addresse liegt bei " $address1 & @LF "Die 2. Addresse liegt bei " $address2)
MsgBox(0,"Punkte""Du hast " _MemoryRead($OpenProccesshex($address2)) & " Punkte") ; Sollte die Punkte ausgeben die man hat
_MemoryWrite
(hex($address2), $OpenProccess150,"int"); Trägt 150 in die Punkteaddresse einDanach sollte man 150 Punkte haben
Ich kann in C noch nicht gut genug Porgrammieren um es in C zu machen.
Wie macht ihr das denn wenn ihr autoit hacks schreibt?

Nomadmemory.au3

MfG :mofo:


Edit: Wer Das Rausbekommt Bekommt N Dickes Thx
06/01/2009 15:54 .0.-..0-000#2
Achso ja Solitaire für VistaUser: [Only registered and activated users can see links. Click Here To Register...]
06/01/2009 16:02 __wadim#3
Code:
DWORD lol = *(DWORD*)01007170;
*(DWORD*)(lol+0x30) = 150;
06/01/2009 16:08 .0.-..0-000#4
tschuldigung das ich das nicht verstehe aber was ist das?
Das ist kein Autoit oder?
06/01/2009 16:09 __wadim#5
das ist au4
06/01/2009 16:16 ms​#6
Quote:
Originally Posted by .0.-..0-000 View Post
Code:
$address1 = 01007170 ; adresse des Zeigers
hab zwar keine Ahnung von AutoIt, aber du meinst sicher die Adresse "01007170" in hexadezimaler Schreibweise. Müsste es dann nicht so heißen:
Code:
$address1 = [B][COLOR="Red"]0x[/COLOR][/B]01007170 ; adresse des Zeigers
06/01/2009 16:16 .0.-..0-000#7
Gibt es das?
Ich habe nichts bei Google gefunden

?

XD
06/01/2009 16:18 __wadim#8
vlt ist es aber auch 0xF5E42 :)
06/01/2009 16:21 .0.-..0-000#9
Nein es klappt auch damit nicht.
Ich glaube mitlerweile, dass es an nomadmemory liegt.
Wovon ich keine Ahnung habe...
06/01/2009 16:22 kknb#10
nochmal ums auch für alle verständlich zu machen ;)

$1=hex(01007170)
MsgBox(0,"",$1)

vielleicht ist auch nur deine adresse +offset falsch.
06/01/2009 16:24 __wadim#11
Quote:
Originally Posted by .0.-..0-000 View Post
Nein es klappt auch damit nicht.
Ich glaube mitlerweile, dass es an nomadmemory liegt.
Wovon ich keine Ahnung habe...
bin mir absolut sicher, dass es an dir liegt!
06/01/2009 16:35 .0.-..0-000#12
Nein, das stimmt schon
06/01/2009 16:41 __wadim#13
Quote:
Originally Posted by .0.-..0-000 View Post
Nein es klappt auch damit nicht.
Ich glaube mitlerweile, dass es an nomadmemory liegt.
Wovon ich keine Ahnung habe...
Quote:
Originally Posted by .0.-..0-000 View Post
Nein, das stimmt schon
was stimmt?
06/01/2009 16:45 .0.-..0-000#14
deine adresse +offset falsch

meinte ich.
06/01/2009 16:46 schlurmann#15
Quote:
Originally Posted by __wadim View Post
Code:
DWORD lol = *(DWORD*)01007170;
*(DWORD*)(lol+0x30) = 150;
Sehr schön, so muss das aussehen (nur 0x nicht vergessen, eine 0 als erste Ziffer ist dann nämlich das Oktalsystem :p).

Da er aber nicht im Prozess ist, würd ich folgendes empfehlen:

Code:
#include <Windows.h>

int main()
{	
	DWORD lol     = *(DWORD*)0x01007170;
	DWORD buffer  = 150;
	DWORD procId  = 0;
	DWORD written = 0;

	HWND soltwnd = FindWindowA(NULL, "Solitär");
	GetWindowThreadProcessId(soltwnd, &procId);
	HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procId);
	
	WriteProcessMemory(hProc, (void*)(lol + 0x30), &buffer, 4, &written);
	return 0;
}