如何提取apk文件的代码

时间:2011-10-25 10:47:19

标签: android java dex

其实我试图提取一个名为cloudfilz.apk的.apk文件的代码,并想在其源代码中操作,所以我按照下面给出的步骤: -

制作一个新文件夹,然后放入.apk文件(你想要解码),现在将此.apk文件重命名为扩展名.zip(例如:从filename.apk重命名为filename.apk.zip)并保存..现在你得到classes.dex文件等......在这个阶段你可以看到drawable而不是xml和java文件......所以继续......

第2步:

现在将此zip文件解压缩到同一个文件夹中(在此例如或案例中为NEW FOLDER)。现在从这个链接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版本号如此卡在这里,dnt有出路...

4 个答案:

答案 0 :(得分:90)

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


Prerequsites

您将需要:

的步骤

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

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

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

  2.    

    macOS add extension confirm dialog

    第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并按Enter键。这将在同一文件夹中生成classes-dex2jar.jar文件。

      • macOS / Linux用户:将d2j-dex2jar.bat替换为d2j-dex2jar.sh。换句话说,在终端中运行d2j-jar2dex.sh classes.dex并按Enter键。
    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文件。

    8. 第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文件,如布局,drawables等。

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

答案 1 :(得分:27)

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

  1. 如果你从市场下载apk,那么从市场上签署安装Astro文件管理器。打开Astro>工具>应用程序管理器/备份并选择要备份到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' 文件>保存所有源以将jar文件中的类文件保存为java文件。

答案 2 :(得分:2)

第1步:

  

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

     

将apk文件复制到java项目

     

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

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

答案 3 :(得分:0)

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

  1. here下载apktool1.5.1.jar。

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

  3. here下载dex2jar-0.0.9.15.zip。

  4. jd-gui-0.3.3.linux.i686.tar.gz(java de-complier)从here下载。

  5. framework-res.apk(位于你的android设备/系统/框架/)

  6. 步骤:

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

      1. 然后提取.zip。

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

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

      4. - 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”

        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'apletool.jar'

          - sudo chmod + x'apktool'

          - sudo chmod + x'apapt'

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

          - sudo mv apktool / usr / local / bin

          - sudo mv aapt / usr / local / bin

          - 如果是framework-res.apk,请访问apktool - apktool d .apk