1

我一直在尝试将一个文件导入到我使用 apktool 反编译的 android studio。但是,当我尝试将文件导入 Android Studio 时,它不会在“项目”浏览器上显示任何内容。在导入过程中,在第一步中,我选择了“从现有来源创建项目”。有没有办法解决这个问题?另外,在android studio中是否可以使用notepad ++中的文件?

谢谢。

4

2 回答 2

5

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

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

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

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

  1. 无法生成 R.java(因为所有自定义的 id 值在 apk 中都会被转换为一个 unqiue 整数,即使您使用 apktool,这也无法反转为人类可读的含义)

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

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

如果它是一个“简单”应用程序,您也许能够找出混淆代码中发生的情况。

如果它是一个包含大量库的“复杂”应用程序,如果你试图挖掘其中的逻辑,那将是一场灾难。

于 2016-08-17T02:24:13.227 回答
3

apktool 是一种逆向工程工具,它生成源代码,但不生成 gradle 构建脚本,这就是为什么它不会显示为您可以打开的项目的原因。您必须“从现有源导入”,因为 apktool 仅生成源文件,Android Studio 将尝试填写 gradle 构建文件。

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

于 2016-08-17T00:04:09.607 回答