win32asm Ram auslesen

Hier könnt ihr sowohl zur x86 Architektur als auch zu Win32ASM Fragen stellen.

Moderatoren: crack, Marwin, Krüsty

Antworten
Milliways
Newbie
Beiträge: 4
Registriert: Sonntag 8. August 2004, 20:01

Beitrag von Milliways » Sonntag 8. August 2004, 20:06

Hi Jungs

Ich bin ganz dummer noob und ich brauche eine funktion die folgendes tut:
Das ganze bitte in win32asm code:

lese eine bestimmte speicheradresse die ersten 4 byts (DWORD) aus. Merke dir was da steht. (was da stehz ist ja ein zahlenwert, fals ihr das wissen müsst)
Schreibe in eine andere Speicheradress was du dir gemerkt hast!

Ich hoffe nicht das das ein problem ist. Für mich schon und ich währe euch echt dankbar wenn ihr das für mich hin bekommt!

Benutzeravatar
Marwin
Moderator
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland
Kontaktdaten:

Beitrag von Marwin » Montag 9. August 2004, 16:49

Hallo Milliways,

wenn ich dich richtig verstanden habe, dann sollte es der folgende Code sein, den du suchst:

Code: Alles auswählen

mov eax, [esi]       ;-- EAX enthält nun den Wert von der Adresse, welche in ESI gespeichert ist
mov [edi], eax       ;-- die Speicherstellen an der Adresse, welche in EDI gespeichert ist, enthält nun den Wert aus EAX
Grüße, Marwin

Milliways
Newbie
Beiträge: 4
Registriert: Sonntag 8. August 2004, 20:01

Beitrag von Milliways » Montag 9. August 2004, 17:14

od wie sag ich ihm dass er die 4byts nimmt und nicht mehr?? oder ist das schon damit gesagt??

Code: Alles auswählen

<CODE> mov eax, [90F790]
<CODE> mov [9AED60], eax 
funktioniert leider nicht so wie ich mir gedacht habe! auch ohne coede vorweg nicht

Benutzeravatar
Marwin
Moderator
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland
Kontaktdaten:

Beitrag von Marwin » Montag 9. August 2004, 19:45

Hallo Milliways,

poste doch einmal bitte etwas mehr von dem Code den du verwendest.
Es werden automatisch 4 Byte eingelesen, da das Register EAX 4 Byte breit ist. Nimm mir das jetzt bitte nicht übel, aber ich glaube, dass du dich noch nicht sehr mit Assembler beschäftigt hast. Ich würde dir dringend empfehlen ein Tutorial zu lesen. Egal ob du dich in der Freizeit oder in der Schule mit Assembler beschäftigst/beschäftigen musst.

Grüße, Marwin

Milliways
Newbie
Beiträge: 4
Registriert: Sonntag 8. August 2004, 20:01

Beitrag von Milliways » Montag 9. August 2004, 20:29

also ich möchte in Game Trainer Studio (falls es wer kennt) eine funktion basteln die ein speicher segment ausließt und in ein anderes schreibt!

Ich bin absoluter NOOB hab ich doch gesagt sorrey ;)

Code: Alles auswählen

<Name=Button - Width 2><Data>1650</Data>
<Name=Button - Height 2><Data>300</Data>
<Name=Button - Top 2><Data>3015</Data>
<Name=Button - Left 2><Data>120</Data>
<Name=Button - Exists 2><Data>Yes</Data>
<Name=Button - Caption 2><Data>New Button</Data>
<Name=Button - Function Type 2><Data>Poke</Data>
<Name=Button - HotKeyMain 2><Data></Data>
<Name=Button - HotKeyControl 2><Data></Data>
<Name=Button - HotKeyAlt 2><Data></Data>
<Name=Button - HotKeyShift 2><Data></Data>
<Name=Button - Constants 2><Data></Data>
<Name=Button - ASM 2><Data></Data>
<Name=Button - Message Caption 2><Data>New Trainer</Data>
<Name=Button - Message Text 2><Data></Data>
<Name=Button - Message Icon 2><Data>MB_ICONINFORMATION</Data>
<Name=Button - Pokes 2><Data>mov eax, [90F790]</Data>
<Data>mov [9AED60], eax </Data>
<Name=Button - Freeze Enabled 2><Data>0</Data>
<Name=Button - Freeze Caption 2><Data></Data>
<Name=Button - Freeze Stay 2><Data>0</Data>
<Name=Button - BitMap Enabled 2><Data>False</Data>
<Name=EditBox - Width 2><Data>1650</Data>
<Name=EditBox - Height 2><Data>285</Data>
<Name=EditBox - Top 2><Data>570</Data>
<Name=EditBox - Left 2><Data>150</Data>
<Name=EditBox - Exists 2><Data>Yes</Data>
<Name=EditBox - Constants 2><Data></Data>
<Name=EditBox - Function 2><Data>EditBox 90F790 DWORD</Data>
<Name=EditBox - Width 3><Data>1650</Data>
<Name=EditBox - Height 3><Data>285</Data>
<Name=EditBox - Top 3><Data>2175</Data>
<Name=EditBox - Left 3><Data>105</Data>
<Name=EditBox - Exists 3><Data>Yes</Data>
<Name=EditBox - Constants 3><Data></Data>
<Name=EditBox - Function 3><Data>EditBox 9AED60 DWORD</Data>
<Name=Label - Width 2><Data>615</Data>
<Name=Label - Height 2><Data>255</Data>
<Name=Label - Top 2><Data>210</Data>
<Name=Label - Left 2><Data>150</Data>
<Name=Label - Exists 2><Data>Yes</Data>
<Name=Label - Caption 2><Data>Startxray</Data>
<Name=Label - Width 3><Data>480</Data>
<Name=Label - Height 3><Data>255</Data>
<Name=Label - Top 3><Data>1845</Data>
<Name=Label - Left 3><Data>135</Data>
<Name=Label - Exists 3><Data>Yes</Data>
<Name=Label - Caption 3><Data>Aktuell</Data>
<Name=WM_CREATE Variale><Data></Data>
<Name=DataSection><Data></Data>
<Name=Quit Message - Enabled><Data>1</Data>
<Name=Quit Message - Caption><Data>Quit</Data>
<Name=Quit Message - Message><Data>Are you sure you wish to exit?</Data>
<Name=Quit Message - Icon><Data>MB_ICONEXCLAMATION</Data>
<Name=Instances Message - Enabled><Data>1</Data>
<Name=Instances Message - Caption><Data>Error</Data>
<Name=Instances Message - Message><Data>You cant have more than one instance of this trainer running at the same time</Data>
<Data>This trainer will now terminate</Data>
<Name=Instances Message - Icon><Data>MB_ICONEXCLAMATION</Data>
<Name=Instances Message - Continue><Data>0</Data>
<Name=Main Dialog - Caption><Data>New Trainer</Data>
<Name=Main Dialog - Width><Data>3045</Data>
<Name=Main Dialog - Height><Data>4755</Data>
<Name=Main Dialog - Top><Data>90</Data>
<Name=Main Dialog - Left><Data>60</Data>
<Name=Settings - BitMap Name><Data></Data>
<Name=Settings - Icon Name><Data>icon.ico</Data>
So schaut ein teil aus und ich denke das das ne abgewandelte form von win32asm ist! naja

Benutzeravatar
Marwin
Moderator
Beiträge: 307
Registriert: Donnerstag 8. Mai 2003, 21:19
Wohnort: Seelow, Deutschland
Kontaktdaten:

Beitrag von Marwin » Dienstag 10. August 2004, 08:25

Milliways,

das sieht in meinen Augen gar nicht wie Assembler aus. Es ist vielleicht eher eine Liste von Dialog-Elementen mit ihren entsprechenden Eigenschaften.

Grüße, Marwin

Milliways
Newbie
Beiträge: 4
Registriert: Sonntag 8. August 2004, 20:01

Beitrag von Milliways » Dienstag 10. August 2004, 19:54

achso nochmal sicher das das nicht

Code: Alles auswählen

movi eax, [esi]     
movi [edi], eax 
sein kann? wo ist der unterschied??

CDW
Alter Hase
Beiträge: 62
Registriert: Donnerstag 2. Oktober 2003, 17:17
Kontaktdaten:

Beitrag von CDW » Freitag 13. August 2004, 22:23

hm, du willst mit

Code: Alles auswählen

mov eax, [90F790]
 mov [9AED60], eax
den RAM auslesen und es geht nicht, lass mich raten - es kommt ein speicherzugriffsfehler.
Das ist "normal" weil ein multitasking os wie Win einem Programm 32-bit Ram "ungeteilt" zur verfügung stellt - sonst würden sich ja die Programme überschneiden und es würde zu Fehlern führen. Wie dem auch sei, ich denke dass ein paar winapis wie:
OpenProcess, ReadProcessMemory/WriteProcessMemory
dir hier mehr helfen.

Antworten