Automatisierung/Bot Coding (Ohne DLL!)

08/14/2016 22:25 Benhero#1
Hey leute :)

Habe google bereits benutzt und nur die Möglichkeit einer DLL gefunden.
Da dies aber für mich nicht infrage kommt, (Kein Gegenstand der Frage. Also bitte nicht vor/nachteile auflisten :D danke) bräuchte ich eine möglichkeit um Spezielle Mechanismen (Pickup, Angreifen, etcpp) zu simulieren.

Bei vielen Spielen gibt es die Möglichkeit dies über einen Hotkey zu lösen.
Leider aber nicht bei allen. Es gibt dennoch die Möglichkeit Items aufzuheben (anklicken der Items z.B.) Oder eine bestimmte Fertigkeit (Pickup) nutzen um dies zu realisieren. Wie schaffe ich es diese Spiel Interne Funktion aufzurufen?

Wie sieht es mit den nötigen Parametern aus (Insofern dort welche benötigt werden. (z.B. Unique Item ID (PickUp), Virutal Mob ID (Attack Packet))

Ich hoffe ich habe es halbwegsverständlich ausgedrückt und hoffe auch viele hilfreiche Antworten mit ggf. möglichen Pseudocodes :)

Mit freundlichen Grüßen
Benhero
08/14/2016 22:44 BladeTiger12#2
Schreib mit WriteProcessMemory in den Speicher des anderen Programmes deine Funktion. (Kannst dir auch Bytes allozieren mit VirtualAlloc...) Halt die Bytes alle reinschreiben. Dann mit CreateRemoteThread diese Adresse ausführen. Das wars :D.
08/14/2016 22:54 Benhero#3
Was bringt es mir meine Funktion rein zu schreiben? Ich habe dir pickup Funktion ja nicht.... Ein Code Beispiel wäre nicht schlecht...
08/14/2016 22:59 Jeoni#4
Wir haben sie auch nicht.
Musst sie mittels Reverse Engineering im Spiel finden. Dann eine kleine Funktion (direkt in Assembler) schreiben, um sie aufzurufen. Die kleine Funktion wird dann von extern mittels CreateRemoteThread aufgerufen. Die eigene Funktion wird benötigt, weil CreateRemoteThread nur ein Parameter übergibt, die Spielfunktion aber u.U. mehr benötigt. Ein Codebeispiel kann man dazu nicht machen, weil es stark fallabhängig ist.
Mit freundlichen Grüßen
Jeoni
08/14/2016 23:07 Benhero#5
Damit kann ich schon mehr anfangen :) ich schaue mal was ich damit hingekomme. Über weitere antworten und ggf Möglichkeiten freue ich mich sehr :)

Benhero
08/14/2016 23:11 Jeoni#6
Wenn es nur darum geht, dass Ingame ein Tastendruck simuliert werden soll, könnte eventuell auch schon SendMessage reichen (gibt's sicher auch Literatur zu, habe das selber noch nicht gemacht). Je nach Spiel könnte das auch fehlschlagen, aber ist zumindest einen Versuch wert, weil wesentlich einfacher / schneller (also, einlesen vorrausgesetzt) als eine Funktion vom Spiel mit Reverse Engineering zu finden.
Zudem kann ein Patch vom Spiel die gesuchte Funktion verändern, so dass man neusuchen muss. Solange SendMessage funktioniert, muss man da eigentlich prinzipiell nichts nachbessern, was diese Methode auch besser wartbar macht.
Mit freundlichen Grüßen
Jeoni
08/14/2016 23:17 Benhero#7
SendMessage benutze ich aktuell :) Aber leider ist dies nur auf das Aktuelle Spiel (Nostale) Anwendbar. Ich würde aber gerne die Funktion/Fähigkeit verwenden die das Spiel bietet (eine Pickup Funktion die auf einen Hotkey gelegt werden kann) Ich würde diese Funktion aber direkt aufrufen ohne Sie erst auf die Funktionsleiste ziehen zu müssen. Ich denke dafür werde ich die von dir angegebene Funktion/Möglichkeit nutzen, insofern keine andere möglichkeit besteht.

Grüße
08/15/2016 00:20 BladeTiger12#8
Es gibt von NosTale ziemlich viele Public-SendPacket Funktionen.
Damit könntest du es auch einfach realisieren. Das wäre eine weitere Möglichkeit.
Nur so viel ich weiß, bringt dir die Pickup-Funktion von NosTale alleine nichts, da man
vorher mit der Walk-Funktion zu dem Item laufen muss, sonst wäre es ja Range-Pickup was bei NosTale nicht geht. Wenn du die Pickup-Funktion suchen willst, such am Besten nach dem String "get". Wenn du da ein bisschen zurückgehst, wirst du die Funktion ziemlich schnell finden. Wenn du die Lauf-Funktion suchst, einfach nach "walk" suchen.
08/15/2016 11:40 Benhero#9
Bei nostale ist es ja auch nicht das Problem ^^ sondern eher später bei anderen games die solche strings nicht haben. Trotzdem danke. Den das mit dem get wusste ich nicht. Habe nach pickup etc gesucht.

Grüße