ARM. Access-Benutzer R13 und R14 von Supervisor-Modus
Wie kann ich den Zugriff der Benutzer R13 und R14, die gespeichert werden, wenn supervisor-Modus eingegeben? Ich bin mit einem ARM7TDMI.
I. E. ich will nicht access supervisor-R14, die jetzt enthält die return-Adresse-user-Modus, stattdessen wollen Sie den Wert der user-Modus-link registrieren. Dies ist Teil eines Debuggers ich Schreibe.
Gibt es spezielle Aliase für diese registriert?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beschreibe ich die Antwort auf deine bestimmte Frage, die aber die gleiche Vorgehensweise gilt für andere Modi.
Müssen Sie ändern Sie den Prozessor-Modus durch änderung des Modus-bits im CPSR nach system-Modus. Dies wird Ihnen Zugang zu user-Modus SP/LR (R13 & R14). Denken Sie daran, dass der system-Modus ist privilegiert, aber seine R13 und R14 sind die gleichen wie Benutzer-Modus ist, R13 und R14.
Sobald Sie im system-Modus, Lesen, R13 und R14 und legen Sie Sie, wo Sie wollen. Dann schalten Sie einfach die Modus-bits zurück zu Ihrer vorherigen Modus (ich glaube, das war der supervisor-Modus in deinem Beispiel) und du bist gut zu gehen.
Beachten Sie, dass wir nicht wechseln vom supervisor zum user-Modus. Wenn Sie den Wechsel von Vorgesetzten Benutzer Sie konnte nicht zurück zum supervisor-Modus. (Sonst gäbe es keinen Schutz von Benutzer-code eskalierenden Privileg). Das ist, warum wir verwendeten system-Modus im system-Modus ist privilegiert, aber die Register sind die gleichen, wie user-Modus.
Können Sie wechseln zwischen den privilegierten Modus, werden durch die Manipulation der mode-bits im CPSR. Ich denke, Sie sind die unteren 5 bits? Ich bin auf der Straße & nicht die info an meinen Fingerspitzen. Sonst hätte ich Sie mit den Assembler-code für das, was ich beschrieben habe oben. Eigentlich, wenn Sie wollen, um einige Haare auf Ihrem Kopf, zu nehmen, was ich gegeben habe, Sie oben, implementieren, testen und poste es wieder hier. 😀
(Eine Sache, die ich hinzufügen sollte, für den "Allgemeinen Fall" (Ihre ist sehr spezifisch) -- Sie können überprüfen, die SPSR, um zu sehen, "wo Sie herkommt" - und verwenden, um festzustellen, in welchem Modus Sie wechseln zu müssen.)
Übrigens, ich habe diese vor kurzem für einen meiner Kunden.... kleine Welt, denke ich.
Ich habe entdeckt, dass ein besserer Weg: -
Bei einer STM wenn r15 nicht einer der Operanden dann ^ gibt Zugriff auf Benutzer-Modus registriert. Allerdings autoincrementing scheint nicht zu funktionieren innerhalb der Anweisung, und ein nop ist erforderlich, danach wenn Sie möchten den Zugriff auf die register-bank.
Etwas wie