【问题标题】:classes.dex file does't contain my java classesclasses.dex 文件不包含我的 java 类
【发布时间】:2017-02-19 05:10:37
【问题描述】:

我在 android studio 中开发了一个应用程序并在我的手机中进行了测试。我已经格式化了我的电脑,忘记将我的项目保存到某个地方。现在我想找回我的源代码。我从手机获取 APK 文件(通过使用 adb 和其他一些工具)。

我正在使用 dex2jar 并反编译我的 classes.dex 文件,但它没有显示我自己的 Java 类。能不能找回来?

【问题讨论】:

  • 即使你得到了你的类并反编译了它们,它们也几乎是不可读的,而且绝对是无法维护的。
  • 你为什么需要那个。? dex 文件是 dalvik 文件,只有 Dalvik 或 JVM 需要
  • 我唯一想要的就是取回我在项目中编写的课程。我不想再写它们了。我的手机里只有我自己的应用程序,我可以提取 apk 文件。我只需要从这个 apk 文件中获取我的类

标签: java android jar reverse-engineering decompiling


【解决方案1】:

你可以很容易地反编译它下面的一个很棒的教程:

https://futurestud.io/tutorials/how-to-decompile-an-android-app-apk

4 个简单的步骤如下:

1- 像解压缩任何 zip 文件一样解压缩你的 apk

2-查找 classes.dex 文件

3-使用dexToJar工具将它们转换为jar文件

4- 使用 JD-Gui 应用程序打开 jar 文件(适用于 windows/ubuntu/mac)

【讨论】:

  • 我一步一步地做了你伤心的事。但是,在 JD-Gui 中,只有少数类不是我的
  • 您是否对您的 apk 进行了编程?发布前?
  • 我已经使用这个工具反编译了一个包含 50 000 行代码的项目。它是小菜一碟。在您的问题中上传您在 jdgui 中获得的内容;) 对您有帮助
  • 好的,我晚上上传。我现在工作。非常感谢你顺便说一句..
  • 我已经上传了我在 jdgui 中看到的内容。有2个包和一些类。他们都不属于我。如果你能帮助我,我可以把apk文件发给你。非常感谢
【解决方案2】:

这通常由一些混淆器完成,例如Proguard。这意味着,除其他外,您的类的类名将被更改为无意义的名称(例如 A/B/C),这些名称在 java 类的完全限定路径中仍然不同,例如您可能在不同的包中有多个“A”类,但除此之外,您将多次使用这些类名。在大多数情况下,它不会损害程序的功能,但会使逆向工程变得更加困难。

如果这是您的应用并且您可以重新构建它,您可以禁用 ProGuard 或其部分功能,否则您需要自行对其进行逆向工程。

【讨论】:

    猜你喜欢
    • 2018-03-17
    • 2018-08-04
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 2013-11-22
    相关资源
    最近更新 更多