我自己写了一个扩展是在编译php源文件之前对其进行解密(事先加密过)
但是我今天用了一款免费的加密软件,它不用安装扩展而是直接加密php文件,不知道其是如何实现的,这款软件可以设置加密选项还可以设置混淆选项,不过有个缺点就是加密后的文件大概是原来文件的2-3倍。
另外代码混淆中的变量替换要是遇到include的时候怎么,比如说a文件用到了b文件中定义的一个类
但是我今天用了一款免费的加密软件,它不用安装扩展而是直接加密php文件,不知道其是如何实现的,这款软件可以设置加密选项还可以设置混淆选项,不过有个缺点就是加密后的文件大概是原来文件的2-3倍。
另外代码混淆中的变量替换要是遇到include的时候怎么,比如说a文件用到了b文件中定义的一个类
我看了一下它是用base64_encode先加密,然后用eval(base64_decode(...));大体是这样(当然有经过一些混淆处理,没那么直白)
但是最后有一行乱码没看懂...return;?>(乱码)我把乱码去掉结果就出不来了,不过没语法错误,不晓得为什么?照理说return那么后面的代码不是执行不到了吗?
还有如果有些文件之间是有关联的那么要如何进行变量名的混淆呢?
比如a文件引用到了b文件的变量或函数
echo "1";
return;
echo "2";
?>
你试一下。
它base64_decode出来的代码还不是原始代码,还是混淆的代码,这些代码调用自身文件取出最后一行的乱码,然后再eval...
如果有些文件之间是有关联的那么要如何进行变量/函数名的混淆呢?
比如a文件引用到了b文件的变量或函数?
简单的混淆类似于去掉注释,替换减少变量的长度等操作,本身并不会影响代码的运行,建议参考一下ZEND代码混淆器的原理
密钥:
7U9WeZnOFKrjsxIuL3PGav6iXRpbHTCN/08kdJzlM+SDgEVA4m5BQYfytoc2whq1