bivex/Kage

GitHub: bivex/Kage

基于 C 扩展的高性能 PHP 字节码虚拟化保护系统,通过多层加密混淆与硬件绑定防止源码被逆向分析。

Stars: 5 | Forks: 4

# Kage 安全扩展 ## PHP 字节码保护与虚拟化系统 **项目:** Kage **目标环境:** PHP 7.4 (Zend Engine 3.4.x) ## 1. 简介 Kage 是一个高性能的 PHP 扩展,专为代码的加密保护而设计。它实现了**字节码虚拟化**和**本地代码虚拟化**,以保护 PHP 源代码和执行逻辑免受静态和动态分析。 ## 2. 架构设计 系统采用分层保护架构。 ### 2.1 第一层:字节码虚拟化 (Zend 级别) - **动态 ISA (指令集架构)**:受保护的文件基于每个文件的 32 位种子编译成独特、随机化的指令集。 - **控制流平坦化 (CFF)**:执行图通过**跳转目标混淆**进行修改。原始跳转目标经过 XOR 加密,并在运行时在内存中重新链接。 - **递归逻辑混淆**:对子结构(包括嵌套函数、类方法和匿名闭包)进行混淆。 ### 2.2 第二层:数据与元数据加密 - **字面量表保护**:常量字符串和数值在编译器级别进行 XOR 加密,并在受保护的内存块中 JIT 解密。 - **符号表屏蔽**:`op_array->vars` 表中的变量名索引和名称被混淆,以防止通过 Reflection API 或调试器泄露信息。 ### 2.3 第三层:本地虚拟化 (VMPacker) - **二进制虚拟化**:核心函数 (`kage_raw_decrypt`, `kage_get_machine_id`) 使用 **VMPacker** 进行虚拟化。 - **解释器嵌套解释器**:C 逻辑被转换为自定义 VM 字节码,防止使用标准反汇编器分析解密算法。 ## 3. 运行特性 ### 3.1 即时 (JIT) 脱保护 Kage 实现了一种拦截策略: 1. **拦截**:受保护函数的入口点被替换为 `ZEND_NOP` 载体。 2. **恢复**:在首次调用时,分发器恢复原生的 Zend 处理程序,并就地脱保护 `op_array`。 3. **执行**:后续执行以原生 PHP 速度运行。 ### 3.2 环境绑定 (HWID) - **硬件锁定执行**:脚本可以绑定到特定的硬件指纹(支持 Linux `/etc/machine-id` 和 macOS `gethostname`)。 - **完整性验证**:带有 CRC32 校验的头部可确保被篡改的负载在执行前被拦截。 ## 4. 系统集成与部署 ### 4.1 要求 - **运行时**:PHP 7.4(AMD64/ARM64 架构)。 - **依赖项**:`libsodium`。 - **构建系统**:CMake 3.16+,GCC 10+,或 Docker。 ### 4.2 安装步骤 部署二进制文件: ``` # Integrate binary 模块 cp artifacts/kage_protected.so $(php-config --extension-dir)/kage.so # 配置 PHP 环境 (php.ini) extension=kage.so kage.encryption_key = "SECURE_32_CHAR_ALPHANUMERIC_KEY" ``` ### 4.3 加密协议 (API) 生成受保护资源的步骤: ```
标签:Bash脚本, C扩展, DOM解析, JIT解密, Kage Security, PHP安全, PHP扩展, VMP, Web安全, Zend引擎, 代码加密, 代码审计防御, 代码混淆, 动态指令集, 反调试, 商业软件保护, 字节码虚拟化, 客户端加密, 控制流平坦化, 源代码保护, 编译器技术, 蓝队分析, 软件加壳, 防逆向工程, 高性能PHP