某试用版so保护函数虚拟化和函数加密分析
函数虚拟化#
函数虚拟化保护和函数混淆保护整体思路差不多,将函数划分为若干个基本块。之前每一个基本块的代码是替换为等效花指令混淆,虚拟化的话就是将原有指令进行翻译,用自定义虚拟机去解释执行。
每次进入虚拟机执行前先保存寄存器环境
从虚拟机出来的时候还原寄存器环境
函数虚拟化比函数混淆的指令膨胀程度和复杂度要高很多,用unicorn
模拟执行一个函数混淆时的一条执行路径,一共会执行大约1926
条指令。
用unicorn
模拟执行相同函数虚拟化后的同一条执行路径,一共会执行大约7w
多条指令。
经过虚拟化的函数也只能通过在plt
表下段或者unicorn
模拟执行去分析其大致功能,很难进行手动还原。
函数加密SMC#
函数SMC加密就是将函数进行加密,
然后再so执行.init.proc
函数的时候在进行还原。
dump下来加密后的函数就可以进行还原了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】