从APK文件逆向工程到项目

我不小心从Eclipse中删除了我的项目,剩下的只是我转移到手机上的APK文件。是否有一种方法可以逆转将应用程序导出到.apk文件的过程,以便我可以取回我的项目?

502747 次浏览

不是真的。有许多dex反汇编器/反编译器套件比如smalli,或dex2jar,它们将生成半人类可读的输出(在dex2jar的情况下,你可以通过使用JD-GUI之类的东西来获得java代码,但这个过程并不完美,你不太可能100%地重新创建源代码。但是,它可能会为您提供一个重新构建源代码树的地方。

是的,你可以拿回你的项目。只要将yourproject.apk文件重命名为yourproject.zip,就可以得到该ZIP文件中的所有文件。我们正在将文件扩展名从。apk更改为。zip。从该ZIP文件中,提取classes.dex文件并按以下方法反编译它。

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

然后,你可以使用JD-GUI将JAR中的类反编译为源代码。由于dex2jar应用了一些优化,因此得到的源代码应该非常易于阅读。

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

  1. dex2jar下载dex2jar工具。

  2. 使用工具将APK文件转换为JAR: Windows: < / p >

     $ d2j-dex2jar.bat demo.apk
    dex2jar demo.apk -> ./demo-dex2jar.jar
    

    MacOS / Linux:

     $ d2j-dex2jar.sh -f demo.apk -o demo.jar
    
  3. 一旦JAR文件生成,使用JD-GUI打开JAR文件。您将看到Java文件。

输出将类似于:

JD GUI

然后你可以使用其他工具从APK文件中检索AndroidManifest.xml和资源文件(如图像、翻译等)。

  • < p > Apktool

     $ java -jar apktool.jar -q decode -f demo.apk -o outputDir
    
  • < p > AXMLParser

     $ apkinfo demo.apk
    
  • < p > NinjaDroid

     $ ninjadroid demo.apk --all --extract
    

首先,我推荐this视频,这可能会消除你所有的疑虑

如果没有,请过一遍

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

Step 1:

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

如果在转换成.zip时出现问题,请参考link

在得到。zip之后,现在你得到classes.dex文件,等等。在这个阶段,你可以看到可绘制的文件,但不是xml和java文件,所以继续。 如果您没有看到扩展通过检查配置

Step 2:

现在将这个zip apk文件解压到同一个文件夹中。现在从link下载dex2jar

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

然后写dex2jar classes.dex并按enter。现在你在同一个文件夹中得到了classes.dex.dex2jar文件。

然后下载java编译器的

双击jd-gui,点击打开文件。然后从该文件夹中打开classes.dex.dex2jar文件。现在你得到类文件,并保存所有这些类文件(点击文件,然后点击“save all sources"在jd-gui中)通过SRC名称。解压压缩文件(classes_dex2jar.src.zip),你会得到应用程序的所有java文件。

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

Step 3:

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

  1. 放你想解码的。apk文件

  2. 下载Apktool for windows v1.xApktool

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

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

  2. 打开命令窗口

  3. 进入APKtool根目录,输入如下命令: apktool if framework-res.apk. < / p >

上述命令的结果应该是Framework installed ...

  1. apktool d "appName" apk ("appName"表示你想要解码的应用程序)现在你在那个文件夹中得到了一个文件夹,现在你也可以很容易地读取XML文件。

< >强Step 4: 最后我们得到了res/以及项目的java代码,这是我们开始时的目标

P.S.如果你不能通过以上步骤获得res文件夹,请安装新的< >强apktool < / >强

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

Enjoy and happy coding

没有软件&没有太多的步骤。

只要上传你的APK &从这个网站获得你所有的资源..

https://www.apkdecompilers.com/

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

注:我反编译我的APK文件&在一分钟内从这个网站获得代码

更新1:

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

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

更新2:

我在游戏商店里找到了apk反编译程序,

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

我们可以反编译apk文件在我们的安卓手机。此外,我们还可以查看Java &此应用程序中的XML文件

更新3:

我们可以使用Android studio 2.2版本的另一个选项分析APK功能

Build -> Analyze APK ->选择你的APK ->给出结果

enter image description here

按照下面的步骤来做,或者简单地使用apkToJava宝石来完成这个过程,它甚至负责安装所需的工具以使其工作。

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

有一种新的方法可以做到。

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

Ap

如果你正在寻找一个专业的替代方案,可以看看PNF Software的杰布反编译器

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

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

  1. Dex2jar
  2. Java编译器的
  3. Apktool
  4. Apk分析器

对于Android平台,你可以尝试ShowJava,在Play Store上可用。

你可以通过应用程序界面查询生成的代码,生成的java文件和文件夹结构存储在/sdcardShowJava文件夹中,以及转换产生的.jar文件。

这款应用是免费的,在主视图底部有一个广告横幅,但有一个应用内购买选项(3,99美元)可以删除它。除了移除广告横幅外,应用内购买并未添加任何功能。

披露:我不是这个应用程序的开发者,也没有任何与他有关的关系。

在Android Studio 3.5中,它非常简单,你可以在一分钟内实现它。 以下是一个循序渐进的过程

1:打开Android Studio,按窗口按钮->类型Android Studio ->点击图标打开Android Studio启动屏幕,看起来像这样。

enter image description here

在这里你可以看到一个选项“配置或调试APK”点击它,选择你的apk文件,然后按ok。

enter image description here

< >强3: 根据apk的大小,它将在一分钟内打开所有的清单和java类

enter image description here

就是这样。

尝试这个工具:https://decompile.io,它运行在iPhone/iPad/Mac上 enter image description here < / p >

你可能想要使用的另一个工具是APK Studio 但是它依赖于第三方工具:Apktool, jadx, ADB和Uber APK签名者,你需要单独下载