> For the complete documentation index, see [llms.txt](https://docs.aiot.virbox.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aiot.virbox.com/glossary.md).

# 安全技术

## 导入表保护

去除原程序的导入表，将导入地址表(IAT) 替换为修复函数，由壳代码接管导入函数的跳转。隐藏原程序中的导入表，保护程序的函数外部调用，可以达到干扰逆向分析、防脱壳的作用。目前仅支持 PE 格式的程序。

## 资源加密

资源加密是针对 PE 格式程序的资源进行加密的保护功能，可以防止程序中的资源信息被提取，篡改。在加壳时将 PE 格式程序中的资源抽取并加密，仅保护一些外部需要的资源（如图标、版本信息等），在程序执行时，在壳代码中再解密。

## 附加数据扩展

附加数据一般是由某些编译器或打包工具，将一些数据（如音视频、数据库等）与原始的可执行程序拼接，这些数据一般在运行时被原始的程序读取，附加数据在执行时并不会直接被映射到内存中。由于加壳会改变原始程序文件，如果将附加数据直接拼接到保护后的程序，可能会导致运行时异常。**附加数据扩展**使用了 Hook 手段使程序能正常读取到附加数据，另外对附加数据做了加密处理，防止数据被轻易窃取。

## 压缩

将原始的代码段与数据包打包并压缩，将原始程序入口（OEP）替换为壳代码，运行时由壳代码将代码段与数据段还原，并进行一些重定位等操作，使程序能正常运行。压缩的核心目不是“压缩”，并非专为缩小程序体积而设计的。它真正的作用是将代码与数据段做了加密，并将原先的导入表与重定位信息隐藏了起来，再”顺便“将原先的数据做了压缩。可以有效的防止静态反编译，防止程序被打补丁。

## 代码混淆

代码混淆亦称花指令，是将计算机程序的代码，转换成一种功能上等价，但是难于阅读和理解的形式。扰乱原始指令，防止静态分析。

## 代码虚拟化

将原始指令转换为自定义的虚拟机指令，交由配套虚拟机系统模拟执行。隐藏原始指令，防止代码逻辑分析。

## 代码加密

代码加密是使用 SMC（Self-Modifying Code）技术，将原始的函数加密，在**函数**被执行时才将函数解密并执行的保护方式。防脱壳，防止直接 Dump。

## 内存断点

可以检测程序中是否设置内存断点，若检测到程序中设置内存访问断点和内存写入断点时，则程序直接终止运行。

## 硬件断点

可以检测程序中是否设置硬件断点，若检测到则程序直接终止运行。

## 内存检测

可以检测到内存是否被修改（比如被调试器附加修改），若程序内存被修改则程序将终止运行。

#### &#x20;<a href="#us7kx" id="us7kx"></a>
