某试用版so保护函数虚拟化和函数加密分析

函数虚拟化

函数虚拟化保护和函数混淆保护整体思路差不多,将函数划分为若干个基本块。之前每一个基本块的代码是替换为等效花指令混淆,虚拟化的话就是将原有指令进行翻译,用自定义虚拟机去解释执行。
每次进入虚拟机执行前先保存寄存器环境

从虚拟机出来的时候还原寄存器环境

函数虚拟化比函数混淆的指令膨胀程度和复杂度要高很多,用unicorn模拟执行一个函数混淆时的一条执行路径,一共会执行大约1926条指令。

unicorn模拟执行相同函数虚拟化后的同一条执行路径,一共会执行大约7w多条指令。

经过虚拟化的函数也只能通过在plt表下段或者unicorn模拟执行去分析其大致功能,很难进行手动还原。

函数加密SMC

函数SMC加密就是将函数进行加密,

然后再so执行.init.proc函数的时候在进行还原。

dump下来加密后的函数就可以进行还原了。

posted @ 2023-08-30 21:56  怎么可以吃突突  阅读(220)  评论(0编辑  收藏  举报