Редактирование smali для Android - PullRequest
0 голосов
/ 30 декабря 2018

невозможно перепаковать smali файлы код ошибки: apktool недопустимое литеральное значение младшие 16 битов должны быть обнулены.

какое значение регистра следует использовать вместо "" const / high16 v4 "" "с замененным значением 0x7f04006a

.line 11
move-object v3, v0

move-object v4, v1

invoke-super {v3, v4}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V

.line 12
move-object v3, v0

const/high16 v4, 0x7f030000

invoke-virtual {v3, v4}, Lcom/mycompany/myapp/MainActivity;->setContentView(I)V

return-void

.end метод

Мой публичный идентификатор <public type="layout" name="main" id="0x7f04006a" />

1 Ответ

0 голосов
/ 30 декабря 2018

Инструкция const/high16 принимает 16-битный литерал, сдвигает его влево на 16 бит и загружает в указанный регистр.

В синтаксисе smali для этой инструкции используется литеральное значение после смещения.Так что в вашем примере const/high16 v4, 0x7f030000 в необработанном байт-коде фактический буквенный аргумент инструкции будет 0x7f03.Но в синтаксисе smali он указывается в виде пост-сдвинутой формы: 0x7f030000.Поскольку это форма после смещения, последние 4 шестнадцатеричных цифры всегда должны быть 0.

Если вы хотите загрузить литеральное значение, которое не соответствует этим требованиям, вы должны использовать другую инструкцию, такую ​​какconst инструкция.

const v4, 0x7f04006a
...