2015-12-04 5 views
1

Я декомпилировал код apk с помощью apktool. Код, который я получил, содержит setContentView (2130903087); Мой вопрос в том, как найти имя макета из этой строки.setContentView показывает номер; как я могу найти макет после декомпиляционного кода?

+0

Если у вас есть файл R.java, найдите идентификатор с этим значением. это требуемый вид/макет. –

+0

Нет файла R.java. Тогда расскажи мне, как я продолжаю. –

ответ

1

Сначала преобразовать это десятичное число в шестнадцатеричное. Затем, после декомпиляции файла dex, вы получите файл R.java внутри вашего декомпилированного кода. В этом поиске для шестнадцатеричного числа вы получите файл макета.

+0

HI Nigam. В папке gen отсутствует файл R.Java, есть только BuildConfig.java. Скажите, пожалуйста, как я продолжаю. –

+0

Я говорю после разложения, он должен быть внутри исходной папки. –

+0

@RahulVats, есть ли у вас это? –

1

Apktool использует smali для демонтажа приложений. Код, который вы написали, не был создан apktool.

Позволяет взять пример приложения и декодировать его. (apktool d test.apk). Затем загляните в файл, который, как мы знаем, использует setContentView.

const v0, 0x7f040037 

invoke-virtual {p0, v0}, Lcom/android/deskclock/Screensaver;->setContentView(I)V 

Как вы можете видеть. v0 заполнен шестнадцатеричным эквивалентом идентификатора ресурса макета. Так что теперь нам нужно только grep для этого ID.

res/values/public.xml: <public type="layout" name="desk_clock_saver" id="0x7f040037" /> 

Итак, теперь мы знаем, что макет был desk_clock_saver. Поэтому мы можем заглянуть в res/layout.

[email protected]:~/test$ file res/layout/desk_clock_saver.xml 
res/layout/desk_clock_saver.xml: XML document text 

У нас оно есть.

+0

Супер полезно, спасибо! –