|
You last visited: Today at 03:31
Advertisement
Frage zu mmorpg-bot
Discussion on Frage zu mmorpg-bot within the AutoIt forum part of the Coders Den category.
09/17/2012, 16:53
|
#1
|
elite*gold: 0
Join Date: Feb 2010
Posts: 178
Received Thanks: 4
|
Frage zu mmorpg-bot
hi, ich würde mir gerne einen bot für das spiel Silkroad scripten....der bot soll eig nur die monster auswählen...mehr nich...
das problem ist, dass ich keine ahnung hab wie ich anfangen soll
Ich weiß nur das ich irgendwie mit memory hacking weiter komme....nur da ich noch nich so viel erfahrng mit memory hacking habe (falls das überhaupt richtig ist) würde ich mich über eure hilfe freuen....keine angst, ich verlange von euch nicht das ihr mir nen kompletten bot schreibt. :d....nur das ihr mir starthilfe gebt und mir evtl. später nochma helft..
Gruß Mo
PS: Rechtsschreibfehler könnt ihr behalten!!
|
|
|
09/17/2012, 17:00
|
#2
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
wenn es nichts weiter ist, kannst du auch mit dem Send() befehl die "such naheliegende monster taste" anwählen... bei sro war das glaube ist die TAB-taste, oder?
also
send("{TAB}")
bzw. controlsend()
oder wie du schon meintest mit dem speicher arbeiten...
aber warscheinlich brauchst du so oder so nen bypass für den game guard (?)
|
|
|
09/17/2012, 20:19
|
#3
|
elite*gold: 0
Join Date: Feb 2010
Posts: 178
Received Thanks: 4
|
die taste (Funktion), gibt es leider nicht mehr....trotzdem danke für deine Antwort
Und gameguard gibts auch net
ich glaub du verwechselst das mit metin2
|
|
|
09/17/2012, 20:50
|
#4
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
Quote:
Originally Posted by mo.tennis
die taste (Funktion), gibt es leider nicht mehr....trotzdem danke für deine Antwort
Und gameguard gibts auch net
ich glaub du verwechselst das mit metin2
|
nein tuh ich nicht, o.O
hatte sro früher gespielt, vor 4 jahren oderso, wo es noch max lv 90 neu war...
jetz ist es was? 120?130?
dann musst du halt mit memory arbeiten, such dir cheat engine tutorials raus und lern adressen suchen...
|
|
|
09/18/2012, 11:18
|
#5
|
elite*gold: 0
Join Date: Feb 2010
Posts: 178
Received Thanks: 4
|
Ok danke, jedoch weiß ich wie ich die Adresse von zb einer Anzahl wie Pfeile....dann muss ich ja nur die Menge bei CE angeben und ändern...dann find ich die mit dem ausschlussverefahren. Doch wie zum Teufel soll ich die Adresse von nem Mob herausfinden.
|
|
|
09/18/2012, 13:29
|
#6
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
mob auswählen, nach 1 suchen.
mob auswählen, nach 0 suchen...
usw... (z. B.)
zwischendurch herum laufen, menu öffnen ect.
€ach ne, so findest du nur, ob eines ausgewählt wurde oder nicht..
wie du den "anvisierst" weiß ich grad selber nicht mehr
|
|
|
09/18/2012, 14:48
|
#7
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
ich hab vor einiger zeit im stealthex forum mal ne methode gepostet:
Quote:
|
Originally Posted by lolkop
i know that this topic is kinda old, but since i've found a way for myself to get all objects listed, i'd like to show, how i found them...
first of all i have to say, that i was looking for a way to list all items. i didn't know that i would find a list of all objects this way.
to start getting all items listed, i took the grab function...
in the zszc client it looks like this:
Code:
007440B0 /$ 83EC 20 SUB ESP,20
007440B3 |. A1 440EAA00 MOV EAX,DWORD PTR DS:[AA0E44]
007440B8 |. D905 70C09C00 FLD DWORD PTR DS:[9CC070]
007440BE |. 8B88 8C000000 MOV ECX,DWORD PTR DS:[EAX+8C]
007440C4 |. D91C24 FSTP DWORD PTR SS:[ESP]
007440C7 |. 8B90 90000000 MOV EDX,DWORD PTR DS:[EAX+90]
007440CD |. 8B80 94000000 MOV EAX,DWORD PTR DS:[EAX+94]
007440D3 |. 8325 2490A800 >AND DWORD PTR DS:[A89024],FFFFFFFE
007440DA |. 894424 10 MOV DWORD PTR SS:[ESP+10],EAX
007440DE |. A1 1890A800 MOV EAX,DWORD PTR DS:[A89018]
007440E3 |. 57 PUSH EDI
007440E4 |. 33FF XOR EDI,EDI
007440E6 |. 85C0 TEST EAX,EAX
007440E8 |. 894C24 0C MOV DWORD PTR SS:[ESP+C],ECX
007440EC |. 895424 10 MOV DWORD PTR SS:[ESP+10],EDX
007440F0 |. A3 2090A800 MOV DWORD PTR DS:[A89020],EAX
007440F5 |. 0F84 E0000000 JE sro_clie.007441DB
007440FB |. 56 PUSH ESI
007440FC |. 8D6424 00 LEA ESP,DWORD PTR SS:[ESP]
00744100 |> 8DB0 34FFFFFF /LEA ESI,DWORD PTR DS:[EAX-CC]
00744106 |. 85F6 |TEST ESI,ESI
00744108 |. 0F84 AA000000 |JE sro_clie.007441B8
0074410E |. 68 7834AA00 |PUSH sro_clie.00AA3478
00744113 |. 8BCE |MOV ECX,ESI
00744115 |. E8 B6921D00 |CALL sro_clie.0091D3D0
0074411A |. 84C0 |TEST AL,AL
0074411C |. 0F84 91000000 |JE sro_clie.007441B3
00744122 |. 83BE F4010000 >|CMP DWORD PTR DS:[ESI+1F4],0
00744129 |. 0F85 84000000 |JNZ sro_clie.007441B3
0074412F |. D986 8C000000 |FLD DWORD PTR DS:[ESI+8C]
00744135 |. D86424 10 |FSUB DWORD PTR SS:[ESP+10]
00744139 |. D95C24 1C |FSTP DWORD PTR SS:[ESP+1C]
0074413D |. D986 90000000 |FLD DWORD PTR DS:[ESI+90]
00744143 |. D86424 14 |FSUB DWORD PTR SS:[ESP+14]
00744147 |. D95C24 20 |FSTP DWORD PTR SS:[ESP+20]
0074414B |. D986 94000000 |FLD DWORD PTR DS:[ESI+94]
00744151 |. D86424 18 |FSUB DWORD PTR SS:[ESP+18]
00744155 |. D95C24 24 |FSTP DWORD PTR SS:[ESP+24]
00744159 |. D94424 20 |FLD DWORD PTR SS:[ESP+20]
0074415D |. D94424 1C |FLD DWORD PTR SS:[ESP+1C]
00744161 |. D94424 24 |FLD DWORD PTR SS:[ESP+24]
00744165 |. D9C1 |FLD ST(1)
00744167 |. DECA |FMULP ST(2),ST
00744169 |. D9C2 |FLD ST(2)
0074416B |. DECB |FMULP ST(3),ST
0074416D |. D9C9 |FXCH ST(1)
0074416F |. DEC2 |FADDP ST(2),ST
00744171 |. DCC8 |FMUL ST,ST
00744173 |. DEC1 |FADDP ST(1),ST
00744175 |. D95C24 0C |FSTP DWORD PTR SS:[ESP+C]
00744179 |. D94424 0C |FLD DWORD PTR SS:[ESP+C]
0074417D |. E8 EE301A00 |CALL sro_clie.008E7270
00744182 |. D95C24 0C |FSTP DWORD PTR SS:[ESP+C]
00744186 |. D94424 0C |FLD DWORD PTR SS:[ESP+C]
0074418A |. D95C24 0C |FSTP DWORD PTR SS:[ESP+C]
0074418E |. D94424 0C |FLD DWORD PTR SS:[ESP+C]
00744192 |. D94424 08 |FLD DWORD PTR SS:[ESP+8]
00744196 |. D8D9 |FCOMP ST(1)
00744198 |. DFE0 |FSTSW AX
0074419A |. F6C4 41 |TEST AH,41
0074419D |. 75 12 |JNZ SHORT sro_clie.007441B1
0074419F |. 8BB6 E8000000 |MOV ESI,DWORD PTR DS:[ESI+E8]
007441A5 |. 85F6 |TEST ESI,ESI
007441A7 |. 74 08 |JE SHORT sro_clie.007441B1
007441A9 |. D95C24 08 |FSTP DWORD PTR SS:[ESP+8]
007441AD |. 8BFE |MOV EDI,ESI
007441AF |. EB 02 |JMP SHORT sro_clie.007441B3
007441B1 |> DDD8 |FSTP ST
007441B3 |> A1 2090A800 |MOV EAX,DWORD PTR DS:[A89020]
007441B8 |> F605 2490A800 >|TEST BYTE PTR DS:[A89024],1
007441BF |. 74 09 |JE SHORT sro_clie.007441CA
007441C1 |. 8325 2490A800 >|AND DWORD PTR DS:[A89024],FFFFFFFE
007441C8 |. EB 08 |JMP SHORT sro_clie.007441D2
007441CA |> 8B40 0C |MOV EAX,DWORD PTR DS:[EAX+C]
007441CD |. A3 2090A800 |MOV DWORD PTR DS:[A89020],EAX
007441D2 |> 85C0 |TEST EAX,EAX
007441D4 |.^0F85 26FFFFFF \JNZ sro_clie.00744100
007441DA |. 5E POP ESI
007441DB |> 8BC7 MOV EAX,EDI
007441DD |. 5F POP EDI
007441DE |. 83C4 20 ADD ESP,20
007441E1 \. C3 RETN
as we know, the grab function should loop through all loots in the ground, and select the one with the lowest distance to us.
so to start this, we will directly step into the loop, olly shows us.
Code:
00744100 |> 8DB0 34FFFFFF /LEA ESI,DWORD PTR DS:[EAX-CC]
00744106 |. 85F6 |TEST ESI,ESI
00744108 |. 0F84 AA000000 |JE sro_clie.007441B8
..........................................................................................
007441CA |> 8B40 0C |MOV EAX,DWORD PTR DS:[EAX+C]
007441CD |. A3 2090A800 |MOV DWORD PTR DS:[A89020],EAX
007441D2 |> 85C0 |TEST EAX,EAX
007441D4 |.^0F85 26FFFFFF \JNZ sro_clie.00744100
i've removed some lines, to keep it short.
as we see, EAX - 0xCC gets loaded into ESI. now we should take a look above the loop, to see, where EAX gets set.
a few lines above the loop, we find this line:
Code:
007440DE |. A1 1890A800 MOV EAX,DWORD PTR DS:[A89018]
now we'll take a look at the end of the grap function, to see what gets returned. the returned register should be the id of the item, with the lowest distance to our char. if we found the output, we'll trace it back to see where it gets read from the memory:
Code:
0074419F |. 8BB6 E8000000 |MOV ESI,DWORD PTR DS:[ESI+E8]
007441AD |. 8BFE |MOV EDI,ESI
007441DB |> 8BC7 MOV EAX,EDI
so the id of the item should be stored in [ESI+0xE8]
when this was done, i've build a simple autoit tool, to list up what i've found out so far:
Code:
$pid = WinGetProcess('[CLASS:CLIENT]')
$mid = OpenProcess($pid)
$EAX = ReadProcessMemory($mid, 0xA89018)
Do
$ESI = $EAX - 0xCC
$id = ReadProcessMemory($mid, $ESI + 0xE8)
ConsoleWrite('ID: '&Hex($id)&@CRLF)
$EAX = ReadProcessMemory($mid, $EAX+0xC)
Until $EAX = 0
CloseHandle($mid)
as i ran the tool, i've noticed, that the tool did list way to many ids. when i took a deeper look at the ids, i've noticed, that mobs players and npcs also got listed.
since the pickup function should only list items, it had to detect items in the loop. so i went back into the loop.
the first thing thats done in the loop, looks like this:
Code:
00744113 |. 8BCE |MOV ECX,ESI
00744115 |. E8 B6921D00 |CALL sro_clie.0091D3D0
0074411A |. 84C0 |TEST AL,AL
0074411C |. 0F84 91000000 |JE sro_clie.007441B3
it looks like a function gets called. in case of a fail, the grab-function skips that object.
if we follow the call, we will find something like this:
Code:
0091D3DD |. 8B11 MOV EDX,DWORD PTR DS:[ECX]
0091D3E0 |. 8B02 MOV EAX,DWORD PTR DS:[EDX]
so now we could assume, that eax stores our current object type.
adding this part to our source, will show us, if it realy works like that:
Code:
$pid = WinGetProcess('[CLASS:CLIENT]')
$mid = OpenProcess($pid)
$EAX = ReadProcessMemory($mid, 0xA89018)
Do
$ESI = $EAX - 0xCC
$type = ReadProcessMemory($mid, ReadProcessMemory($mid, $ESI))
$id = ReadProcessMemory($mid, $ESI + 0xE8)
ConsoleWrite('Type: '&Hex($type)&@CRLF)
ConsoleWrite('ID: '&Hex($id)&@CRLF)
$EAX = ReadProcessMemory($mid, $EAX+0xC)
Until $EAX = 0
CloseHandle($mid)
now we can log all kinds of objects, in our range.
i've spend some more time in analyzing the code around ESI and i've found some more, quite interesting stuff.
in the end my function for zszc looked like this:
Code:
Func recognize_objects($pid)
Local $type_mob = 0x739910, $type_item = 0x7442D0, $type_player = 0x740BE0, $type_me = 0x73F8B0, $type_npc = 0x73A8A0, $type_teleport = 0x747340
Local $mid, $object, $base, $name, $type, $id, $x, $y, $my_x, $my_y, $static_id, $distance, $last_distance = 0xFFFFFF
$mid = OpenProcess($pid)
$object = ReadProcessMemory($mid, 0xA89018)
Do
$base = $object - 0xCC
If ReadProcessMemory($mid, $base + 0x118) > 16 Then
$name = ReadProcessMemory($mid, ReadProcessMemory($mid, $base + 0x104), "char[200]")
Else
$name = ReadProcessMemory($mid, $base + 0x104, "char[200]")
EndIf
$type = ReadProcessMemory($mid, ReadProcessMemory($mid, $base))
$static_id = ReadProcessMemory($mid, $base + 0x184)
$id = ReadProcessMemory($mid, $base + 0xE8)
$x = BitRotate(Execute(ReadProcessMemory($mid, $base + 0x78, "byte[1]")) * 3 - 0x195, 6) - Int(ReadProcessMemory($mid, $base + 0x7C, "float") / (-10))
$y = BitRotate(Execute(ReadProcessMemory($mid, $base + 0x79, "byte[1]")) * 3 - 0x114, 6) - Int(ReadProcessMemory($mid, $base + 0x84, "float") / (-10))
$distance = Sqrt(Abs($my_x - $x) ^ 2 + Abs($my_y - $y) ^ 2)
Switch $type
Case $type_me
$my_x = $x ; if we found ourself as object, we save our position to
$my_y = $y ; calculate the distance between us and the other objects
Case $type_mob
ConsoleWrite('Mob Name: '&$name&'('&$static_id&')'&' found!'&@CRLF)
ConsoleWrite(' ID to Select: '&$id&@CRLF)
ConsoleWrite(' Position: '&$x&','&$y&@CRLF)
ConsoleWrite(' Distance to us: '&Round($distance, 2)&@CRLF)
Case $type_item
ConsoleWrite('Item Name: '&$name&'('&$static_id&')'&' found!'&@CRLF)
ConsoleWrite(' ID to Select: '&$id&@CRLF)
ConsoleWrite(' Position: '&$x&','&$y&@CRLF)
ConsoleWrite(' Distance to us: '&Round($distance, 2)&@CRLF)
Case $type_player
ConsoleWrite('Player Name: '&$name&'('&$static_id&')'&' found!'&@CRLF)
ConsoleWrite(' ID to Select: '&$id&@CRLF)
ConsoleWrite(' Position: '&$x&','&$y&@CRLF)
ConsoleWrite(' Distance to us: '&Round($distance, 2)&@CRLF)
Case $type_npc
ConsoleWrite('NPC Name: '&$name&'('&$static_id&')'&' found!'&@CRLF)
ConsoleWrite(' ID to Select: '&$id&@CRLF)
ConsoleWrite(' Position: '&$x&','&$y&@CRLF)
ConsoleWrite(' Distance to us: '&Round($distance, 2)&@CRLF)
Case $type_teleport
ConsoleWrite('Teleport Name: '&$name&'('&$static_id&')'&' found!'&@CRLF)
ConsoleWrite(' ID to Select: '&$id&@CRLF)
ConsoleWrite(' Position: '&$x&','&$y&@CRLF)
ConsoleWrite(' Distance to us: '&Round($distance, 2)&@CRLF)
EndSwitch
$object = ReadProcessMemory($mid, $object + 0xC)
Until $object <= 0
CloseHandle($mid)
EndFunc
the output looked like this:
later i've found out, that its even possible to read all informations about the items other players wear, from the code stored around ESI. but since i was not interested in those informations, i did not add them to the source.
|
|
|
|
09/18/2012, 15:47
|
#8
|
elite*gold: 0
Join Date: Feb 2010
Posts: 178
Received Thanks: 4
|
so....ich hab mir lolkops post ma durchgelesen.....
es sieht für mich ziemlich kompliziert aus....da ich mich ja noch nicht so lange mit autoit beschäftige
ich hab jedoch mal die methode von omer36.....ich hab jetzt auch eine adresse gefunden.....ich hab auch sro merhmals geschlossen und wieder gesucht...es kommt immer die gleiche adresse heraus
So nun wollt ich testen ob es auch die richtige adress ist....
[spoiler]
[code]
#RequireAdmin
#include <NomadMemory.au3>
$pid = 5148
$info = _MemoryOpen($pid)
$read = _MemoryRead(0x237C8858, $info)
While 1
If _MemoryWrite(0x237C8858, $info, 100) = True Then
Send ("1")
EndIf
WEnd
[code\]
[spoiler\]
jdeoch wenn ich dann ins spiel gehe drückt er ununterbrochen eins....selsbt als ich das spiel beendet hab macht er weiter....mach ich einfach nur nen dummen fehler oder wie siehts aus?
Schonmal danke für eure hilfe und danke im vorraus für die nächsten posts
Gruß Mo
|
|
|
 |
Similar Threads
|
Frage zu MMORPG's
06/03/2011 - Metin2 - 10 Replies
Hey Leute, ich wollte mal wieder so ein MMORPG anfangen, weis aber nicht welches sich lohnt. Es sollte gratis sein bzw. keine monatlichen Gebühren und es soll alles passen und viele Leute sollen es spielen.
Metin2
4Story
etc... welches soll ich nehmen?!
Wäre nett wenn ihr mal euer Game posted und mir sagen könnt, welches das beste ist.
|
MMORPG frage
02/26/2011 - Main - 5 Replies
Kennt ihr ein MMORPG free auf Deutsch wo das Kampfsystem wie auf Last Chaos oder von Two moons ist?
Danke
|
Frage bezüglich MMORPG's
02/01/2011 - General Gaming Discussion - 0 Replies
Hallo Com,
Ich habe vor kurzer Zeit mit Maestia begonnen,das gefällt mir eigentlich relativ gut,wird allerdings langsam langweilig,gibt übrigens auch eine Section. Davor habe ich 4Story gespielt,das hat mir gefallen,weil man einfach alles kaputt hacken konnte. Von Onehit bis NoMiss war alles dabei, das hat wirklich Spaß gemacht und deswegen wollte ich mal nachfragen bei welchem MMORPG das sonst noch möglich ist? Mir ist nämlich keins bekannt. Wäre schön wenn es bei Maestia ginge doch dieses...
|
[Frage] Welches MMORPG?
12/12/2010 - Off Topic - 18 Replies
Hey
ich wusste nicht in welche Section sowas rein kommt dann hab ichs mal im OT gemacht.
Ich bin auf einer suche nach einem Guten MMORPG sowas wie WoW aber ambesten wenn es kostenlos wäre.
MfG rianriffin
|
MMORPG Frage
12/28/2009 - Main - 17 Replies
HI alle zusammen,
ich zocke gerne online games (MMORPG`s)
und mir fällt eifach keines mehr ein zu zockn
jedenfalls hab ich keine lust mir vieles runterzuladen was müll ist
ich bitte euch um nen rat welches game ich zocken sollte weil
meine lust begrenzt ist mit dem ruterladen (dsl 768)
Naja das sollte es haben :
-gute grafik
-kostenlos
|
All times are GMT +1. The time now is 03:32.
|
|