【问题标题】:setContentView shows number; how can I find layout after decompile code?setContentView 显示数字;反编译代码后如何找到布局?
【发布时间】:2016-03-09 01:12:59
【问题描述】:

我使用 apktool 反编译了一个 apk 代码。我得到的代码包含 设置内容视图(2130903087); 我的问题是如何从这一行中找到布局名称。

【问题讨论】:

  • 如果你有 R.java 文件,用这个值搜索 id。这就是您需要的视图/布局。
  • 没有 R.java 文件。然后告诉我如何进行。

标签: android decompiler source-code-protection apktool


【解决方案1】:

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

【讨论】:

  • 你好尼加姆。 gen文件夹下没有R.Java文件,只有BuildConfig.java。请告诉我如何进行。
  • 我是说反编译后应该在源文件夹里面。
  • @RahulVats 你明白了吗?
  • src文件夹下没有文件。这个文件夹是空的。但正如你所说,我将数字转换为十六进制。然后我在整个项目中搜索字符串,它在 public.xml 中显示一个活动名称(在 res/values/public.xml 下)。这是正确的吗?
  • 但在源文件夹中,我可以找到生成的 R 类。
【解决方案2】:

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

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

const v0, 0x7f040037

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

如您所见。 v0 填充了与布局的资源 ID 等效的十六进制。所以现在我们只需要 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

我们有它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-06
    • 2011-09-23
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 2013-02-02
    • 2011-09-30
    相关资源
    最近更新 更多