第四代加固技术:指令转换/VMP

第四代加固技术使用自定义的解释器来避免第三代的缺陷。但自定义的解释器无法直接调用Android系统内的其他函数,必须使用Java的JNI接口进行调用。

其实现方式有两种:

A、dex文件内的函数被标记为native,内容被抽离并转换成一个符合JNI要求的动态库。动态库内通过JNI和Android系统进行交互。

B、dex文件内的函数被标记为native,内容被抽离并转换成自定义的指令格式,该格式使用自定义接收器执行,和A一样需要使用JNI和Android系统交互。

兼容性:

第四代VMP加固技术一般配合第三代加固技术使用,所有第三代的兼容问题,第四代也存在。

缺陷与对抗:

不论A方案还是B方案,都需要通过虚拟机提供的JNI接口与虚拟机进行交互,攻击者可以直接将指令转换/VMP加固方案当做黑盒,通过自定义的JNI接口对象,对黑盒背部进行探测、记录和分析得到完整的dex文件。

此外,此VMP加固只保护了Java代码,没有做到使用VMP技术来保护c/c++等代码。

第N代加固技术-虚拟机源码保护

虚拟机源码保护加固是使用虚拟机技术保护所有的代码,包括Java,Kotlin,c/c++,oc,objective-c等。

虚拟机源码保护为用户提供一套完整的工具链,首先把用户待保护的核心代码编译成中间的二进制文件,随后生成独特的虚拟机源码保护执行环境和只能在该环境下执行的程序。

虚拟机源码保护会在App内部隔离出来独立的执行环境,该核心代码的运行程序在此独立的执行环境里运行。即便App被破解,这部分核心代码仍然不可见。

生成的虚拟机源码保护拥有独特的可变指令集,极大的提高了指令跟踪。逆向分析的难度。同时,虚拟机源码保护还提供了反调试能力和监控能力。虚拟机源码保护可通过自身的探针感知环境的变化,实时探测到外界对本环境的调试、注入等非正常执行流程的变化,将调试动作引到程序陷阱,并发出警报,进而进行实时更新,提高安全强度。

results matching ""

    No results matching ""