php代码加密 第1章 yakpro-po

2022-08-27

一、简介

yakpro-po 加密后可直接运行,免费,网址:https://github.com/pk-fr/yakpro-po

yakpro-po 由原生 PHP 开发,所以安装的时候,保证环境能执行 PHP 命令。

二、安装

找一个可用目录,这里按项目推荐目录为准:/user/local

cd /usr/local

通过 git 拉取 yakpro-po 代码

git clone https://github.com/pk-fr/yakpro-po.git

到 yakpro-po 目录,还需要安装 PHP-Parser

PHP-Parser 是一个用 PHP 编写的 PHP 解析器(支持 PHP 5.4 以及更早的版本),该项目的目的是简化静态代码分析和操作。 主要功能是: 将PHP 5,PHP 7 和 PHP 8 代码解析为抽象语法树(AST)。 无效的代码可以解析为部分AST。 AST包含准确的位置信息。 以人类可读的形式倾销AST。 将 AST 转换回PHP代码。 实验性的:对于部分更改的AST,可以保留格式。 遍历和修改 AST 的基础结构。 命名空间名称的解析。 常量表达式的评估。 简化 AST 构建的代码生成器。 将 AST 转换为 JSON 并返回。

cd yakpro-po

git clone https://github.com/nikic/PHP-Parser.git --branch 4.x

保证 yakpro-po 有可执行权限

chmod a+x yakpro-po.php

为方便使用,建立软连接到 bin 目录

cd /usr/local/bin

ln -s /usr/local/yakpro-po/yakpro-po.php yakpro-po

安装完毕,查看下是否正常

yakpro-po –help

三、使用

yakpro-po source_filename -o target_filename
yakpro-po source_directory -o target_directory

建议使用的选项:

yakpro-po source_filename -o target_filename --no-obfuscate-function-name --no-obfuscate-class_constant-name --no-obfuscate-class-name --no-obfuscate-interface-name --no-obfuscate-trait-name --no-obfuscate-property-name --no-obfuscate-method-name --no-obfuscate-namespace-name --no-obfuscate-label-name

这里混淆了:

淆变量名
混淆常量名
混淆 if 语句
淆循环语句
淆字符串文字
随机播放语句
单行输出

可用混淆选项:

--no-strip-indentation 多行输出
--strip-indentation 单行输出

--no-shuffle-statements 不打乱语句
--shuffle-statements 随机播放语句

--no-obfuscate-string-literal 不混淆字符串文字
--obfuscate-string-literal 混淆字符串文字

--no-obfuscate-loop-statement 不混淆循环语句
--obfuscate-loop-statement 混淆循环语句

--no-obfuscate-if-statement 不混淆 if 语句
--obfuscate-if-statement 混淆 if 语句

--no-obfuscate-constant-name 不混淆常量名
--obfuscate-constant-name 混淆常量名

--no-obfuscate-variable-name 不混淆变量名
--obfuscate-variable-name 混淆变量名

--no-obfuscate-function-name 不混淆函数名
--obfuscate-function-name 混淆函数名

--no-obfuscate-class_constant-name 不混淆类常量名
--obfuscate-class_constant-name 混淆类常量名

--no-obfuscate-class-name 不混淆类名
--obfuscate-class-name 混淆类名

--no-obfuscate-interface-name 不混淆接口名称
--obfuscate-interface-name 混淆接口名称

--no-obfuscate-trait-name 不混淆特征名称
--obfuscate-trait-name 混淆特征名称

--no-obfuscate-property-name 不混淆属性名称
--obfuscate-property-name 混淆属性名称

--no-obfuscate-method-name 不混淆方法名
--obfuscate-method-name 混淆方法名称

--no-obfuscate-namespace-name 不混淆命名空间名称
--obfuscate-namespace-name 混淆命名空间名称

--no-obfuscate-label-name 不混淆标签名称
--obfuscate-label-name 混淆标签名称

四、解密

下载代码:goto.zip

解密方法:

php 版本需要大于 7

需要解析的文件放到 decodeFile 下,解析至 complete 下

解析的可以是多个文件,不能放置文件夹

配置运行环境,执行 index.php 就可以
阅读 139