【问题标题】:Recover lost code from compiled apk从已编译的 apk 中恢复丢失的代码
【发布时间】:2012-01-06 00:26:39
【问题描述】:

我有一个问题......这让我非常紧张。

我正在开发这款游戏,它进展顺利,所以我在笔记本电脑上复制了一份,以便在远离计算机的情况下做一些工作。

长话短说,硬盘故障 + 糟糕的备份导致我失去了一门非常重要的课程。

有没有办法反编译apk来找回丢失的代码?它并不过分复杂或复杂,只是如果不阅读所有内容就不可能重写它。单身的。线。的。代码。在整个应用程序中,因为它初始化了很多类并以特定的方式加载了一堆东西。

通过快速的谷歌搜索,我找到了 apktool,它将它反编译成一堆 .smali 文件,我认为这些文件不是为人类阅读而设计的。

我需要恢复的是课堂上的一个非常大的方法。我找到了包含它的 smali 文件,我想我找到了它开始的那一行。像

.method public 声明-同步加载(Lcom/X/X/game/X;)I

任何人的帮助都将不胜感激,因为如果没有这种方法,我将不得不废弃整个游戏。

【问题讨论】:

  • 这就是您使用源代码控制的原因(显然是在场外)。

标签: java android apk recover


【解决方案1】:

快速 google 发现了一种反编译 apk 的方法 (decompile apk to java source)。但是,即使它生成 java 代码,您也可能不会有任何变量名称(只是默认变量名称,如 param1),因为当您将源代码编译为字节代码时,这些变量名称将不可恢复地删除,这也取决于反编译器, for/foreach 循环将改为 while 循环,由于编译器优化,if/else 块可能不代表您的原始控制流。

作为一般建议:使用某种源代码控制。在你自己的服务器上,用 github 的付费帐户无所谓,但使用源代码控制。即使您只是一个开发项目的人。它有助于解决这种情况,有助于恢复到以前的版本,有助于找到您引入的错误。当工具可用时,使用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 2021-03-09
    • 2019-11-02
    • 2011-06-11
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多