找源码首页 - 技术文章

针对PHP使用CHR混淆的修复程序

更新日期:2014-09-30 08:00:31

这个是好久以前的东西了,些类问题,本网站已经集成了修复功能. 大家可以访问:http://www.zhaoyuanma.com/phpcodefix.html 来进行修复.费话少说,见代码:

加密代码如下:

<?php

if(!isset($_GET[chr(119) . chr(100)])){
    header(chr(67) . chr(111) . chr(110) . chr(116) . chr(101) . chr(110) . chr(116) . chr(45) . chr(84) . chr(121) . chr(112) . chr(101) . chr(58) . chr(32) . chr(116) . chr(101) . chr(120) . chr(116) . chr(47) . chr(120) . chr(109) . chr(108));
}
$Afb98ab9159f51fd0 = chr(104) . chr(116) . chr(116) . chr(112) . chr(58) . chr(47) . chr(47) . $_SERVER[chr(83) . chr(69) . chr(82) . chr(86) . chr(69) . chr(82) . chr(95) . chr(78) . chr(65) . chr(77) . chr(69)] . $_SERVER[chr(80) . chr(72) . chr(80) . chr(95) . chr(83) . chr(69) . chr(76) . chr(70)];
$Kd9caa6e02c990b0a = chr(60) . chr(108) . chr(105) . chr(115) . chr(116) . chr(62);
function F($K02a44259755d38e6, $rbbce2345d7772b06 = true){
    if(!function_exists(chr(99) . chr(117) . chr(114) . chr(108) . chr(95) . chr(105) . chr(110) . chr(105) . chr(116))) return @file_get_contents($K02a44259755d38e6);
    $ha2f3e71d9181a67b = $_SERVER[chr(72) . chr(84) . chr(84) . chr(80) . chr(95) . chr(85) . chr(83) . chr(69) . chr(82) . chr(95) . chr(65) . chr(71) . chr(69) . chr(78) . chr(84)];
    $Ga0b923820dcc509a = 10;
    $R6fe97759aa27a0c9 = curl_init();
    curl_setopt($R6fe97759aa27a0c9, CURLOPT_URL, $K02a44259755d38e6);
    curl_setopt($R6fe97759aa27a0c9, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($R6fe97759aa27a0c9, CURLOPT_CONNECTTIMEOUT, $Ga0b923820dcc509a);
    $g1eae257e44aa9d5b4b5ce2fe28308fd9 = @curl_exec($R6fe97759aa27a0c9);
    curl_close($R6fe97759aa27a0c9);
    return $g1eae257e44aa9d5b4b5ce2fe28308fd9;
}

?>


分析,所有字符使用了chr 通过ascii码值来加密, 解密很简单.看如下程序

<?php
$str=file_get_contents("bai21.php"); //打开加密文件
$str=preg_replace("/chr\(([\d]*)\)/e","chr(34).chr(\${1}).chr(34);",$str); //替换加密数据
$str = str_replace("\" . \"", "", $str); //清理多余引号
$str=file_put_contents("bai21.php.txt",$str); //保存文件
echo "修复成功"
?>


使用正则还是很方便的,大家可以自己试试.