Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 20:26

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Kleines ASM Problem

Discussion on Kleines ASM Problem within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
CracKPod's Avatar
 
elite*gold: 0
Join Date: May 2006
Posts: 41
Received Thanks: 11
Kleines ASM Problem

Hey,

Ich wäre sehr froh darüber wenn mir jemand helfen könnte der sich mit ASM auskennt.

Ich habe folgendes Problem:

Ich möchte einen Bot für ein MMORPG schreiben. Dieses MMORPG hat einen Launcher (*.exe) und das eigentliche Spiel (*.dat) was der Launcher startet.
Die *.dat Datei wird anscheinend regelmäßig vom Launcher so verändert das sich einige der Adressen ändern.

-> Vorab sei gesagt: Die Pointer auf die Adressen ändern auch ihre Werte! <-

14:30 - Adresse ist richtig
--- Neustart etc.
15:00 - Adresse ist immer noch richtig (auch an anderen PC'S)
16:00 - Andere Adresse

Deswegen wollte ich jetzt folgendes machen:

Wenn ich im Spiel Energie Verliere:

Einen JMP zu einen CODECAVE dort den richtigen Befehl ausführen den ich im Original mit einem CALL ersetzt habe und dann am ende des Code Caves einfach RET. Vor oder direkt nachdem originalen Befehl packe Ich dann eine Anweisung in dieser Art:

Also:

Original ASM
Code:
[...]
MOV     EAX, EDI
MOV     DWORD PTR [EBX+4C], EAX <-- Original ASM
MOV     EDX, DWORD PTR [EBX+48]
[...]
Editiertes ASM:
Code:
[...]
MOV     EAX, EDI
MOV     CALL 77FA920B <-- Springe zu Code Cave
MOV     EDX, DWORD PTR [EBX+48]
[...]
Code Cave:
Code:
77FA9209 JMP 77FA9240 <- Springe zum Ende Des Code Caves
77FA920B <- Start
//Mein Code

MOV     DWORD PTR [0018586F], EAX <- Schreibe den Wert an eine statische Adresse (EAX = Leben)
MOV     DWORD PTR [EBX+4C], EAX <- Originale Anweisung ausführen

//Mein Code
77FA923F RET <- Springe zum originalen Speicherbereich
77FA9240 <- Ende des Code Caves
Das funktioniert auch alles (selbst wenn ich das hier jetzt Falsch aufgeschrieben habe).
Also das Spiel crashed nicht etc. aber etwas ist merkwürdig.
Der Wert der Adresse 0018586F (Also die statische Adresse) wird jetzt ab und zu der Wert des Lebens meines Charakters zugewiesen, (<- Das will ich!!), den Wert des Gegners (<- Nützlich.. will ich aber nicht!) und einen unbekannten wert.

Also wie kann ich das Problem beheben?
Scheint irgendwie so als hätte EAX oft einen anderen Wert, das heißt im Original wird "MOV DWORD PTR [EBX+4C], EAX" öfters aufgerufen von verschiedenen stellen im Code und da dort jetzt Call steht wird zu meinem Code Cave gesprungen und dort der neue Wert von EAX in meine statische Adresse geschrieben.

Kann mir jemand verraten wie ich das verhindere (falls es so stimmt) oder was ich besser machen kann?

Tut mir Leid falls ich voll die Scheiße gelabert habe aber das war alles mehr oder weniger Reverse Engineering ich habe mich noch nie mit ASM befasst und das war alle mehr oder weniger geraten und von der Funktionsweise der anderen Befehle abgeleitet.

MfG,
CracKPod

PS:
Falls es Fragen gibt fragt! Es kann durchaus sein das ich mir sehr undeutlich ausgedrückt habe.

PPS:
Falls jemand einen besseren Weg kennt nur zu , postet. Danke
CracKPod is offline  
Old 05/04/2008, 13:08   #2
 
mr.rattlz's Avatar
 
elite*gold: 0
Join Date: Aug 2005
Posts: 896
Received Thanks: 334
Wenn ich das beim Überfliegen richtig verstanden habe sollte es eigentlich genügen, wenn du einen Breakpoint auf den Punkt setzt, der von verschiedenen Adressen aufgerufen wird und dir dann ansiehst, wo der Codeteil liegt, von dem du die Daten haben willst.
mr.rattlz is offline  
Reply


Similar Threads Similar Threads
kleines Problem
08/29/2010 - Metin2 Private Server - 4 Replies
Hallo zusammen, ich hatte mir schon mal einen Metin2 Pserver gemacht bloß musste ich das Projekt einstampfen da mein PC nicht die leistung gebracht hatte um da zu spielen. Jetzt hatte ich mir vor kurzen einen neuen Rechner zu gelegt und habe mir ein neuen Pserver ein gerichtet, doch jetzt wenn ich den Client öffnen will bekomme ich immer diese meldung: http://s3.directupload.net/images/100829/lcpxj8jk .jpg doch ich kann damit nichts anfangen kann mir da nicht einer vllt helfen? wo ist...
kleines problem
07/28/2010 - Last Chaos - 2 Replies
Hallo ich habe da ein kleines problem also wen ich für längere zeit (ca 2 std) einen Laden auf mache und ihn schlissen will kommt bei mir immer Send error report Ja nein also an was kann das liegen ps ich spiele Ger /Katar ich Danke schon mal im Vorraus :)
Hab n kleines Problem...
07/25/2010 - Technical Support - 4 Replies
Mein Mac Mini geht irgendwie nicht mehr an, ich hatte den versehentlich am Donnerstag gewässert. Er ging bis gestern noch aber jetzt hat er immer wieder Stromausfälle wenn ich ihn aufstarte. (ich glaub die Hardware is soweit oke, wurde glt. Mal durchgeschüttelt). Kann mir bitte jemand sagen ob da was zu retten ist?
ein kleines problem als gm
05/07/2010 - Metin2 - 15 Replies
ich wollte mal wissen wie ich zb ein tritonschwert bekomme. ist ja code 279 aber was muss ich davor schreiben?
Kleines Problem
08/13/2009 - AutoIt - 2 Replies
Also zuerst mal Hi, und danke das ihr mir hilft also ich habe folgendes Problem: Ich habe Autoit v3 installiert und dann Scite4Autoit dazu. Aber das Menü für eine Oberfläche kommt nicht zum Vorschein kann mir da jemand helfen?. Also ich meine die Schaltfläche unter Tools mit dem man z.B Buttons und co erstellt ich bitte um hilfe. Mfg Gallanty



All times are GMT +1. The time now is 20:27.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.