本地可执行程序保护方式

本地可执行程序包括 PE、ELF、Mach-O 文件格式

  • 代码虚拟化

原理

将原始指令转换为自定义的虚拟机指令,交由配套虚拟机系统模拟执行。

功能

隐藏原始指令,防止代码逻辑分析。

优点:保护强度高,几乎不能被分析出原始的代码逻辑。

  • 代码混淆

原理

代码混淆亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式。

Virbox Protector 支持对 x86/arm/.net il 系列指令进行混淆。

功能

扰乱原始指令,防止静态分析。

优点:防反编译,代码分析难度大。

  • 代码加密

原理

代码加密是使用 SMC(Self-Modifying Code)技术,将原始的函数加密,在函数被执行时才将函数解密并执行的保护方式。

功能

防脱壳,防止直接 Dump。

优点:运行效率高,几乎没有性能损失。

  • 压缩

Virbox Protector 的压缩功能,其核心目的不是“压缩”,并非专为缩小程序体积而设计的。它真正的作用是将代码与数据段做了加密,并将原先的导入表与重定位信息隐藏了起来,再”顺便“将原先的数据做了压缩。

原理

将原始的代码段与数据包打包并压缩,将原始程序入口(OEP)替换为壳代码,运行时由壳代码将代码段与数据段还原,并进行一些重定位等操作,使程序能正常运行。

功能

防止静态反编译,防止程序被打补丁。

优点

1、能起到一层整体保护效果,可以隐藏程序的代码、数据和文件结构信息。

2、运行效率高,仅在程序被加载时轻微的性能损失。

  • 资源加密

资源加密是针对 PE 格式程序的资源进行加密的保护功能,可以防止程序中的资源信息被提取,篡改。

原理

在加壳时将 PE 格式程序中的资源抽取并加密,仅保护一些外部需要的资源(如图标、版本信息等),在程序执行时,在壳代码中再解密。

  • 导入表保护

隐藏原程序中的导入表,保护程序的函数外部调用,可以达到干扰逆向分析、防脱壳的作用。

支持范围

目前仅支持 PE 格式的程序。

原理

去除原程序的导入表,将导入地址表(IAT) 替换为修复函数,由壳代码接管导入函数的跳转。

你可能感兴趣的:(加密,exe,dll,pe)