Android APP的安全攻防探讨

         在平时的Android app安全详细分析中,常常会碰到某些对抗,例如目标app加壳工具、搞混、防护,须要开展脱壳复原;又或是会出现针对常见注入软件的检验,例如frida、Xposed等,此刻也会想要知道这种软件的关键工作原理及其是不是自个可以完成。实际上这种问题的回答就在Android的java代码vm虚拟机完成中。可以是初期的Dalvikvm虚拟机,还可以是全新的SNAvm虚拟机。从时代潮流来说,这篇文章主要是致力于SNA。只不过,为了更好地不忘国耻,也会对Dalvikvm虚拟机做一个简洁的详细介绍。最终会从SNA的完成考量j对某些具体的应用领域开展探讨。

注:这篇文章详细分析根据AOSPandroid-12.0.0_r11.

outputo-20220104-092338-865-zyfw.png

JavaVM

我们知道,Java是一种混合开发的语言表达,系统软件具体运转的是java代码字节码,由java代码vm虚拟机去解释实行。假如阅读者以前看到过如何破解1个pathonvm虚拟机壳并取走12300元ETH这篇文章或是对pathonvm虚拟机有一定的掌握得话便会了解,解释实行的环节可以看作是一个循环系统,对每条命令开展详细分析,并针对命令的名字根据很大的swich-case派发到不一样的支系中解决。实际上java代码vm虚拟机也是如此的,但JVM针对特性干了许多调优,例如JIT运转时将字节码调优成相匹配平台的二进制码,提升后面运转速度等。

Android源代码即然是用java代码源代码编写的,那样运转时应当也会有个详细分析字节码的vm虚拟机。和标准规定的JVM不一样,Android中具体会将java代码源代码编译程序为Dalvik字节码,运转时详细分析的也是用自主研发的vm虚拟机完成。往往应用自主研发完成,或许不仅有商业专利权的考量,另一方面也的确是融入了移动端的的运转情景。Dalvik命令根据存储器,占1-2字节数,java代码vm虚拟机命令根据栈,每条命令只占1字节数;因而Dalvikvm虚拟机用空间换时间进而得到比OracleJVM更迅速的实行速度。

分享: