# php-eval-hook **Repository Path**: yh-it/php-eval-hook ## Basic Information - **Project Name**: php-eval-hook - **Description**: 对PHP的eval函数进行hook钩子 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-19 - **Last Updated**: 2026-03-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # php-eval-hook 一款用于挂钩(Hook)`eval()` 函数的 PHP 扩展。适用于还原通过 eval 混淆的代码。该扩展理论上兼容 PHP 7.x 全版本,可能兼容 PHP 5.x 但未经测试。 ## 编译步骤 预编译扩展可从 [发布页](https://github.com/extremecoders-re/php-eval-hook/releases) 下载,基于 Ubuntu 18.04 软件源中的 PHP 7.2.24 编译。预编译扩展不保证在你的系统上正常工作,因此始终建议按照以下步骤从源码编译。 1. 安装 php 和 php-dev 包。此处使用 Ubuntu 18.04 官方软件源提供的包: ``` $ sudo apt install php7.2 php7.2-dev ``` 2. 克隆代码仓库: ``` $ git clone https://github.com/extremecoders-re/php-eval-hook ``` 3. 运行 `phpize`。该命令会生成编译扩展所需的 `Makefile` 及其他文件: ``` $ cd php-eval-hook $ phpize ``` 4. 编译扩展。`make install` 会将生成的 `.so` 文件复制到对应目录: ``` $ ./configure --enable-evalhook --with-php-config=/www/server/php/72/bin/php-config $ make $ make install Installing shared extensions: /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ ``` ## 向 PHP 注册扩展 1. 查找 *php.ini* 文件位置: ``` $ php -r 'phpinfo();' | grep php.ini Configuration File (php.ini) Path => /etc/php/7.2/cli Loaded Configuration File => /etc/php/7.2/cli/php.ini ``` 2. 编辑 *php.ini*,在文件末尾添加 `extension=evalhook.so`: ``` $ echo "extension=evalhook.so" >> /etc/php/7.2/cli/php.ini ``` 3. 验证扩展是否正确加载: ``` $ php -r 'print_r(get_loaded_extensions());' | grep evalhook [14] => evalhook ``` ``` $ php -r 'phpinfo();' | grep eval evalhook eval() hooking => enabled callback function => __eval ``` ## 使用方法 你需要在 PHP 代码中定义一个名为 `__eval` 的回调函数。每当扩展检测到 `eval` 调用时,就会执行这个回调函数。你可以在回调函数中把代码打印到标准输出、写入文件,或执行其他操作。 ### 示例 **原始代码** ```php ``` **obfuscated.php** [由 [Simple online PHP obfuscator](https://www.mobilefish.com/services/php_obfuscator/php_obfuscator.php) 生成] ``` ``` **harness.php** ```php ``` ``` $ php obfuscated.php 这是一个被混淆的函数 ``` ``` $ php harness.php | tail eval() 调用位置 @ /workspace/php7/obfuscated.php(2) : eval()'d code(1) : eval()'d code(1) : eval()'d code(1) : eval()'d code(1) : eval()' d code(1) : eval()'d code(1) : eval()'d code(1) : eval()'d code(1) : eval()'d code(1) : eval()'d code(1) : eval()'d code(1) : eval()'d code(1) : ev al()'d code(1) : eval()'d code(1) : eval()'d code(1) : eval()'d code(1) : eval()'d code: function test_obfuscated() { echo("这是一个被混淆的函数\n"); } test_obfuscated(); 这是一个被混淆的函数 ``` ## 致谢 本扩展基于 [php-eval](https://github.com/mfmans/php-eval) 开发。 ## 许可证 MIT