【问题标题】:How to extract code of .apk file which is not working? [duplicate]如何提取不起作用的 .apk 文件的代码? [复制]
【发布时间】:2011-12-14 20:15:28
【问题描述】:

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

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

第 2 步:

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

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

【问题讨论】:

  • 如果该应用程序的作者希望您查看源代码,他/她会将其作为开放源代码发布。我的猜测是它不是开源的,你无权尝试提取它。
  • @NickT 有时您想知道为什么您的新 Android 手机 (CMAS) 上的特定应用程序拥有比应有的更多权利。 --------------------------------- “我坚信人民。如果得到真相,他们可以依靠他们来应对任何国家危机。最重要的是给他们带来真实的事实和啤酒。” ― 亚伯拉罕·林肯 ---------------------------------
  • technikes.com/find-a-source-code-from-apk-file你的问题的两个新步骤

标签: android java dex


【解决方案1】:

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


先决条件

你需要:

步骤

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

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

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

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

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

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

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

  2. 下载 dex2jar (see all releases on GitHub) 并将该 zip 文件解压缩到与上一点所述相同的文件夹中。

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

    • ma​​cOS/Linux 用户:d2j-dex2jar.bat 替换为 d2j-dex2jar.sh。也就是说,在终端中运行d2j-jar2dex.sh classes.dex,然后回车。
  4. 下载 Java Decompiler (see all releases on Github) 并解压并启动(也就是双击)可执行文件/应用程序。

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

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

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

第 3 步:从 APK 中获取 xml 文件

  • 有关详细信息,请参阅apktool website 了解安装说明和更多信息
  • 窗户:

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

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

    5. 上面的命令应该导致“Framework installed ...”
    6. 在命令提示符下,键入命令apktool d filename.apk(其中filename 是apk 文件的名称)。这应该解码文件。有关详细信息,请参阅docs

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

来源:How to get source code from APK file - Comptech Blogspot

【讨论】:

  • 它对我有用,可以生成 xml 文件。
  • 更好的JD-GUI链接是:jd.benow.ca
  • "现在打开命令提示符并转到上一步创建的文件夹并键入命令“dex2jar classes.dex”并按回车。这将生成“classes.dex.dex2jar”文件文件夹。” github链接中没有bat文件
  • Ubuntu 用户,将 'apktool' 和 'apktool.jar' 文件移动到 '/usr/local/bin' 文件夹。打开终端路径指向apk文件夹位置类型apktool d
  • 在第 3 步中你输入了d2j-jar2dex.bat classes.dex 我认为这是d2j-dex2jar.bat classes.dex Dex > Jar
【解决方案2】:

市场上的任何 .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 打开‘targetapp.apk.dex2jar.jar’ File > Save All Sources 将 jar 中的类文件保存为 java 文件。

【讨论】:

  • 我会试试这个,............
【解决方案3】:

第 1 步:

下载dex2jar here。创建一个java项目并粘贴(dex2jar-0.0.7.11-SNAPSHOT/lib)jar文件。

将apk文件复制到java项目中

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

第二步:下载java反编译器here

【讨论】:

  • 感谢 Sony 的回复,但我无法获取 jar 文件,所以请您详细解释一下...您的屏幕截图显示您的 dex2jar lib jar 文件在另一个位置,但它应该保存在里面java项目如何可行..请清除我的歧义..
  • 只是你在java项目中复制dext2jar lib jar文件,而不是src文件夹
  • 我已将 apk 文件放入 src。 & 什么是主要课程?是这个com.googlecode.dex2jar.dump.Dump吗?
  • linux用户的程序一样吗?​​??
【解决方案4】:

Click here这是一个很好的window/ubuntu教程。

  1. here下载apktool1.5.1.jar。

  2. here下载apktool-install-linux-r05-ibot。

  3. dex2jar-0.0.9.15.zip 从here下载。

  4. jd-gui-0.3.3.linux.i686.tar.gz(java反编译器)从here下载。

  5. framework-res.apk(位于你的安卓设备/system/framework/)

程序:

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

它将变成 .zip。

  1. 然后解压.zip。

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

  3. 打开终端,切换目录解压“dex2jar-0.0.9.15”

--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反编译器”。

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

  4. “Java 反编译器”并转到文件 > 保存并将源代码保存在 .zip 文件中。

  5. 创建“source_code”文件夹。

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

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

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

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

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

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

  12. 然后打开终端输入:

    --cd

    – chown -R : ‘apktool.jar’

    – chown -R : ‘apktool’

    – chown -R : ‘aapt’

    – sudo chmod +x ‘apktool.jar’

    – sudo chmod +x ‘apktool’

    – sudo chmod +x ‘aapt’

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

    – sudo mv apktool /usr/local/bin

    – sudo mv aapt /usr/local/bin

    – apktool 如果是 framework-res.apk – apktool d .apk

【讨论】:

    猜你喜欢
    • 2014-11-11
    • 2015-02-25
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    相关资源
    最近更新 更多