×

php源码加密后如何运行

Php 源码加密组件是如何工作的?php代码加密后,服务器是如何解析的,怎样解

admin admin 发表于2022-07-07 13:41:14 浏览103 评论0

抢沙发发表评论

Php 源码加密组件是如何工作的


这些扩展可以直接修改zend引擎的运行时数据结构,例如生成_zend_execute_data(里面有opcode等等)、_zend_function(函数信息)、_zend_class_entry(类信息)等等。加密的时候先转成这些数据,解密的时候改运行时数据结构,就相当于include了加密前的PHP代码。
当然,也不排除直接解密成文件然后include或者eval。

php代码加密后,服务器是如何解析的,怎样解


看是怎么加密的了,MD5是解不了的说能解的都是自己做的数据库匹配。

下面这个是常用的加密解密方法

《?php
/**
* 字符串加密、解密函数
*
* @param    string    $txt        字符串
* @param    string    $operation    ENCODE为加密,DECODE为解密,可选参数,默认为ENCODE,
* @param    string    $key        密钥:数字、字母、下划线
* @param    string    $expiry        过期时间
* @return    string
*/
function sys_auth($string, $operation = ’ENCODE’, $key = ’’, $expiry = 0) {
    $ckey_length = 4;
    $key = md5($key != ’’ ? $key : C(’COOKIE_AUTH_KEY’));
    $keya = md5(substr($key, 0, 16));
    $keyb = md5(substr($key, 16, 16));
    $keyc = $ckey_length ? ($operation == ’DECODE’ ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ’’;

    $cryptkey = $keya.md5($keya.$keyc);
    $key_length = strlen($cryptkey);

    $string = $operation == ’DECODE’ ? base64_decode(strtr(substr($string, $ckey_length), ’-_’, ’+/’)) : sprintf(’%010d’, $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
    $string_length = strlen($string);

    $result = ’’;
    $box = range(0, 255);

    $rndkey = array();
    for($i = 0; $i 《= 255; $i++) {
        $rndkey[$i] = ord($cryptkey[$i % $key_length]);
    }

    for($j = $i = 0; $i 《 256; $i++) {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }

    for($a = $j = $i = 0; $i 《 $string_length; $i++) {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a];
        $box[$a] = $box[$j];
        $box[$j] = $tmp;
        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
    }

    if($operation == ’DECODE’) {
        if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() 》 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
            return substr($result, 26);
        }else{
            return ’’;
        }
    }else{
        return $keyc.rtrim(strtr(base64_encode($result), ’+/’, ’-_’), ’=’);
    }
}
?》

zend加密的php怎么运行


如果要让Zend加密的代码在PHP 5.3.x上运行,必须选择针对PHP 5.3加密,旧版本的加密文件不能在PHP 5.3上运行。同时,如果是Windows平台还必须选择PHP的NTS版本。对应的Zend解密插件是Zend Loader。需要全部手工安装。获取ZendLoader.dll之后修改PHP文件增加以下两行:zend_extension=“(ZendLoader.dll的路径)“zend_loader.enable=1
而如果要让Zend加密的代码在PHP 5.3之前的平台上运行,必须选择针对旧版PHP加密。针对PHP 5.3加密的代码是不能在PHP 5.3之前的平台上运行的。
同时,如果是Windows平台还必须选择PHP的TS版本。对应的Zend解密插件是Zend Optimizer。
有安装程序,需要自行安装。
更多问题可以去php中文网问答社区提问http://www.php.cn/wenda.html,大神在线帮你解决,希望对你有帮助
-php源码加密后如何运行