【问题标题】:Avoiding Eclipse Errors When Decompiling Android APK反编译 Android APK 时避免 Eclipse 错误
【发布时间】:2014-01-19 09:48:03
【问题描述】:

我正在对一个 APK 文件进行逆向工程/反编译 - 我可以使用:

http://www.decompileandroid.com/

我确信 APK 工具是一个更好的选择(尽管我很想听听原因),但在这种情况下它确实有效 - 有点。

我的问题 - 以及我的问题/帖子的根源:当我导入源代码时,我最终遇到了 4000 多个 eclipse 错误(幸运的是,它们似乎只是重复了很多次的一小部分类似/相关的错误)。

话虽如此 - 有没有更好的方法来避免这些错误? (如下图)

Eclipse 错误:

https://docs.google.com/document/d/1gwbZuJ8duQ37JRGeTdqIrv0o_DBNL_xWRxrG9Xxxwy4/edit?usp=sharing

【问题讨论】:

  • 这个问题之前已经回答过很多次了。最简洁的答案是不。只有非常小的简单项目似乎可以无错误地反编译,即使这样也需要一点运气。
  • 开始解决这些问题的最佳做法是什么?
  • 最好的做法是针对一个非常古老的小应用程序,该应用程序早于混淆代码的标准做法(但即便如此,也不能保证它会起作用)。对应用程序进行逆向工程充其量可以告诉您资产是如何组织的,特定布局是如何嵌套的,加密密钥/密码的存储位置,或者如果您想获得更高的权限,那么在有根手机中应该使用什么偏好在一场比赛中得分。现在,那些逆向工程工具还不足以做更多的事情。所以最好只关注它们。

标签: eclipse reverse-engineering decompiling apk


【解决方案1】:

我不知道有任何 Java 反编译器能够可靠地产生可以“往返”(反编译,然后重新编译)的输出。有一些正在积极开发中,我的own included,您可以提交错误报告。就 Procyon 而言,随着时间的推移,类型推断变得越来越不可靠,尤其是在涉及泛型的情况下。然后还有许多其他问题主要影响从 Android 格式转换的类。

由 dex2jar 等工具创建的 JAR 往往更难处理,因为它们会产生棘手的异常处理程序表、奇怪的顺序块、局部变量插槽共享等。我建议尝试几种不同的工具组合:直接 Android 反编译器以及与各种 Java 反编译器配对的不同 dex-to-jar 重写器。您可能会发现一种工具组合始终比其他工具产生更好的结果。

也就是说,我将重申我通常的建议:永远不要相信反编译器的输出。不要假设它是正确的,即使它编译得很干净。

【讨论】:

    猜你喜欢
    • 2014-07-28
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 2016-03-23
    • 2014-02-07
    • 2012-06-14
    相关资源
    最近更新 更多