|
You last visited: Today at 13:58
-
Did you know? elitepvpers has its own image host, epvpimg.com.
Inline Asm -> Wert aus Register in anderes Register schreiben
This is a discussion on Inline Asm -> Wert aus Register in anderes Register schreiben within the C/C++ forum part of the Coders Den category; Huhu,
die Frage klingt vielleicht etwas Blöd, aber ich würde gerne wissen, wie ich den Wert eines Registers in ein ...
03-15-2012, 19:21
|
#1
|
Boyka, Boyka, Boyka.!
Join Date: Jul 2010
Posts: 357
Received Thanks: 161
|
Inline Asm -> Wert aus Register in anderes Register schreiben
Huhu,
die Frage klingt vielleicht etwas Blöd, aber ich würde gerne wissen, wie ich den Wert eines Registers in ein anderes schreiben kann.
Wenn ich mov verwende wird lediglich die Speicheradresse auf das andere Register geschrieben und ich brauche den Wert in die Speicheradresse die mein Register hält.
Mein Inline Asm Code sieht folgendermaßen aus:
char *command;
[...]
code = "insert 1";
_asm {
mov edx, command;
};
Ist bestimmt einfach, wenn man weiß wie, aber bei Google findet man sogut wie garnichts nützliches über dieser "kleinen Fragen".
Danke im Voraus,
Max
__________________
Last edited by MaxMilimeter; 03-15-2012 at 21:35.
|
|
|
03-15-2012, 20:22
|
#2
|
Senior Member
Join Date: Sep 2006
Posts: 331
Received Thanks: 164
|
"Fehler: 'command' nichtdeklarierter Bezeichner" sollte dir der Compiler um die Ohren hauen.
Was willst du denn überhaupt machen? Das gesamte code Array in das Register schreiben? Das ist nicht machbar. Was ist command?
|
|
|
03-15-2012, 20:46
|
#3
|
Senior Member
Join Date: Nov 2009
Posts: 342
Received Thanks: 45
|
Du musst auch das Semikolon hinter dem Befehl wegmachen.
Code:
__asm mov eax, edx;
oder so was?
Code:
char* c = "test";
__asm mov eax, dword ptr ds:[ c ];
Last edited by yihaaa; 03-15-2012 at 20:55.
|
|
|
03-15-2012, 21:35
|
#4
|
Boyka, Boyka, Boyka.!
Join Date: Jul 2010
Posts: 357
Received Thanks: 161
|
@Nightblizard: char *command; sollte es heißen, das ist nicht das Problem.
Also die Register halten ja Speicheradressen. Was wiederum in diesen Speicheradressen enthalten ist, sieht man in Ollydbg im 'Dump-Fenster' und im Stack. Und genau diesen Inhalt möchte ich durch meinen eigenen ersetzen.
@yihaaa: soweit bin ich ja schon, das ändert lediglich die Adresse die in meinem Register gespeichert ist.
Es geht auch mit Semikolons, aber wenn es so üblich ist, kann ich die bei mehreren Anweisungen später auch weglassen, danke für den Tipp.
Last edited by MaxMilimeter; 03-15-2012 at 21:37.
|
|
|
03-15-2012, 21:38
|
#5
|
Senior Member
Join Date: Jul 2010
Posts: 388
Received Thanks: 195
|
Quote:
Originally Posted by MaxMilimeter
Huhu,
die Frage klingt vielleicht etwas Blöd, aber ich würde gerne wissen, wie ich den Wert eines Registers in ein anderes schreiben kann.
Wenn ich mov verwende wird lediglich die Speicheradresse auf das andere Register geschrieben und ich brauche den Wert in die Speicheradresse die mein Register hält.
Mein Inline Asm Code sieht folgendermaßen aus:
char *code;
[...]
code = "insert 1";
_asm {
mov edx, command;
};
Ist bestimmt einfach, wenn man weiß wie, aber bei Google findet man sogut wie garnichts nützliches über dieser "kleinen Fragen".
Danke im Voraus,
Max
|
Ein Register hat nur einen Wert. Nichts anderes. Wenn das Register eine Adresse enthält kannst du über ptr auf den Wert an der Adresse zugreifen.
Code:
mov eax, dword ptr [ebx]
oder
mov eax, byte ptr [ebx]
usw
|
|
|
03-15-2012, 21:49
|
#6
|
Boyka, Boyka, Boyka.!
Join Date: Jul 2010
Posts: 357
Received Thanks: 161
|
Okay verstehe, aber wie kann ich dann den Wert einer Adresse durch den Wert einer anderen Adresse ersetzen?
Edit:
Um es nochmal zu veranschaulichen:
In Ollydbg lässt sich der Inhalt von Adressen im Dump-Fenster sehen. Dieser lässt sich über Rechtsklick->Binary->Edit bearbeiten. Wie bekomme ich das mit ASM zustande?
Last edited by MaxMilimeter; 03-15-2012 at 21:53.
|
|
|
03-15-2012, 22:02
|
#7
|
Senior Member
Join Date: Jul 2010
Posts: 388
Received Thanks: 195
|
Quote:
Originally Posted by MaxMilimeter
Okay verstehe, aber wie kann ich dann den Wert einer Adresse durch den Wert einer anderen Adresse ersetzen?
|
Code:
mov eax, adresse 1
mov ebx, adresse 2
mov eax, dword ptr [eax]
mov dword ptr [ebx], eax
|
|
|
03-15-2012, 22:32
|
#8
|
Boyka, Boyka, Boyka.!
Join Date: Jul 2010
Posts: 357
Received Thanks: 161
|
Danke, das scheint schonmal ein Ansatz zu sein, allerdings werden irgendwie nur die ersten 4 Zeichen meines Strings kopiert und ein Teil des alten bleibt erhalten, wie bekomme ich den Rest rüber? :P
|
|
|
03-15-2012, 23:12
|
#9
|
Senior Member
Join Date: Jul 2010
Posts: 388
Received Thanks: 195
|
Quote:
Originally Posted by MaxMilimeter
Danke, das scheint schonmal ein Ansatz zu sein, allerdings werden irgendwie nur die ersten 4 Zeichen meines Strings kopiert und ein Teil des alten bleibt erhalten, wie bekomme ich den Rest rüber? :P
|
Ein String ist nichts anderes als eine Reihenfolge von Bytes (ein ASCII char ist 1 Byte groß) im Speicher die mit einem Nullbyte abgeschlossen wird. Ein 32bit Register hat eben nur 32 Bit = 4 Byte = dword. Wenn du den String in deinem Programm speichern möchtest weise die Adresse des ersten Bytes einem Zeiger zu. Für genauere Infos musst du schon damit rausrücken was du machen möchtest, aus deinem OP geht jedenfalls nicht viel hervor.
|
|
|
03-15-2012, 23:20
|
#10
|
Boyka, Boyka, Boyka.!
Join Date: Jul 2010
Posts: 357
Received Thanks: 161
|
Könntest du mir da vielleicht einpaar Befehle und wenn möglich ein kurzes Beispiel geben?
In Google findet man zu wenig über ASM.
Also mein Spiel sendet Pakete. Nun soll ein bestimmtes Paket durch mein eigenes ersetzt werden.
Die Pakete sehen in der Regel so aus:
say text
walk 94 23 24 23
Ein say hallo soll dann zum Beispiel in say bye geändert werden (müsste ja mit einer einfachen If Abfrage klappen oder?) und ich bin jetzt dabei erstmal das Paket zu ersetzen.
|
|
|
Similar Threads
|
| Thread |
Thread Starter |
Forum |
Replies |
Last Post |
|
Register -.-
|
Phillor |
Flyff PServer - Discussions / Questions |
3 |
11-14-2010 13:45 |
|
Wtf? Register?
|
DopeFlyff |
Flyff PServer - Discussions / Questions |
11 |
11-14-2010 11:38 |
|
Float Wert Schreiben
|
chesar |
General Coding |
7 |
08-21-2010 19:46 |
|
register
|
xStylo |
CO2 PServer - Discussions / Questions |
2 |
06-16-2010 11:03 |
|
I cant register
|
Tonic16 |
Cabal Main - Discussions / Questions |
3 |
05-31-2008 18:55 |
All times are GMT +2. The time now is 13:58.
|
|