从APK文件到项目的逆向工程

时间:2012-10-04 17:50:23

标签: android apk decompiling

我意外地从Eclipse删除了我的项目,我剩下的就是我转移到手机上的APK文件。有没有办法扭转将应用程序导出到.apk文件的过程,所以我可以恢复我的项目?

13 个答案:

答案 0 :(得分:262)

有两个有用的工具可以从未知的APK文件生成Java代码(粗略但足够好)。

  1. dex2jar下载dex2jar工具。
  2. 使用该工具将APK文件转换为JAR

    $ d2j-dex2jar.bat demo.apk
    dex2jar demo.apk -> ./demo-dex2jar.jar
    
  3. 生成JAR文件后,使用JD-GUI打开JAR文件。您将看到Java文件。

  4. 输出类似于:

    JD GUI

答案 1 :(得分:75)

首先,我建议this视频,这可能会让你的疑惑清除

如果没有,请通过它

<强> Procedure for decoding .apk files, step-by-step method:

<强> Step 1:

创建一个新文件夹并将.apk文件放入其中(您想要解码)。现在将此.apk文件的扩展名重命名为.zip(例如:从filename.apk重命名为filename.zip)并保存。

如果转换为.zip时出现问题,请参阅link

获得.zip之后,你会得到classes.dex文件等。在这个阶段你可以看到drawable而不是xml和java文件,所以继续。 如果您没有看到扩展程序,请检查配置

<强> Step 2:

现在在同一文件夹中解压缩此zip文件。现在从这个link

下载dex2jar

并将其解压缩到同一个文件夹中。现在打开命令提示符并将目录更改为该文件夹。

然后写dex2jar classes.dex并按回车键。现在,您在同一文件夹中获得classes.dex.dex2jar个文件。

然后下载java decompiler

现在双击jd-gui并点击打开文件。然后从该文件夹中打开classes.dex.dex2jar文件。现在您获取类文件并保存所有这些类文件(单击文件,然后单击src名称中的“保存所有源”在jd-gui中)。解压缩该zip文件(classes_dex2jar.src.zip),您将获得该应用程序的所有java文件。

在这个阶段你得到了java源代码,但xml文件仍然不可读,所以继续。

<强> Step 3:

现在打开另一个新文件夹并放入这些文件

  1. 将您要解码的.apk文件放入

  2. windows v1.xApktool

  3. 下载Apktool

    使用谷歌安装窗口并放入相同的文件夹

    1. 使用google下载framework-res.apk文件并放入相同的文件夹(并非所有apk文件都需要framework-res.apk文件)

    2. 打开命令窗口

    3. 导航到APKtool的根目录并输入以下命令: apktool if framework-res.apk.

    4. 上述命令应导致Framework installed ...

      1. apktool d“appName”.apk(“appName”表示您要解码的应用程序)现在您在该文件夹中获得了一个文件夹,现在您也可以轻松读取xml文件。
      2. <强> Step 4: 最后我们得到了res/以及项目的java代码,这是我们开始时的目标。

          

        P.S. 如果您无法通过上述步骤获取res文件夹,请安装新的apktool

             
            
        • 是否安装了Java 1.7? 安装Apktool 2.x
        •   
        • 是否安装了Java 1.6或更高版本? 安装Apktool 1.x
        •   

        Enjoy and happy coding

答案 2 :(得分:52)

没有软件&amp;没有太多的步骤..

只需上传您的APK&amp;从这个网站获取所有资源..

https://www.apkdecompilers.com/

此网站将反编译APK文件中嵌入的代码,并提取文件中的所有其他资源。

注意:我反编译我的APK文件&amp;从这个网站获取一个迷你代码

更新1

我找到了另一个在线反编译网站,

http://www.javadecompilers.com/apk/ - 不连续要求弹出窗口阻止

更新2:

我在Play商店找到了apk反编译器应用程序,

https://play.google.com/store/apps/details?id=com.njlabs.showjava

我们可以在我们的Android手机中反编译apk文件。而且我们也可以查看java&amp;此应用程序中的xml文件

更新3:

我们可以使用Android studio 2.2版

中的其他选项分析APK 功能

构建 - &gt;分析APK - &gt;选择你的APK - &gt;它给出了结果

enter image description here

答案 3 :(得分:5)

有一种新方法可以做到这一点。

Android Studio 2.2有APK分析器它会提供很多关于apk的信息,请在这里结帐: - http://android-developers.blogspot.in/2016/05/android-studio-22-preview-new-ui.html

Ap

答案 4 :(得分:4)

不是真的。有许多dex反汇编程序/反编译器套件such as smalidex2jar将生成半人类可读的输出(在dex2jar的情况下,你可以通过使用类似{的东西获得java代码{3}}但过程并不完美,您不可能100%重新创建源代码。但是,它可能会为您提供一个开始重建源代码树的位置。

答案 5 :(得分:3)

是的,你可以恢复你的项目。只需将yourproject.apk文件重命名为yourproject.zip,即可获得该ZIP文件中的所有文件。我们正在将文件扩展名从.apk更改为.zip。从该ZIP文件中,提取classes.dex文件并按照以下方式对其进行反编译。

首先,您需要一个工具将DEX上的所有(已编译)类提取到JAR。 有一个叫dex2jar,由中国学生制作。

然后,您可以使用JD-GUI将JAR中的类反编译为源代码。由此产生的源代码应该是可读的,因为dex2jar应用了一些优化。

答案 6 :(得分:3)

尝试使用此工具:https://decompile.io,它可以在iPhone / iPad / Mac上运行 enter image description here

答案 7 :(得分:2)

按照以下步骤执行此操作或仅使用apkToJava gem进行此过程,它甚至会安装所需的工具以使其正常工作。

  • 将apk文件转换为zip
  • 解压缩文件
  • 从中提取classes.dex
  • 使用dex to jar将classes.dex转换为jar文件
  • 使用jadx gui打开jar文件作为java源代码

答案 8 :(得分:2)

对于Android平台,您可以尝试在Play商店中使用ShowJava

您可以通过应用程序界面查询生成的代码,生成的java文件和文件夹结构存储在ShowJava的{​​{1}}文件夹中,以及转换后生成的/sdcard文件。

应用程序是免费的,主视图底部有一个广告横幅,但有一个应用内购买选项(3,99 $)可以将其删除。除了删除广告横幅广告之外,应用内购买不会添加任何功能。

披露:我不是应用程序的开发者,也不是我以任何方式与他联系。

答案 9 :(得分:1)

如果您正在寻找专业的替代方案,请查看PNF Software的JEB Decompiler

有一个演示版本可以让您反编译大多数代码。

答案 10 :(得分:1)

以下是一些可用于从APK文件到源代码执行逆向工程的工具:

  1. Dex2jar
  2. Java反编译器
  3. Apktool
  4. Apk Analyzer

答案 11 :(得分:1)

在Android Studio 3.5中,这很容易,您只需一分钟即可实现。 以下是一个逐步的过程。

1::打开Android Studio,按窗口按钮->键入Android Studio->单击图标以打开如下所示的android studio启动屏幕。

enter image description here

2:在这里您可以看到选项“配置文件或调试APK” ,单击该选项并选择您的apk文件,然后按确定。

enter image description here

3: 会在一分钟内根据apk的大小打开所有清单和Java类。

enter image description here

就是这样。

答案 12 :(得分:0)

您可能要使用的另一种工具是APK Studio 它依赖于第三方工具:您需要单独下载的Apktool,jadx,ADB和Uber APK签名器。