在此存储库中,我们将找到有关如何对 APK 进行逆向工程的分步指南。
逆向工程可以在几个方面帮助我们,例如识别恶意软件或代码、发现安全缺陷、发现未预期的功能/违反业务规则……也就是说,让我们更深入地了解 Android 世界。
从基础开始,我们可以将 Android 包 (APK) 分为几个部分:
Smali 是 Dalvik 字节码的人类可读版本,简单地说,它的工作原理是汇编/反汇编。 Dalvik 可执行格式 (.dex)
代码方面,我们看一下Java和Smali的区别:
public static void printHelloWorld() {
System.out.println("Hello World")
}
和我们在 Smali 中的相同代码:
.method public static printHelloWorld()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
const-string v1, "Hello World"
invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method
我们已经了解了必要的基本概念,现在开始工作吧!
步骤一:
选择您要逆向的 APK。
如果您无法通过应用程序商店轻松找到它,您可以直接在 APKCombo 或 APKMonk 等网站上找到它。
到达这里后,请注意一些可能有趣的事情:
- Qual é o URL da API? (geralmente emos algo como api.domain.com)
- Qual é método de autenticação utilizado? Eu preciso criar um login para acessar?
- Quais são as chamadas que eu posso encontrar e quais são os parâmetros eles esperam?
一旦我们有了APK,就可以对其进行反编译,以便我们可以分析代码。
(MOBSF 等动态分析工具允许您直接下载代码,无论是 Java 还是 SMALI)。
现在我们将使用工具,第一个是 APKTOOL,您将在下面看到有关它的更多详细信息,但通常它将负责反编译文件,在同一位置创建一个文件夹,其中包含所有反编译文件。从这里,您将能够分析所有必要的代码。
这里使用的命令如下:
- apktool d ~/Desktop/aplicativo_app.apk
从 APK 中提取“classes.dex”文件。
使用dex2jar工具转换为Java类文件。生成一个 jar 文件。
- sh d2j-dex2jar.sh classes.dex
使用JD-GUI从jar文件中提取源代码。
- Arraste o arquivo classes-dex2jar.jar pro JD-GUI
移动安全框架是一个自动 APK 分析的工具。在其中,我们获得了有关构成 APK 的部分的更多详细信息,我们之前已经看到过。
dex2jar
德克斯
apk工具
apktool 是一个开源 Java 工具,用于对 Android 应用程序进行逆向工程。它可以将 APK 文件解码为人类可读的 XML 格式的原始代码。还将文件中包含的所有类和方法划分为Smali。这样,您就可以修改功能或程序执行。使用 Smali 代码,您可以在该应用程序中添加新功能或更改预期行为。
常用于 SSL 固定。
adb(Android 调试桥)
男性卫士
Xpose框架
命令: //很快
绕过 Android SSL
弗里达
现在我们已经了解了其工作原理,是时候练习了!以下是一些可以用作练习的实验列表:
测试以下攻击类型:
感谢您来到这里!祝你今天过得愉快。