82

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

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

第2步:

现在在同一个文件夹中提取这个 zip apk 文件(在这个例子中,或者在新文件夹中)。现在从此链接http://code.google.com/p/dex2jar/下载 dex2jar并将其解压缩到同一文件夹(在本例中为 NEW FOLDER).....现在打开命令提示符并到达该文件夹(在这种情况下是新文件夹)....到达后写入“dex2jar classes.dex”并按回车键......现在您在同一文件夹中获得 classes.dex.dex2jar 文件......

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

4

4 回答 4

109

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


先决条件

你会需要:

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

脚步

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

  1. .apk通过向文件名添加扩展名来更改文件的文件扩展.zip名,或更改.apk.zip.

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

macOS 添加扩展确认对话框

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

  1. 在特定文件夹中提取重命名的 APK 文件。例如,让该文件夹为demofolder.

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

    • 对于 macOS,您可以尝试unzip在终端(可在 中获得/Applications/Terminal.app)中运行,它需要一个或多个参数:要解压缩的文件 + 可选参数。参见man unzip文档和论据。

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

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

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

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

  6. 接下来,在菜单中,转到File > Save All Sources(Windows:++ Ctrl,macOS:AltS⌘</kbd>+⌥</kbd>+S). This should open a dialog asking you where to save a zip file named `classes-dex2jar.jar.src.zip" consisting of all packages and java files. (You can rename the zip file to be saved)

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

xml第 3 步:从 APK获取文件

  • 有关详细信息,请参阅apktool网站以获取安装说明等
  • 视窗:

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

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

    5. 上面的命令应该会导致“Framework installed ...”
    6. 在命令提示符下,键入命令apktool d filename.apkfilenameapk 文件的名称在哪里)。这应该解码文件。有关更多信息,请参阅文档

      这应该会导致filename.out输出一个文件夹,其中是不带文件扩展filename名的 apk 文件的原始名称。.apk此文件夹中包含所有 XML 文件,例如布局、可绘制文件等。

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

于 2012-11-21T06:51:11.690 回答
30

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

  1. 如果您的 apk 是从市场下载的,因此已从市场上签名安装 Astro 文件管理器。打开 Astro > Tools > Application Manager/Backup 并选择要备份到 SD 卡上的应用程序。将手机挂载为 USB 驱动器并访问“backupsapps”文件夹以找到目标应用程序的 apk(我们称之为 app.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 File > Save All Sources 打开“targetapp.apk.dex2jar.jar”,将 jar 中的类文件保存为 java 文件。

于 2012-08-07T11:25:57.783 回答
2

第1步:

在此处输入图像描述在此处下载 dex2jar 。创建一个 java 项目并粘贴 (dex2jar-0.0.7.11-SNAPSHOT/lib) jar 文件。

将apk文件复制到java项目中

运行它,刷新项目后,你会得到jar文件。使用java反编译器你可以查看所有java类文件

第 2 步:在此处下载 java 反编译器

于 2011-10-25T11:19:26.880 回答
0

单击此处, 这是一个适用于 window/ubuntu 的很好的教程。

  1. apktool1.5.1.jar 从这里下载。

  2. apktool-install-linux-r05-ibot 从这里下载。

  3. dex2jar-0.0.9.15.zip 从这里下载。

  4. jd-gui-0.3.3.linux.i686.tar.gz (java de-compiler) 从这里下载。

  5. framework-res.apk(位于您的 android 设备 /system/framework/)

程序:

  1. 重命名 .apk 文件并将扩展名更改为 .zip ,

它会变成.zip。

  1. 然后解压缩.zip。

  2. 解压下载的 dex2jar-0.0.9.15.zip 文件,复制内容并粘贴到解压文件夹。

  3. 打开终端并更改目录以解压缩“dex2jar-0.0.9.15”</p>

– cd – sh dex2jar.sh classes.dex(此命令“classes.dex.dex2jar.jar”的结果将在您提取的文件夹 中)。

  1. 现在,创建新文件夹并将“classes.dex.dex2jar.jar”复制到其中。

  2. 解压“jd-gui-0.3.3.linux.i686.zip”并全屏打开“Java Decompiler”。

  3. 单击打开的文件并在窗口中选择“classes.dex.dex2jar.jar”。

  4. “Java Decompiler”,然后转到文件 > 保存并将源代码保存在 .zip 文件中。

  5. 创建“source_code”文件夹。

  6. 提取保存的 .zip 并将内容复制到“source_code”文件夹。

  7. 这将是我们保存您的源代码的地方。

  8. 解压 apktool1.5.1.tar.bz2 ,得到apktool.jar

  9. 现在,解压“apktool-install-linux-r05-ibot.zip”</p>

  10. 复制“framework-res.apk”、“.apk”和 apktool.jar

  11. 将其粘贴到解压缩的“apktool-install-linux-r05-ibot”文件夹(第 13 行)。

  12. 然后打开终端并输入:

    - 光盘

    – chown -R : 'apktool.jar'</p>

    – chown -R : 'apktool'</p>

    – chown -R : 'aapt'</p>

    – sudo chmod +x 'apktool.jar'</p>

    – sudo chmod +x 'apktool'</p>

    – sudo chmod +x 'aapt'</p>

    – sudo mv apktool.jar /usr/local/bin

    – sudo mv apktool /usr/local/bin

    – sudo mv aapt /usr/local/bin

    – apktool if framework-res.apk – apktool d .apk

于 2015-03-26T09:53:45.453 回答