【问题标题】:Codename One Reverse Engineer Android Package代号一逆向工程师安卓包
【发布时间】:2020-04-27 10:58:55
【问题描述】:

我在 Google Play 上有一个 android 应用程序,其中的原始文件丢失了。我的电脑上有所有东西,通常我会备份所有东西,但不知何故我失去了这个项目。

所以,我从我的 Google Play 控制台下载了 APK,但里面的内容与原始项目的结构完全不同。包内有一个 Classes.dex 文件/文件夹,我似乎无法打开。

是否有一种相对简单的方法来对包进行逆向工程并取回原始项目?

提前非常感谢。

【问题讨论】:

  • 几个月前我写了一篇关于这个的文章(意大利语):informatica-libera.net/content/…
  • @FrancescoGalgani,感谢分享。不幸的是,我的意大利语书面和口语能力相当差;-)。 (虽然我说葡萄牙语是另一种基于拉丁语的语言,但这并没有多大帮助,从我第一眼看到的情况来看。)在我尝试翻译之前,是否有可能实现上述目标?
  • 正如 Shai 回答的那样,主要问题是混淆。在我链接的页面中,查找文本Form hi = new Form("Decompile Me", BoxLayout.y());。你会发现三行代码。在它们下方,是使用 jadx 进行反编译的结果:该代码接近原始 Codename One 代码,因为没有混淆(调试构建)。接下来的三行代码显示了在混淆(发布构建)的情况下反编译的结果:它非常不可读。所以,如果你使用了混淆(这是发布版本的默认设置),反编译不是很有用。
  • 没有太多时间可以浪费了,那么......没有必要再深入挖掘,因为我绝对没有更改默认设置中的任何内容。

标签: codenameone reverse-engineering


【解决方案1】:

虽然有一些工具可以对 Android 项目进行逆向工程,但您没有太多可挽救的地方。你可以在这里看到一些讨论:decompiling DEX into Java sourcecode

但这里有一些关于代号一的事情。我先从好消息开始:res 文件将完好无损。

如果您不使用 CSS,您可以“按原样”获取 res 文件,它应该可以正常工作。

坏消息是默认情况下其他所有内容都被混淆了。这意味着所有类都将以a 之类的名称命名。所有方法等也是如此。您可能可以从中挽救一些代码,但不会太多。

【讨论】:

  • 感谢您对此进行调查。我尝试过使用 d2jar,但实际上没有可以使用的类或方法。 :-(
猜你喜欢
  • 2020-06-13
  • 2019-08-16
  • 1970-01-01
  • 2011-09-30
  • 2011-07-24
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
相关资源
最近更新 更多