2016-07-21 4 views
1

Hintergrund: Wir haben einen Code, in dem wir versuchen, einige Debug-Protokolle einzufügen. Wir benötigen zwei zusätzliche Register pro Methode, um diese Protokolle zu aktivieren.Erhöhen/Verwenden/Ändern Smali-Register

Was wir bis jetzt versucht haben: 1) Register erhöhen - funktionierte nicht als Register> v15 brechen den Code.

2) Verschieben von v0 und v1 Registerwerte zu einigen hohen Wertregistern wie V250 oder so etwas, dann v0-v1 verwenden und Werte zuweisen von VTMP zu v0-v1 zurück - keine Fehler, aber app stürzt mit Verifikationsfehler Compile Zeit .

Antwort

0

Es klingt, als ob Sie ein gutes Verständnis davon haben, warum 1) problematisch ist.

Re: 2) - Wenn Sie Verifizierungsfehler erhalten, dann machst du die Änderung falsch. Um dies zu debuggen, sollten Sie sich die tatsächlichen Verifikationsfehler ansehen, die von art und/oder dalvik beim ersten Laden der Dex-Datei gemeldet werden (in der Regel zur Installationszeit der Anwendung). Diese Fehler sind normalerweise ziemlich gut und geben genug Informationen, um das Problem zu lokalisieren.

Sie könnten versuchen, das zu tun, was Sie tun müssen, ohne neue Register zu vergeben. z.B. Sie könnten eine neue Methode mit Ihrer neuen Funktionalität erstellen und einfach einen Methodenaufruf zu dieser Methode einfügen und die Werte/Objekte übergeben, die sie benötigt.