[AutoIt]Reduzierte Einklinkzeit, Diablo2

09/06/2010 13:17 TuMore#1
Hallo zusammen.

Ich hänge mal wieder fest. Undzwar versuche ich seid einiger zeit per AutoIt die einklinkzeit in TCP/Ip spiele zu reduzieren.
Hier mal der Code von Deathly Assassin

Code:
RequireAdmin ;Unter Vista brauch man Adminrechte, um mit memory zu arbeiten, deshalb sollte man (wenn es jetzt nicht ausschließlich für XP ausgelegt ist) diesen kleinen Befehl vorweg nehmen :P
#include <NomadMemory.au3>;Da Memory Funktionen bei Autoit standartmäßig noch nicht drin sind, nehmen wir die nomad memory (Datei Anhang) mit rein

SetPrivilege("SeDebugPrivilege", 1) ;Aktiviert eine Debug funktion(geht auch ohne, ist aber sinvoller mit)

;Als nächstes müssen wir mit memory open einen Prozess bestimmen, auf den wir uns beziehen, damit Autoit weiß,
;dass wir mit der memory von genau DIESEM Prozess arbeiten wollen...
;damit unser script auch artig wartet, bis der Prozess existiert lassen wir es mit Hilfe einer While-Schleife warten:
While Not ProcessExists("2680"); Prozessname
Sleep(200)
WEnd

$Open = _memoryopen(ProcessExists("D2loader.exe"));Nun öffnen wir mit hilfe von memoryopen und der PID des Prozesses (ProcessExists und WinGetProcess geben beide die
;PID des Prozesses zurück) den Prozess


$Adresse = 0x6FAC4D6D; hier kommt nun die Adresse hin, die wir mit Cheat Engine heruasgefunden haben... um sie Autoit kompatibel zu machen, setzen wir einfach ein 0x davor :)
$Read = _MemoryRead($Adresse , $Open, 'dword');Das wäre die Funktion um unsere Memory auszulesen. Dword ist die memory art (Bei Cheat Engine 4Byte) ... Ich habe
; eine Liste mit den verschiedenen Memory formen beigelegt... Die Memory Art muss berücksichtigt werden! :D
$write = _MemoryWrite($Adresse, $Open, "00 0a", 'dword');Mit dieser funktion können wir der Adresse eine neue Value(Wert) geben, also wenn man
;z.b. 50 hp hat können wir diese mit _MemoryWrite auf 100 schreiben
Die bereits eingesetzte werte habe ich mit Ollydbg und Cheatengine herausgefunden.

Cheatengine:
D2Client.dll+14D6D - 68 fa 00 00 00 - push 000000fa

Ollydbg:
6FAC4D6D |. 68 FA000000 |PUSH 0FA

Der wert 0FA (=250ms) ist der wert den ich in 00A (=10ms) ändern möchte.

Als PID für den Prozess habe ich 2680.

Ich denke das es nur zahlendreher sind aber ich komm halt nicht weiter^^

-TuMore
09/07/2010 02:32 lolkop#2
dword bedeutet, dass du einen dword wert schreibst, und nicht 2 byte in hex code...

also _MemoryWrite($Adresse, $Open, 10, 'dword') würde deutlich mehr sinn machen.

ausserdem bin ich mir ziemlich sicher das das keine statische adresse ist, die du da gefunden hast.