如何提取.apk文件的代码?先决条件步骤

2022-08-31 12:23:29

实际上,我正在尝试提取名为cloudfilz的.apk文件的代码.apk并希望在其源代码中进行操作,因此我按照以下步骤操作:

创建一个新文件夹并放入.apk文件(您要解码的文件)现在重命名此.apk文件,扩展名为.zip(例如:从文件名重命名.apk到文件名.apk.zip)并保存它。现在你得到类.dex文件等...在这个阶段,你可以看到可绘制的,但不是XML和java文件...所以继续...

第 2 步:

现在将此zip apk文件解压缩在同一文件夹中(例如或大小写新文件夹)。现在从此链接下载dex2jar http://code.google.com/p/dex2jar/ 并将其解压缩到同一文件夹(在本例中为NEW FOLDER).....现在打开命令提示符并到达该文件夹(在本例中为“新建文件夹”)。...到达后写“dex2jar classes.dex”并按回车键.....现在你得到 classes.dex.dex2jar 文件在同一个文件夹中......

=>问题:-I成功实现了步骤1,但在步骤2中,当我执行dex2jar classes.dex时,我在命令提示符下收到错误,我知道这是由于我安装的JDK版本和classs.dex JDK版本号不兼容,所以卡在这里,没有出路...java.lang.UnsupportedClassVersionError


答案 1

注意:除非另有说明,否则以下所有说明都普遍适用(即所有操作系统)。


先决条件

您将需要:

  • 一个有效的 Java 安装
  • 工作终端/命令提示符
  • 一台电脑
  • 一个APK文件

步骤

步骤1:更改APK文件的文件扩展名

  1. 通过在文件名中添加扩展名或更改为 来更改文件的文件扩展名。.apk.zip.apk.zip

    例如,变为 、 或 。请注意,在Windows和macOS上,它可能会提示您是否确定要更改文件扩展名。点按或如果您使用的是 macOS:com.example.apkcom.example.zipcom.example.apk.zipOKAdd

macOS add extension confirm dialog

步骤2:从APK中提取Java文件

  1. 将重命名的APK文件解压缩到特定文件夹中。例如,让该文件夹为 。demofolder

    • 如果它不起作用,请尝试在其他应用程序(如WinZip或7-Zip)中打开该文件。

    • 对于 macOS,您可以尝试在“终端”(可在 )中运行,其中需要一个或多个参数:要解压缩的文件 + 可选参数。有关文档和参数,请参见。unzip/Applications/Terminal.appman unzip

  2. 下载 dex2jar(查看 GitHub 上的所有版本),并将该 zip 文件解压缩到与上一点所述相同的文件夹中。

  3. 打开命令提示符(或终端),将当前目录更改为在上一点中创建的文件夹,然后键入命令并按 Enter。这将在同一文件夹中生成文件。d2j-dex2jar.bat classes.dexclasses-dex2jar.jar

    • macOS/Linux 用户:替换为 。换句话说,在终端中运行并按回车键。d2j-dex2jar.batd2j-dex2jar.shd2j-jar2dex.sh classes.dex
  4. 下载Java Decompiler(查看Github上的所有版本)并解压缩它并启动(又名双击)可执行文件/应用程序。

  5. 从 JD-GUI 窗口中,将生成的文件拖放到其中,或者转到并浏览 jar。classes-dex2jar.jarFile > Open File...

  6. 接下来,在菜单中,转到 (Windows: ++, macOS: ++)。这应该会打开一个对话框,询问您在哪里保存一个名为“classes-dex2jar.jar.src.zip”的zip文件,该文件由所有包和java文件组成。(您可以重命名要保存的 zip 文件)File > Save All SourcesCtrlAltSS

  7. 提取该 zip 文件 (),您应该获取应用程序的所有 java 文件。classes-dex2jar.jar.src.zip

步骤3:从APK获取文件xml

  • 有关详细信息,请参阅 apktool 网站以获取安装说明和更多信息
  • 窗户:

    1. 下载包装脚本(可选)apktool jar(必需),并将其放在同一文件夹中(例如, )。myxmlfolder
    2. 将当前目录更改为该文件夹,并将 apktool jar 文件重命名为 。myxmlfolderapktool.jar
    3. 将文件放在同一个文件夹中(即 )。.apkmyxmlfolder
    4. 打开命令提示符(或终端),并将当前目录更改为存储的文件夹(在本例中为 )。接下来,键入命令 。apktoolmyxmlfolderapktool if framework-res.apk

      我们在这里所做的是安装一个框架。有关详细信息,请参阅文档

    5. 上述命令应导致“已安装框架...”
    6. 在命令提示符下,键入命令(其中是apk文件的名称)。这应该解码文件。有关详细信息,请参阅文档apktool d filename.apkfilename

      这应该会导致输出一个文件夹,其中没有文件扩展名的apk文件的原始名称。在此文件夹中是所有XML文件,例如布局,可绘制对象等。filename.outfilename.apk

来源: 如何从APK文件获取源代码 - Comptech Blogspot


答案 2

来自市场或未签名的任何.apk文件

  1. 如果你的apk是从市场下载的,因此签名安装Astro文件管理器从市场。打开Astro >工具>应用程序管理器/备份,然后选择要备份到SD卡上的应用程序。将手机挂载为USB驱动器并访问“备份应用程序”文件夹以查找目标应用程序的apk(让我们称之为应用程序.apk)。将其复制到本地驱动器与未签名.apk的情况相同。

  2. 从此链接下载Dex2Jar zip:SourceForge

  3. 解压缩下载的 zip 文件。

  4. 打开命令提示符并在到达dex2jar exe所在的目录时编写以下命令,并将apk复制到同一目录中。

    dex2jar targetapp.apk file(./dex2jar app.apk在终端上)

  5. http://jd.benow.ca/ 从此链接下载反编译器。

  6. 使用jd-gui文件打开“targetapp.apk.dex2jar.jar”,>保存所有源代码,以将jar中的类文件保存到java文件中。


推荐