|
|
#1 |
|
Handy Gott
Registriert seit: 17.11.2002
Beiträge: 2.723
![]() |
Hier gibt es ab sofort immer wieder ein Paar Tricks zum Thema selber Patche erstellen.
Wenn kein Feedback kommt wird das ganze wieder eingestellt. Kommen wir zum ersten Trick: am Beispiel S55 v20, geht aber auch mit jedem anderen Siemens. dieser Patch schreibt sich auf, von wo aus eine Routine (im Beispiel erstmal die PlaySound Routine) aufgerufen wurde und mit welchem Parameter. Die Adresse wird in den RAM geschrieben, Beispiel: ; RAM: ; 00C10A: F09E6300 --> Address: 639EF0 ; 00C10E: 2A00 --> BeepCode: 002A 0064AD0C: 8880F08C DA6100A2 0021A200: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 8880F08C88A088B088C088D0FCFAFCFB 0021A210: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FCFCFCFDECFDECFCECFBECFAD7600300 0021A220: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F6FC0AC1F6FD0CC1F6F80EC198D098C0 0021A230: FFFFFFFFFFFF 98B098A0DB00 Das ganze kann man sehr leicht für jeden anderen Call machen und diesen unter Beobachtung stellen. Dafür benötigen wir: - eine Routine die wir beobachten möchten - die ersten 4 Bytes der Routine die beobachtet werden soll AABBCCDD (ein oder zwei Befehle) - einen 8 Byte FF Block im Flash (Adresse (16MB): EEFFGG dann schreiben wir an die Adresse der Routine: DAEEGGFF und an EEFFGG: AABBCCDD FA6104A2 ; <-- Leerzeichen nur der Übersicht halber, müsste eigentlich so aussehen: AABBCCDDFA6104A2 natülich immer brav davor noch die originalen Werte für den undo hinschreiben. Beispiel "Tastensperre lösen beobachten": Routine steht an: 644FDA ; 00244FDA: 2E00E03C DA6136A2 dort standen die Bytes: 2E00E03C ; 0021A236: FFFFFFFFFFFFFFFF 2E00E03CFA6104A2 fertig. Ist doch gar nicht so schwer oder? |
|
|
|
|
|
#2 |
|
Handy Gott
Registriert seit: 17.11.2002
Beiträge: 2.723
![]() |
Den Source will ich euch natürlich auch nicht vorenthalten:
Code:
Patch_Address EQU 021A200h ;Free Space in Flash (CHANGE THIS)
Patch Section Code Word At Patch_address ; Start Patch at Patch_Address
main proc far ; start main of patch
;replaced commands
; (make an call from beginnig of PlaySound routine to this patch)
mov [-r0], r8
mov r8, r12
;main routine
mov [-r0], r10
mov [-r0], r11
mov [-r0], r12
mov [-r0], r13
pop r10
pop r11
pop r12
pop r13
push r13
push r12
push r11
push r10
extp #3, #3
mov 0C10Ah, r12
mov 0C10Ch, r13
mov 0C10Eh, r8
mov r13, [r0+]
mov r12, [r0+]
mov r11, [r0+]
mov r10, [r0+]
rets
main endp
Patch EndS
END
|
|
|
|
|
|
#3 |
|
Gast
Beiträge: n/a
|
Hallo Acidmrp!
Ich kenn mich nur ein bischen mit dem 8051 aus. Und deshalb gleich mal 2 Fragen: Wie ist denn der Speicherbereich beim SL45 aufgeteilt (data,idata,xdata,code)? Und was bewirken die Befehle [-r0] , [r0+] und extp ? |
|
|
|
#4 |
|
Handy Gott
Registriert seit: 17.11.2002
Beiträge: 2.723
![]() |
wegen dem Speicherbereich schaust du dir am besten die Unterlagen vom C167 an.
mit r0 wird der Stack gehandelt. Also: mov [-r0], r10 packt r10 auf den Stack und mov r10, [r0+] stellt es wieder her. extp heiß extended page. Hier wird angebenen, dass einige folgenden Befehle auf eine andere Page zugreifen. Eine Page umfasst 0x4000 Bytes. bei extp #5, #1 Würde der folgende Befehl auf Page 6 zugreifen, also z.B. Adresse 0x014100 mov 014100h, r12 der 8051 ist Zum Einstieg ganz nett |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| S/ME45i v4 Flash Patching | Acidmrp | Patches, Know How & Anleitungen | 68 | 10.05.2007 16:27 |
| S65 Flash Patching | Acidmrp | Patches, Know How & Anleitungen | 77 | 06.08.2005 18:09 |
| CX65 Flash Patching | Acidmrp | Patches, Know How & Anleitungen | 15 | 31.01.2005 20:05 |
| M55 Flash Patching | b@iLLi | Patches, Know How & Anleitungen | 106 | 18.06.2004 13:08 |
| C45 Flash Patching | Acidmrp | Patches, Know How & Anleitungen | 6 | 13.12.2003 19:21 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 Uhr.










Linear-Darstellung

