如何提取不起作用的 .apk 文件的代码? [复制]

2023-12-13

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

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

Step 2:

现在将此 zip apk 文件解压到同一文件夹中(在此例中为新文件夹)。现在从此链接下载 dex2jarhttp://code.google.com/p/dex2jar/并将其解压到同一文件夹(在本例中为新文件夹)...现在打开命令提示符并到达该文件夹(在本例中为新文件夹)....到达后写入“dex2jarclasses.dex”并按输入......现在你在同一文件夹中得到classes.dex.dex2jar文件......

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


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


先决条件

你会需要:

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

Steps

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

  1. 更改文件扩展名.apk通过添加一个文件.zip文件名的扩展名,或更改.apk to .zip.

    For example, com.example.apk becomes com.example.zip, or com.example.apk.zip. Note that on Windows and macOS, it may prompt you whether you are sure you want to change the file extension. Click OK or Add if you're using macOS:

macOS add extension confirm dialog

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

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

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

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

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

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

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

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

  6. Next, in the menu, go to File > Save All Sources (Windows: Ctrl+Alt+S, macOS: ++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来自 APK 的文件

  • 欲了解更多信息,请参阅apktool website有关安装说明等信息
  • Windows:

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

      我们在这里所做的是安装一个框架。欲了解更多信息,请参阅docs.

    5. 上述命令应导致“框架已安装...”
    6. 在命令提示符中,键入命令apktool d filename.apk (where filename是 apk 文件的名称)。这应该解码文件。欲了解更多信息,请参阅docs.

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何提取不起作用的 .apk 文件的代码? [复制] 的相关文章

随机推荐

  • UWP 的 BroadFileSystemAccess 不起作用

    我正在编写一个应用程序 它需要访问文本文件的权限 因为未经许可它会抛出异常 访问被拒绝 我添加到 Package appxmanifest 特定行 xmlns rescap http schemas microsoft com appx m
  • pandas dataframe 选择多索引中的列[重复]

    这个问题在这里已经有答案了 我有以下 pd DataFrame Name 0 1 Col A B A B 0 0 409511 0 537108 0 355529 0 212134 1 0 332276 1 087013 0 083684
  • 正则表达式将 img 标签与特定属性类匹配

    我很长时间都在与这个正则表达式作斗争 但我找不到任何解决办法 我使用基于 javascript 的工具来测试和编写表达式 当放入php页面并与preg匹配时 结果是不同的
  • openssl - 通过 Java 解密

    全部 我正在努力解决这个问题 我有包含命令的bat文件 openssl smime decrypt binary inform DER recip path to certificate inkey path to private key
  • 重新安装 Visual Studio 2017 本地主机证书

    在安装 VS2017 的过程中 或者稍后 程序会安装一个用于本地开发的证书 一切都工作正常 直到我安装了 Fiddler 从那一刻起 VS2017 证书停止工作 每当我导航到本地主机应用程序时 我都会收到 您的连接不是私有的 消息 有什么想
  • 有没有办法使用最新的 Facebook 应用程序评论来获得 Facebook read_stream 权限?

    我正在开发社交网络 iPhone 应用程序 其中我们有 facebook 作为选项之一 我们必须显示用户的提要 但为此我需要read stream允许 不幸的是 我们的应用程序尚未经过验证 这是我们从 Facebook 审核团队收到的消息
  • 如何从因重新启动而离开的位置继续安装?

    在安装某些软件包期间重新启动后如何继续安装程序 实际上 我已经使用构建了一个项目的安装程序包WiX 捆绑包 有不同的包要安装在链中 但是当它安装微软时Windows安装程序4 5 msi 它将重新启动电脑 重新启动后 我希望安装继续 我怎样
  • 在python中使用bing或google API获取位置坐标

    这是我的问题 我有一个示例文本文件 我在其中通过抓取各种 html 页面来存储文本数据 该文本包含有关各种事件及其时间和地点的信息 我想获取这些位置的坐标 我不知道如何在 python 中做到这一点 我正在使用 nltk 来识别此示例文本中
  • Android - 方向变化时的动态片段问题

    我在动态片段方面遇到问题 如果我不改变方向 它就可以正常工作 当我改变方向时 我单击 ListView 项目 这不是改变 textview 这是 DynamicActivity 类 public class DynamicActivity
  • Selenium 无法启动 IE。

    Selenium 无法启动 IE 10 56 25 005 INFO org openqa selenium server SeleniumDriverResourceHandler Command request getNewBrowse
  • Angular HTTP 循环 [重复]

    这个问题在这里已经有答案了 我对 Angular 应用程序有疑问 我有一个包含语言短代码的数组 en fr 基本上 我希望 Angular 在该数组上循环并对每个值发出 HTTP get 请求 for var i in scope lang
  • 当内容类型为文本/纯文本时,.NET Core 1.0 Web Api 将请求正文处理为 JSON

    我需要使用的供应商 API 正在发送内容类型为 text plain 且正文中为 JSON 的 POST 请求 如何在 net core 1 0 web api中解析它 我确定我需要做类似的事情this 下面的代码 答案 但我不知道如何在
  • 使用 Flexbox 在 Bootstrap3 轮播中垂直居中内容

    我试图将 h3 和 p 元素集中在 div 中 更准确地说是 Bootstrap 的 carousel caption 我已经给 carousel caption 固定的高度和宽度 我试图将 h3 和 p 垂直对齐到 theid 父 div
  • COM 类工厂错误

    我一直在使用我的机器作为服务器来测试应用程序 一切都很顺利 但是当我尝试将其设置为在测试服务器上运行时 出现以下错误 检索 COM 类工厂 CLSID 为 XXXX 的组件因故障而失败 出现以下错误 80040154 有任何想法吗 Than
  • 小于给定数字并且没有重复数字的数字数量

    我们怎样才能找到小于给定数字并且其中没有重复数字的数字的个数 例如 小于100的此类数字的数量为90个 11 22 33 44 55 66 77 88 99有重复数字 因此被排除 同样 对于小于 1000 的数字 如 101 110 122
  • Target="_blank" 与 window.open

    我正在开发一个应用程序 用户输入一些输入 并且在单击共享链接时不应该离开页面 例如Facebook 分享链接 a href https www facebook com sharer php u http 3A 2F 2Fwww examp
  • 如何获取 Go html/template 中地图元素的结构字段?

    我有一个结构Task type Task struct cmd string args string desc string 我初始化了一张采用上述内容的地图Taskstruct 作为一个值和一个string作为键 任务名称 var tas
  • html 中真的需要 name 属性吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 如果 HTML 表单中 name 属性的目的只是为了引用诸如 input 之类的元素 为什么我们不能简单地使用 id 或 class 属性呢 创建名称属性背后是否有一些不那么明显的推
  • CodeIgniter Sqlite 不工作

    每当我在模型中像这样查询数据库 sqlite 时 我使用 codeigniter 完整代码如下 this gt db gt select post query this gt db gt get posts return query gt
  • 如何提取不起作用的 .apk 文件的代码? [复制]

    这个问题在这里已经有答案了 实际上 我试图提取名为 cloudfilz apk 的 apk 文件的代码 并希望在其源代码中进行操作 因此我按照以下步骤操作 创建一个新文件夹并放入 apk 文件 您要解码的 现在用扩展名 zip 重命名此 a