Увеличение/использование/изменение регистров smali

Предыстория: у нас есть код, в который мы пытаемся вставить некоторые журналы отладки. Нам нужно два дополнительных регистра на метод, чтобы включить эти журналы.

Что мы пробовали до сих пор: 1) Увеличение регистров - не работает, так как регистры > v15 нарушают код.

2) Перемещение значений регистров v0 и v1 в некоторые регистры с высоким значением, такие как v250 или что-то подобное, затем используйте v0-v1 и переназначьте значения обратно из vTMP в v0-v1. Ошибок нет, но приложение вылетает с ошибкой проверки времени компиляции.


person alchemist    schedule 21.07.2016    source источник


Ответы (1)


Похоже, вы хорошо понимаете, почему 1) проблематично.

Re: 2) - если вы получаете ошибки проверки, значит, вы делаете модификацию неправильно. Чтобы отладить это, вам нужно посмотреть на фактические ошибки проверки, о которых сообщает art и / или dalvik, когда он впервые загружает файл dex (обычно во время установки приложения). Эти ошибки обычно довольно хороши и дают достаточно информации, чтобы точно определить проблему.

Вы можете подумать о том, чтобы попытаться сделать то, что вам нужно, без выделения каких-либо новых регистров. например Вы можете создать новый метод с новой функциональностью и просто вставить вызов метода в этот метод и передать любые значения/объекты, которые ему нужны.

person JesusFreke    schedule 21.07.2016