[Release] AutoIt-Recieve-Packetlogger mit Sourcecode

10/02/2012 17:10 Shadow992#1
Ich habe mich der Herausforderung gestellt in AutoIt einen Packetlogger zu schreiben, bisher werden nur die Packets geloggt, die der Client vom Server erhält, andersrum geht es noch nicht.

Diese kleine Spielerei fing ich eigentlich an um meine neue CCInject.au3 zu testen, dann dachte ich aber, dass es sicherlich für viele interessant sein könnte einmal zu sehen wie einfach es doch ist an die Packets ranzukommen.

Deshalb poste ich hier einmal einen relativ einfachen Packetlogger.
Das einzige Problem an der ganzen Sache ist, dass es AutoIt ist und AutoIt ist leider relativ langsam. Deswegen macht AutoIt nur alle paar Sekunden ein Update der Packets. Es werden jedoch ALLE Packets empfangen, vorausgesetzt AutoIt macht das Update der Packets nicht erst nach 5min.

Ihr dürft gerne den Grundgedanken des Loggers aufschnappen und für eure Projekte nutzen. Das ganze lässt sich z.b. sehr schön benutzen um genauere Informationen über die Monster in der Umgebung rauszufinden ohne groß mit CE suchen zu müssen.

Um das Skript ausführen zu können braucht ihr meine CCInject.au3 UDF:
[Only registered and activated users can see links. Click Here To Register...]

Und hier der kleine Packetlogger (gut um sich ein paar Grundlegende Sachen anzuschauen):

Hier der etwas größere Packetlogger, der auch Send-Packets loggen kann und einen Filter besitzt.
10/02/2012 17:29 xXKonaXx#2
Würde mal sagen gute Arbeit.
Das bringt hier endlich mal wieder Farbe in die ganze Angelegenheit!
Werde gleich mal ein bisschen mit rumspielen.
10/02/2012 17:38 *-Elsword_Hacker-*#3
Nice , Das jemand mal ein Source veröffentlicht von einem Packet Logger. Werde ein wenig damit arbeiten ...
10/02/2012 17:54 Hatish#4
Dont work for me i get error
10/02/2012 17:59 Shadow992#5
Quote:
Originally Posted by Hatish View Post
Dont work for me i get error
So would be great if you could write your error down, wouldnt it?
10/02/2012 18:04 Hatish#6
Quote:
Originally Posted by Shadow992 View Post
So would be great if you could write your error down, wouldnt it?
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(27,65) : ERROR: _MemoryManipulationOpen(): undefined function.
$memopen = _MemoryManipulationOpen(ProcessExists("NostaleX.da t"))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(29,125) : ERROR: _MemorySearchForBytes(): undefined function.
$found_recv=_MemorySearchForBytes($memopen, $address[0][1], $address[0] [0]-1000000 , $address[0][0]+1000000)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(32,47) : ERROR: _AllocateMemoryForVariable(): undefined function.
$alloc_var=_AllocateMemoryForVariable($memopen)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(33,85) : ERROR: _AllocateMemoryFor2DArray(): undefined function.
$allocated_arr = _AllocateMemoryFor2DArray($memopen,Ubound($packets _recv),128,"char")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(35,79) : ERROR: _CreateASM_CopyRegisterTo2DArrayEx(): undefined function.
$asm_code = _CreateASM_CopyRegisterTo2DArrayEx($allocated_arr, $alloc_var,"edx")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(56,82) : ERROR: _ReadMemory2DArrayString(): undefined function.
$packets_recv[$i]=_ReadMemory2DArrayString($memopen,$allocated_arr, $i)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(58,63) : ERROR: _MemoryReset2DArray(): undefined function.
_MemoryReset2DArray($memopen,$allocated_arr,$i)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(73,84) : ERROR: _InjectASMAtAddress(): undefined function.
$old_opcode_recv=_InjectASMAtAddress($memopen, $found_recv[0], 6, $asm_code)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(80,70) : ERROR: _MemoryBytesWrite(): undefined function.
_MemoryBytesWrite($memopen,$found_recv[0],$old_opcode_recv[3])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3 - 10 error(s), 0 warning(s)

i have CCinject inclued :)
10/02/2012 18:09 Shadow992#7
Quote:
Originally Posted by Hatish View Post
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(27,65) : ERROR: _MemoryManipulationOpen(): undefined function.
$memopen = _MemoryManipulationOpen(ProcessExists("NostaleX.da t"))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(29,125) : ERROR: _MemorySearchForBytes(): undefined function.
$found_recv=_MemorySearchForBytes($memopen, $address[0][1], $address[0] [0]-1000000 , $address[0][0]+1000000)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(32,47) : ERROR: _AllocateMemoryForVariable(): undefined function.
$alloc_var=_AllocateMemoryForVariable($memopen)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(33,85) : ERROR: _AllocateMemoryFor2DArray(): undefined function.
$allocated_arr = _AllocateMemoryFor2DArray($memopen,Ubound($packets _recv),128,"char")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(35,79) : ERROR: _CreateASM_CopyRegisterTo2DArrayEx(): undefined function.
$asm_code = _CreateASM_CopyRegisterTo2DArrayEx($allocated_arr, $alloc_var,"edx")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(56,82) : ERROR: _ReadMemory2DArrayString(): undefined function.
$packets_recv[$i]=_ReadMemory2DArrayString($memopen,$allocated_arr, $i)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(58,63) : ERROR: _MemoryReset2DArray(): undefined function.
_MemoryReset2DArray($memopen,$allocated_arr,$i)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(73,84) : ERROR: _InjectASMAtAddress(): undefined function.
$old_opcode_recv=_InjectASMAtAddress($memopen, $found_recv[0], 6, $asm_code)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3(80,70) : ERROR: _MemoryBytesWrite(): undefined function.
_MemoryBytesWrite($memopen,$found_recv[0],$old_opcode_recv[3])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~^
C:\Program Files (x86)\NosTale(IT)\Nuovo AutoIt v3 Script.au3 - 10 error(s), 0 warning(s)

i have CCinject inclued :)
You need new version of CCInject.au3 so download new one.
And I think you even do not have old CCInject.au3 otherwise it would show less error than now.
10/02/2012 18:18 Napper12#8
Don't work on italian client D:
10/02/2012 18:33 Shadow992#9
Quote:
Originally Posted by Napper12 View Post
Don't work on italian client D:
Did you run it with x86?
If it does still not work its because the address could not be found.
To test if address was not found add to line "29" the following:
Msgbox(0,"",$found_recv[0]) and post what you can read in the messagebox.
10/02/2012 19:54 sfigmo#10
great, I can develop a program inspired by this code?
10/02/2012 19:56 Shadow992#11
Quote:
Originally Posted by sfigmo View Post
great, I can develop a program inspired by this code?
Of cause you can. :)
10/02/2012 21:06 ernilos#12
Can post your game client? My client don't have that adress.. ><
10/02/2012 21:11 Shadow992#13
Quote:
Originally Posted by ernilos View Post
Can post your game client? My client don't have that adress.. ><
NostaleX.dat must have this address.
As said before:
Quote:
Did you run it with x86?
If it does still not work its because the address could not be found.
To test if address was not found add to line "29" the following:
Msgbox(0,"",$found_recv[0]) and post what you can read in the messagebox.
10/02/2012 23:11 Steasy™#14
Was kann man damit eig machen ? packete ändern oder was ? Sry bin noch neu in Nostale in hacks.
10/02/2012 23:36 Shadow992#15
Quote:
Originally Posted by xD4rkLeGenD View Post
Was kann man damit eig machen ? packete ändern oder was ? Sry bin noch neu in Nostale in hacks.
Mit dem Packetlogger hier nicht direkt.
Aber die CCInject.au3 bietet auch Funktionen, die so etwas ermöglichen.

Mit dem Packetlogger hier ist es nur möglich die Recv-Packete zu empfangen.

#Updated

Ich hab jetzt einen 2. Packetlogger hinzugefügt, der noch mehr kann als der einfache.
Beide Skripts sind im 1. Post, damit kann man sich aussuchen welches Skript man genauer anschauen möchte.