| Autor |
Beitrag |
Neidhard von Reuental
      
Beiträge: 268
XP
BDS 2006 Prof
|
Verfasst: Fr 12.12.03 16:59
hi ich habe hier einen beispielcode für einen trainer vor mir liegen aber blicke irgendwie nicht richtig durch.
kann mir mal jemand erklären was der code genau macht?
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99:
| .586p GetBase macro Reg call $+5 pop Reg sub Reg,$-1 endm
Code segment use32 org 0
dd offset End_of_file dw 1 ; Version dd End_of_header ; Size of header dd offset Selections dd offset Selections_Text dd offset ID_List dd offset Entry dd 0 ; res1 dd 0 ; res2 db 0 ; Master Enable
End_of_header equ $
Entry:
; ; this code will be called after the game is loaded but before ; it is launched , it should be able to check for Pal/NTSC version ; and if multi xbe files is used in the game. ;
mov edi,010114h ; xbe Time and Date cmp dword ptr [edi],03DBF9447h jne Exit
; ; Get base of this start module location ;
; GetBase ebp ; no need, ebp point to this start module location
cld ; ; is credit trainer enabled ; cmp [Sel_Credits+ebp],0 je Exit mov al,0ebh mov edi,0105fb1h ; jmp
stosb
Exit:
ret
ID_List label dword dd 04b4e0013h ; Frogger Beyond id dd 0
Selections label byte
Sel_Credits db 0 Sel_Noreload db 0
Selections_Text label word dd offset Text_Menu dd offset Text_Info
dd offset text_credits ; dd offset text_noload
dd 0
Text_Menu db 'Frogger Beyond +1',0 Text_Info db 'Trainer By EvoX Team :-)',0 db 0 ; End of info
text_credits db 'Unlimited Lives',0 ;text_noload db 'No reload',0
End_of_file equ $
Code ends
end |
das für mich wichtigste ist was ab "entry" geschieht. der code davor bleibt immer der gleiche.
|
|
Chatfix
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: Fr 12.12.03 17:43
Welche Sprache ist das?
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
ixtreme
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 12.12.03 17:49
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: Fr 12.12.03 17:49
wie schon im Titel steht ist das Assembler...
und falls du die Kommentare meinst: die sind Englisch
oder meinst du was ganz andres??
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Fr 12.12.03 18:49
hallo
ich probier es mal
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| mov edi,010114h cmp dword ptr [edi],03DBF9447h jne Exit cld cmp [Sel_Credits+ebp],0 je Exit mov al,0ebh mov edi,0105fb1h ; jmp stosb Exit: ret |
Gruß
Ken
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
Chatfix
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: Fr 12.12.03 18:58
aso, sah ohne die delphitags bzw generell so komisch aus...
ich wusste nicht das ASM die abk. für assambler ist, man lernt ja nie aus...
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
Neidhard von Reuental 
      
Beiträge: 268
XP
BDS 2006 Prof
|
Verfasst: Sa 13.12.03 10:03
hat mir schon stück weitergeholfen
"stosb" ist irgend wie nen lückenfüller
mega thx 
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Sa 13.12.03 13:53
| Neidhard von Reuental hat folgendes geschrieben: | | "stosb" ist irgend wie nen lückenfüller |
Ich würde es eher als Store String Byte, wobei das String hier nicht als Zeichenkette zu verstehen ist, sondern als Array of Byte/Char.
stosb schreibt den in al stehenden Wert an die Speicheradresse ds:[edi] und erhöht danach edi
| Zitat: | | [edi] bedeutet der tatsächliche inhalt |
[edi] liefert dir den Wert, der an der Speicheradresse edi liegt.
[edi] in Pascalschreibweise wäre: edi^
cld setzt dir Richtung für die stosX Befehle. Ist das direction-Flag gelöscht (cld = clear direction flag), wird edi durch stosX erhöht, sonst (std = set direction flag) dekrementiert. Man sollte nach einem Aufruf von std die Richtung wieder mit cld herstellen, da viel Code sich darauf verlässt.
| Zitat: | | cmp [Sel_Credits+ebp],0 // hier vergleicht der code den inhalt von SEL_Credits + ebp mit 0 |
Der Satz ist zweideutig. Hier wird der Inhalt der Speicheradresse, die durch Sel_Credits+EBP Adressiert wird mit 0 verglichen.
| Zitat: | mov edi,010114h // hier schreibt er den wert von edi an adresse 010114h
mov al,0ebh //schreibe den inhalt von al an adresse 0ebh
mov edi,0105fb1h ; jmp //schreibe den inhalt von edi an 0105fb1h |
Beides ist falsch. MOV kopiert den Wert rechts in das Register links.
Man merke: Unter MASM/TASM werden Speicherstellen immer mit [ ] angesprochen. Das [ ] entspricht also dem Dereferenzieren mit ^ unter Pascal.
_________________ Ist Zeit wirklich Geld?
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Sa 13.12.03 15:16
| AndyB hat folgendes geschrieben: |
Beides ist falsch. MOV kopiert den Wert rechts in das Register links. |
Ja ja, alter besserwisser *G*  Ich habe nur mein beschränktes Assemblerwissen hervorgekramt. Beim MC68000 ist es allerdings so, wie ich geschrieben hab. Da wird der links nach rechts kopiert. Hab ich extra gerade nochmal nachgeschlagen.
Gruß
Ken
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Sa 13.12.03 17:09
Beim NASM wird auch links nach rechts kopiert aber eben nicht beim Microsoft Macro Assembler (MASM) und Borland Turbo Assembler (TASM).
_________________ Ist Zeit wirklich Geld?
|
|
Neidhard von Reuental 
      
Beiträge: 268
XP
BDS 2006 Prof
|
Verfasst: Sa 13.12.03 19:21
hab geschaft was ich machen wollte. danke für eure hilfe.
mein asm-wissen beruht nur auf bruchstücke meiner c64-zeit 
|
|