Android 工作室导入问题。 (应用工具)

Android studio import problems. (Apktool)

我一直在尝试将我使用 apktool 反编译的文件导入 android studio。但是当我尝试将文件导入 Android studio 时,它在 "Project" 浏览器上没有显示任何内容。而在导入过程中,第一步,我选择了"Create project from existing sources"。无论如何要解决这个问题?另外,是否可以在 android studio 中使用来自 notepad++ 的文件?

谢谢。

apktool 是一个逆向工程工具,它生成源代码,但不生成 gradle 构建脚本,这就是为什么它不显示为您可以打开的项目的原因。您必须 "import from existing sources" 因为 apktool 仅生成源文件并且 Android Studio 将尝试填写 gradle 构建文件。

导入项目后,您可以将任何文件添加到项目目录中。这包括您从其他程序(包括 Notepad++)生成的。您可以在 Android Studio 中使用项目视图 (Alt+1) 使用 Copy/Paste 或 Drag/Drop 执行此操作。

正如 Daniel Souza 回复的那样,apktool 只是一个帮助您提取 class 和清单的工具。如果您查看 Android 构建过程 (https://source.android.com/source/jack.html) 的详细信息和流程, 你会知道每个 class 都会被混淆、打包并放入 .dex 文件中(包括你自己的 classes、android 支持库和其他 3 方库)。

通常情况下,.apk 文件只包含以下类型的文件。

  1. .dex文件(如果有65K方法的问题可能不止一个)
  2. 清单(Android 权限和功能元数据)
  3. 资产(绘图、资产文件夹、布局和 R)

因此,当您使用 apktools 和其他一些工具(j-soup)进行一些逆向工程时。您只能拥有源文件。作为大牛方法,您可以将项目导入android工作室,但您的项目可能存在很多错误。

  1. R.java 无法生成(因为所有自定义 id 值都将在 apk 中转换为唯一整数,即使您使用apktool)

  2. 混淆 class 和变量名。正如我提到的如何构建 apk 的过程,class 和变量名将在构建后被混淆。逆向工程很难找出应用程序内部的逻辑,因为几乎所有名称都重命名为 (a,b,c,d,e...)

  3. Proguard 问题,某些应用程序可能会使用高级技术来使用更复杂的逻辑流程编译源代码(如 Dexguard 所做的)。完成逆向工程后,将更难找出应用程序中的内部逻辑。

如果它是一个 "Simple" 应用程序,您也许能够找出混淆代码中发生的事情。

如果它是一个包含很多库的 "Complex" 应用程序,如果您试图挖掘其中的逻辑,那将是一场灾难。