setContentView显示数字;如何在反编译代码后找到布局?

时间:2015-12-04 07:01:49

标签: android decompiler source-code-protection apktool

我已经使用apktool反编译了一个apk代码。我得到的代码包含 的setContentView(2130903087); 我的问题是如何从这一行找到布局名称。

2 个答案:

答案 0 :(得分:1)

首先将此十进制数转换为十六进制数。然后,在反编译dex文件后,您将在反编译代码中获得R.java文件。在搜索十六进制数字时,您将获得布局文件。

答案 1 :(得分:1)

Apktool使用smali来反汇编应用程序。您编写的代码行不是由apktool生成的。

让我们拿一个示例应用程序并对其进行解码。 (apktool d test.apk)。然后让我们看看我们知道正在使用setContentView的文件。

const v0, 0x7f040037

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

如你所见。使用布局的资源ID的十六进制等效值填充v0。所以现在我们只需grep来获取该ID。

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

现在我们知道布局是desk_clock_saver。所以我们可以在res/layout中查看它。

ibotpeaches@relic:~/test$ file res/layout/desk_clock_saver.xml
res/layout/desk_clock_saver.xml: XML document text

我们有它。