我一直在尝试将一个文件导入到我使用 apktool 反编译的 android studio。但是,当我尝试将文件导入 Android Studio 时,它不会在“项目”浏览器上显示任何内容。在导入过程中,在第一步中,我选择了“从现有来源创建项目”。有没有办法解决这个问题?另外,在android studio中是否可以使用notepad ++中的文件?
谢谢。
正如 Daniel Souza 所回答的,apktool 只是帮助您提取类和清单的工具。如果您查看 Android 构建过程的细节和流程 ( https://source.android.com/source/jack.html ),您会知道每个类都会被混淆、打包并放入 .dex 文件中(包括您自己的类、android 支持库和其他 3 方库)。
通常,.apk 文件只包含以下类型的文件。
因此,当您使用 apktools 和其他一些工具(j-soup)进行一些逆向工程时。您只能拥有源文件。并且作为 Daniel 方法,您可以将项目导入 android studio,但您的项目中可能存在许多错误。
无法生成 R.java(因为所有自定义的 id 值在 apk 中都会被转换为一个 unqiue 整数,即使您使用 apktool,这也无法反转为人类可读的含义)
混淆的类和变量名。正如我提到的apk如何构建的过程,类和变量名在构建后会被混淆。逆向工程将很难找出应用程序内部的逻辑,因为几乎所有名称都重命名为 (a,b,c,d,e...)
Proguard 问题,一些应用程序可能使用高级技术来编译源代码,使用更复杂的逻辑流程(就像 Dexguard 所做的那样)。完成逆向工程后,要找出应用程序的内部逻辑将更加困难。
如果它是一个“简单”应用程序,您也许能够找出混淆代码中发生的情况。
如果它是一个包含大量库的“复杂”应用程序,如果你试图挖掘其中的逻辑,那将是一场灾难。
apktool 是一种逆向工程工具,它生成源代码,但不生成 gradle 构建脚本,这就是为什么它不会显示为您可以打开的项目的原因。您必须“从现有源导入”,因为 apktool 仅生成源文件,Android Studio 将尝试填写 gradle 构建文件。
导入项目后,您可以将喜欢的任何文件添加到项目目录中。这包括您从其他程序(包括 Notepad++)生成的程序。您可以在 Android Studio 中使用来自 Project View (Alt+1) 的 Copy/Paste 或 Drag/Drop 执行此操作。