CE-pointer in autoit

11/14/2010 09:49 eagly200#1
hi, ich hätte da mal ne Frage:
ich habe in Cheat engine einen Pointer gefunden den ich mit Autoit ändern will.
ich hab die SuFu benutz aber da steht nur was von Pointern die ne eigene Adresse haben kA aber ich habe so einen Pointer:
P>[Adresse]
und den pointer möchte ich in autoit verändern.
11/14/2010 10:14 .BritainAndy#2
PHP Code:

Dim $AOffset
[3] = [00x4E00x5BA]
SetPrivilege("SeDebugPrivilege"1)
$openmem _MemoryOpen(WinGetProcess("METIN2"))
$baseadress _MemoryModuleGetBaseAddress(WinGetProcess("METIN2"), "immortal2.bin")






Dim $zustand


Case $Button1
 $zustand 
True 
Case $Button2
 $zustand 
False







If $zustand Then
    $Awert 
=_MemoryPointerRead($baseadress+0x21C4A4$openmem$AOffset"short")
        
_MemoryPointerWrite($baseadress 0x21C4A4$openmem$AOffset"16656""dword")

Else
    
$Awert =_MemoryPointerRead($baseadress+0x21C4A4$openmem$AOffset"short")
        
_MemoryPointerWrite($baseadress 0x21C4A4$openmem$AOffset"16256""dword"
Du declarierst erst die Variable $Zustand,

wenn man button 1 drückt wird $zustand aktiviert, und somit in dne pointer reingeschrieben (if $zustand then .....)
wenn man button 2 drückt wird der zustand deaktiviert , also es wird nicht mehr reingeschrieben und der pointer kann sich auf die ursprüngliche addresse zurück setzen (else ....)
11/14/2010 11:09 lolkop#3
Quote:
Originally Posted by eagly200 View Post
ich hab die SuFu benutz aber da steht nur was von Pointern die ne eigene Adresse haben kA aber ich habe so einen Pointer:
P>[Adresse]
und den pointer möchte ich in autoit verändern.
um den pointer zu ändern einfach per WriteProcessMemory ne andere adresse reinschreiben...

wobei das wohl in 95% aller fälle einen crash verursachen wird.
11/14/2010 11:52 eagly200#4
das bringt dann aber nicht viel...
11/14/2010 12:06 .BritainAndy#5
machs so wie ich
11/14/2010 12:33 lolkop#6
Quote:
Originally Posted by eagly200 View Post
das bringt dann aber nicht viel...
hä?
du willst den pointer umleiten, also musst einfach in den pointer was reinschreiben -.-

Code:
memwrite($pointer, $new_adress)
11/14/2010 12:55 eagly200#7
Quote:
Originally Posted by .BritainAndy View Post
machs so wie ich
aber das versteh ich nicht *.*
ich möchte nur mit nem Button (GuI kann ich selbst erstellen) eine Adresse auf nen anderen Wert freezen.
11/14/2010 13:15 MoepMeep#8
Quote:
Originally Posted by lolkop View Post
hä?
du willst den pointer umleiten, also musst einfach in den pointer was reinschreiben -.-

Code:
memwrite($pointer, $new_adress)
Ich glaub eher, er will die value auslesen/ändern :x


@topic base auslesen, offset addieren, neue base auslesen usw :>
11/14/2010 13:17 omer36#9
Quote:
Originally Posted by eagly200 View Post
aber das versteh ich nicht *.*
ich möchte nur mit nem Button (GuI kann ich selbst erstellen) eine Adresse auf nen anderen Wert freezen.
Quote:
Originally Posted by eagly200 View Post
hi, ich hätte da mal ne Frage:
ich habe in Cheat engine einen Pointer gefunden den ich mit Autoit ändern will.
ich hab die SuFu benutz aber da steht nur was von Pointern die ne eigene Adresse haben kA aber ich habe so einen Pointer:
P>[Adresse]
und den pointer möchte ich in autoit verändern.

hmm? was den nun??
11/14/2010 13:18 anonymous-f4h279#10
Adresse und Pointer sind das nicht 2 paar Schuhe?

Wenn ich ne Adresse verändert habe, hab ich einfach mit MemoryWrite den Wert ändern lassen :p

PHP Code:
Case $Button1
_Hack
()

Func _Hack()
$PID ProcessExists("bla.exe")
ProcessWait($PID)
$open _MemoryOpen($PID)
_MemoryWrite(0xaddr,$openneuer wert"value typ")
EndFunc 
Habs mir aber immer über ne Inputbox gemacht wo man den Wert selbst bestimmen kann.
PHP Code:
Case $Button1
_Hack
()

Func _Hack()
$value GUICtrlRead($Input)
$PID ProcessExists("bla.exe")
ProcessWait($PID)
$open _MemoryOpen($PID)
_MemoryWrite(0xaddr,$open$value"value typ")
EndFunc 
11/14/2010 13:35 eagly200#11
also es ist ein Pointer nur da man mich glaub ich falsch verstanden habe hab ich Adresse gesagt. aber gibts nicht irgend nen Befehl z.b. so:

[Befehl]([Adresse],[neuer Wert)

das kann man ja dann in eine Endlosschleife packen um es zu freezen.
11/14/2010 13:39 omer36#12
PHP Code:
AdlibRegister(_MemoryPointerWrite($Pointer$Open$Offset$wert"float/dword/whatever")) 
keine ahnung ob du das meinst..
11/14/2010 13:42 lolkop#13
willst du denn jetzt den pointer umleiten, oder das, auf was der pointer zeigt, ändern?

du sprichst immer abwechselnd mal davon, das du das eine willst, und mal vom andern...
11/14/2010 13:54 eagly200#14
ich will den wert ändern
11/14/2010 14:12 lolkop#15
dann liest du per ReadProcessMemory die adresse auf die der pointer zeigt ein, und schreibst dann, per WriteProcessMemory in die eingelesen Adresse deinen neuen wert

unter der annahme, das der pointer direkt auf deinen wert zeigt, könnte das ganze zb so aussehen:
Code:
Func PointerWrite($pid, $pointer, $neuer_wert, $typ)
	;DLL Öffnen
	Local $kernel32 = DllOpen('kernel32.dll')
	;Prozess öffnen (mit full access)
	Local $process = DllCall($kernel32, 'int', 'OpenProcess', 'int', 0x1F0FFF, 'int', 1, 'int', $pid)
	;DllStruct für unsere einzulesende adresse erstellen (DWORD)
	Local $read_struct = DllStructCreate('dword')
	;adresse in struct speichern
	DllCall($kernel32, 'int', 'ReadProcessMemory', 'int', $process[0], 'int', $pointer, 'ptr', DllStructGetPtr($read_struct), 'int', DllStructGetSize($read_struct), 'int', '')
	;neue DllStrcut für den zu schreibeneden wert erstellen
	Local $write_struct = DllStructCreate($typ)
	;zu schreibenden wert in DllStrcut speichern
	DllStructSetData($write_struct, $neuer_wert, 1)
	;der eingelesenen adresse volle zugriffsrechte geben
	Local $original = DllCall($kernel32, 'int', 'VirtualProtectEx', 'int', $process[0], 'ptr', DllStructGetData($read_struct, 1), 'int', DllStructGetSize($write_struct), 'dword', 0x40, 'dword*', 0)
	;neuen wert in eingelesene adresse speichern
	DllCall($kernel32, 'int', 'WriteProcessMemory', 'int', $process[0], 'int', DllStructGetData($read_struct, 1), 'ptr', DllStructGetPtr($write_struct), 'int', DllStructGetSize($write_struct), 'int', 0)
	;ursprüngliche rechte wieder herstellen
	DllCall($kernel32, 'int', 'VirtualProtectEx', 'int', $process[0], 'ptr', DllStructGetData($read_struct, 1), 'int', DllStructGetSize($write_struct), 'dword', $original[5], 'dword*', 0)
	;geöffneten prozess schließen
	DllCall($kernel32, 'int', 'CloseHandle', 'int', $process[0])
	;geöffnete DLL schließen
	DllClose($kernel32)
EndFunc