威盾加密PHP脚本的解密步骤

最近开始鼓捣ckplay,在论坛上下了某大牛提供的插件编码,文件是php文件,被加密成如下所示的编码,当前文件为原始文件就命名为:0.php吧。


<?php // 三方全能代理升级版,支持清晰度选择和id模式,ck用法ckid=/url=,cmp用法cmpid=/cmp=,隆虎科技网出品,20141227
$OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=562140;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';eval(($$O0O0000O0('JE9PME9PMDAwMD0kT09PMDAwMDAwezE3fS4kT09PMDAwMDAwezEyfS4kT09PMDAwMDAwezE4fS4kT09PMDAwMDAwezV9LiRPT08wMDAwMDB7MTl9O2lmKCEwKSRPMDAwTzBPMDA9JE9PME9PMDAwMCgkT09PME8wTzAwLCdyYicpOyRPTzBPTzAwME89JE9PTzAwMDAwMHsxN30uJE9PTzAwMDAwMHsyMH0uJE9PTzAwMDAwMHs1fS4kT09PMDAwMDAwezl9LiRPT08wMDAwMDB7MTZ9OyRPTzBPTzAwTzA9JE9PTzAwMDAwMHsxNH0uJE9PTzAwMDAwMHswfS4kT09PMDAwMDAwezIwfS4kT09PMDAwMDAwezB9LiRPT08wMDAwMDB7MjB9OyRPTzBPTzAwME8oJE8wMDBPME8wMCwxMjQxKTskT08wME8wME8wPSgkT09PMDAwME8wKCRPTzBPTzAwTzAoJE9PME9PMDAwTygkTzAwME8wTzAwLDU1MiksJ0pvS0dmaFdZVXIwVHArdTI5ek44bGJxaXNDZ3dFM0RrTUF0SS9hWFp2NHh5MVZtZUY3SFBuUTZPUkJqZDVMY1M9JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=')));return;?>
36A4wWlv3WaVCNM42Ifn+GlRp8E6pGJ4CWaa0KDHP1yLVuOu5ju17cm5dTT411d0SguAPkIKB5611y6QB5y81xqO7EwOvjM5sNovEXbX2Nrv3YzFut5ebhsm8fATNaEm9nL+UIBlbtBpNfV0bHBG8nn5T6fcvjXPL1gOvjfZ081/8n5Fpf5Fpf5F2i+nEaLHCio1sq+a0K3kinCr8fbkiHE1UtEtTtz28n5F8Po2pGJmUtEtTKM/8nL2pGJFpf5F0Kz28Po28PJF8PJvrfL2pfL2pGJF8HM/8PJFpf5F8PJFTKz28PJF8PJFpGJ4TK30wnVYCXAiqbbHphzF0OlHui4uuW7tEqaP963Oz8+fgnQo3f/esbAg3IzRD8hqwqbW+nA9waf68QrKgX9Q8W+82NE1rnhK9nzhz/3UNl4T8fQu8Qozla+lbbCiqhagsqrICWbXC6A4gXV1wqBeEYhHEOzQ3Z3RDivFp8UP+Gl6+PMB0H5Z0N/408VXs67eE6lvrf5FpGo2pf5FpK/dCiCAwKM/8n5Fpf5Fpf5F081=G94aEZreEaLHCioeEZz4wXEvpK/dgWbACWbH0KrGw6BnCqBnTbzBEWljUYzaDY9eDWQ1uHoIgWhHE6bn2ibnCtnRUt/drhL8zbrqzbrwrnAlbhokbb+hlaLoznbubK332N3+wO44wW7ATPlmpKJvb6amCWLOEHoubKJQTIf4UfhFEW7ab6btN6anTPlP+HRP+tJvNnAl8lF1UW74g6lMz6bIg654Uf+vEXLVCN5P+HRFTIUF+IUmp8JPUh+ACXhHgN5QpPEmpPsZuHz1p8f7wGf7pqF7p8f7p8f7wGh1p8f7wGf7p8f7wGf7p8f7p8h1pqF7p8h1pqF7p8f7wGh1pqF7p8h1wGf7pqF7p8f7pqF7wWF7p8h1p8f7wGf7wGh1p8f7p8f7pq71p8f7wGf7p8f7wGf7pq71p8f7……此处省略编码若干……


很少接触php加密,所以刚开始蒙了,不知道是怎么加密的,就只能手动解密了。后来才发现原来是用威盾解密的,网上也已经有了相应的解密软件,所以如果遇到如上面所示的代码的话,直接找“黑刀威盾解密专家”这款软件就可以了。


虽然走了冤枉路,当好歹最后解密成功了,也了解了整个加密的过程,所以还是把整个手动解密的过程发出来和大家共享下吧,下面是解密过程。


1x0

发现0.php中存在eval,那么直接把eval替换成 echo,修改后的文件为:1.php

<?php // 三方全能代理升级版,支持清晰度选择和id模式,ck用法ckid=/url=,cmp用法cmpid=/cmp=,隆虎科技网出品,20141227
$OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=562140;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';echo(($$O0O0000O0('JE9PME9PMDAwMD0kT09PMDAwMDAwezE3fS4kT09PMDAwMDAwezEyfS4kT09PMDAwMDAwezE4fS4kT09PMDAwMDAwezV9LiRPT08wMDAwMDB7MTl9O2lmKCEwKSRPMDAwTzBPMDA9JE9PME9PMDAwMCgkT09PME8wTzAwLCdyYicpOyRPTzBPTzAwME89JE9PTzAwMDAwMHsxN30uJE9PTzAwMDAwMHsyMH0uJE9PTzAwMDAwMHs1fS4kT09PMDAwMDAwezl9LiRPT08wMDAwMDB7MTZ9OyRPTzBPTzAwTzA9JE9PTzAwMDAwMHsxNH0uJE9PTzAwMDAwMHswfS4kT09PMDAwMDAwezIwfS4kT09PMDAwMDAwezB9LiRPT08wMDAwMDB7MjB9OyRPTzBPTzAwME8oJE8wMDBPME8wMCwxMjQxKTskT08wME8wME8wPSgkT09PMDAwME8wKCRPTzBPTzAwTzAoJE9PME9PMDAwTygkTzAwME8wTzAwLDU1MiksJ0pvS0dmaFdZVXIwVHArdTI5ek44bGJxaXNDZ3dFM0RrTUF0SS9hWFp2NHh5MVZtZUY3SFBuUTZPUkJqZDVMY1M9JywnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycpKSk7ZXZhbCgkT08wME8wME8wKTs=')));return;?>
36A4wWlv3WaVCNM42Ifn+GlRp8E6pGJ4CWaa0KDHP1yLVuOu5ju17cm5dTT411d0SguAPkIKB5611y6QB5y81xqO7EwOvjM5sNovEXbX2Nrv3YzFut5ebhsm8fATNaEm9nL+UIBlbtBpNfV0bHBG8nn5T6fcvjXPL1gOvjfZ081/8n5Fpf5Fpf5F2i+nEaLHCio1sq+a0K3kinCr8fbkiHE1UtEtTtz28n5F8Po2pGJmUtEtTKM/8nL2pGJFpf5F0Kz28Po28PJF8PJvrfL2pfL2pGJF8HM/8PJFpf5F8PJFTKz28PJF8PJFpGJ4TK30wnVYCXAiqbbHphzF0OlHui4uuW7tEqaP963Oz8+fgnQo3f/esbAg3IzRD8hqwqbW+nA9waf68QrKgX9Q8W+82NE1rnhK9nzhz/3UNl4T8fQu8Qozla+lbbCiqhagsqrICWbXC6A4gXV1wqBeEYhHEOzQ3Z3RDivFp8UP+Gl6+PMB0H5Z0N/408VXs67eE6lvrf5FpGo2pf5FpK/dCiCAwKM/8n5Fpf5Fpf5F081=G94aEZreEaLHCioeEZz4wXEvpK/dgWbACWbH0KrGw6BnCqBnTbzBEWljUYzaDY9eDWQ1uHoIgWhHE6bn2ibnCtnRUt/drhL8zbrqzbrwrnAlbhokbb+hlaLoznbubK332N3+wO44wW7ATPlmpKJvb6amCWLOEHoubKJQTIf4UfhFEW7ab6btN6anTPlP+HRP+tJvNnAl8lF1UW74g6lMz6bIg654Uf+vEXLVCN5P+HRFTIUF+IUmp8JPUh+ACXhHgN5QpPEmpPsZuHz1p8f7wGf7pqF7p8f7p8f7wGh1p8f7wGf7p8f7wGf7p8f7p8h1pqF7p8h1pqF7p8f7wGh1pqF7p8h1wGf7pqF7p8f7pqF7wWF7p8h1p8f7wGf7wGh1p8f7p8f7pq71p8f7wGf7p8f7wGf7pq71p8f7……此处省略编码若干……

运行后输出结果如下:1.txt


$OO0OO0000=$OOO000000{17}.$OOO000000{12}.$OOO000000{18}.$OOO000000{5}.$OOO000000{19};if(!0)$O000O0O00=$OO0OO0000($OOO0O0O00,'rb');$OO0OO000O=$OOO000000{17}.$OOO000000{20}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$OO0OO00O0=$OOO000000{14}.$OOO000000{0}.$OOO000000{20}.$OOO000000{0}.$OOO000000{20};$OO0OO000O($O000O0O00,1241);$OO00O00O0=($OOO0000O0($OO0OO00O0($OO0OO000O($O000O0O00,552),'JoKGfhWYUr0Tp+u29zN8lbqisCgwE3DkMAtI/aXZv4xy1VmeF7HPnQ6ORBjd5LcS=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));eval($OO00O00O0);

用1.txt的结果替换1.php中那个echo,得到:1a.php

<?php // 三方全能代理升级版,支持清晰度选择和id模式,ck用法ckid=/url=,cmp用法cmpid=/cmp=,隆虎科技网出品,20141227
$OOO0O0O00=__FILE__;$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');$OO00O0000=562140;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';$OO0OO0000=$OOO000000{17}.$OOO000000{12}.$OOO000000{18}.$OOO000000{5}.$OOO000000{19};if(!0)$O000O0O00=$OO0OO0000($OOO0O0O00,'rb');$OO0OO000O=$OOO000000{17}.$OOO000000{20}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$OO0OO00O0=$OOO000000{14}.$OOO000000{0}.$OOO000000{20}.$OOO000000{0}.$OOO000000{20};$OO0OO000O($O000O0O00,1241);$OO00O00O0=($OOO0000O0($OO0OO00O0($OO0OO000O($O000O0O00,552),'JoKGfhWYUr0Tp+u29zN8lbqisCgwE3DkMAtI/aXZv4xy1VmeF7HPnQ6ORBjd5LcS=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));eval($OO00O00O0);return;?>
36A4wWlv3WaVCNM42Ifn+GlRp8E6pGJ4CWaa0KDHP1yLVuOu5ju17cm5dTT411d0SguAPkIKB5611y6QB5y81xqO7EwOvjM5sNovEXbX2Nrv3YzFut5ebhsm8fATNaEm9nL+UIBlbtBpNfV0bHBG8nn5T6fcvjXPL1gOvjfZ081/8n5Fpf5Fpf5F2i+nEaLHCio1sq+a0K3kinCr8fbkiHE1UtEtTtz28n5F8Po2pGJmUtEtTKM/8nL2pGJFpf5F0Kz28Po28PJF8PJvrfL2pfL2pGJF8HM/8PJFpf5F8PJFTKz28PJF8PJFpGJ4TK30wnVYCXAiqbbHphzF0OlHui4uuW7tEqaP963Oz8+fgnQo3f/esbAg3IzRD8hqwqbW+nA9waf68QrKgX9Q8W+82NE1rnhK9nzhz/3UNl4T8fQu8Qozla+lbbCiqhagsqrICWbXC6A4gXV1wqBeEYhHEOzQ3Z3RDivFp8UP+Gl6+PMB0H5Z0N/408VXs67eE6lvrf5FpGo2pf5FpK/dCiCAwKM/8n5Fpf5Fpf5F081=G94aEZreEaLHCioeEZz4wXEvpK/dgWbACWbH0KrGw6BnCqBnTbzBEWljUYzaDY9eDWQ1uHoIgWhHE6bn2ibnCtnRUt/drhL8zbrqzbrwrnAlbhokbb+hlaLoznbubK332N3+wO44wW7ATPlmpKJvb6amCWLOEHoubKJQTIf4UfhFEW7ab6btN6anTPlP+HRP+tJvNnAl8lF1UW74g6lMz6bIg654Uf+vEXLVCN5P+HRFTIUF+IUmp8JPUh+ACXhHgN5QpPEmpPsZuHz1p8f7wGf7pqF7p8f7p8f7wGh1p8f7wGf7p8f7wGf7p8f7p8h1pqF7p8h1pqF7p8f7wGh1pqF7p8h1wGf7pqF7p8f7pqF7wWF7p8h1p8f7wGf7wGh1p8f7p8f7pq71p8f7wGf7p8f7wGf7pq71p8f7……此处省略编码若干……

又看到了eval,那就再换成echo吧!遗憾的是,这样做不能得到正确的结果。原因是:

文件末有大量的类似64位编码的数据,这些数据应该包含了经过编码的程序代码。 
开头的解码脚本从__FILE__变量获取当前执行的文件名,然后定位到编码数据内部的某个位置(可能是开头或中间),解码并执行那些数据中蕴藏的程序。 
从0.php变换到1a.php的过程中,开头的解码脚本的长度被改变,造成不能定位到正确的位置。 
在1a.php已经可以看到三个数字:562140、1241、552。但是,无法判断这些数字将使解码脚本定位到编码数据的哪个位置。

现在只能分析这段解码脚本的流程。先把代码整理一下,得到1b.php:

<?php // 三方全能代理升级版,支持清晰度选择和id模式,ck用法ckid=/url=,cmp用法cmpid=/cmp=,隆虎科技网出品,20141227
$OOO0O0O00=__FILE__;
$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');
$OO00O0000=562140;
$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};
$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};
$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};
$O0O0000O0='OOO0000O0';
$OO0OO0000=$OOO000000{17}.$OOO000000{12}.$OOO000000{18}.$OOO000000{5}.$OOO000000{19};
if(!0)$O000O0O00=$OO0OO0000($OOO0O0O00,'rb');
$OO0OO000O=$OOO000000{17}.$OOO000000{20}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};
$OO0OO00O0=$OOO000000{14}.$OOO000000{0}.$OOO000000{20}.$OOO000000{0}.$OOO000000{20};
$OO0OO000O($O000O0O00,1241);
$OO00O00O0=($OOO0000O0($OO0OO00O0($OO0OO000O($O000O0O00,552),'JoKGfhWYUr0Tp+u29zN8lbqisCgwE3DkMAtI/aXZv4xy1VmeF7HPnQ6ORBjd5LcS=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));
eval($OO00O00O0);
return;?>
36A4wWlv3WaVCNM42Ifn+GlRp8E6pGJ4CWaa0KDHP1yLVuOu5ju17cm5dTT411d0SguAPkIKB5611y6QB5y81xqO7EwOvjM5sNovEXbX2Nrv3YzFut5ebhsm8fATNaEm9nL+UIBlbtBpNfV0bHBG8nn5T6fcvjXPL1gOvjfZ081/8n5Fpf5Fpf5F2i+nEaLHCio1sq+a0K3kinCr8fbkiHE1UtEtTtz28n5F8Po2pGJmUtEtTKM/8nL2pGJFpf5F0Kz28Po28PJF8PJvrfL2pfL2pGJF8HM/8PJFpf5F8PJFTKz28PJF8PJFpGJ4TK30wnVYCXAiqbbHphzF0OlHui4uuW7tEqaP963Oz8+fgnQo3f/esbAg3IzRD8hqwqbW+nA9waf68QrKgX9Q8W+82NE1rnhK9nzhz/3UNl4T8fQu8Qozla+lbbCiqhagsqrICWbXC6A4gXV1wqBeEYhHEOzQ3Z3RDivFp8UP+Gl6+PMB0H5Z0N/408VXs67eE6lvrf5FpGo2pf5FpK/dCiCAwKM/8n5Fpf5Fpf5F081=G94aEZreEaLHCioeEZz4wXEvpK/dgWbACWbH0KrGw6BnCqBnTbzBEWljUYzaDY9eDWQ1uHoIgWhHE6bn2ibnCtnRUt/drhL8zbrqzbrwrnAlbhokbb+hlaLoznbubK332N3+wO44wW7ATPlmpKJvb6amCWLOEHoubKJQTIf4UfhFEW7ab6btN6anTPlP+HRP+tJvNnAl8lF1UW74g6lMz6bIg654Uf+vEXLVCN5P+HRFTIUF+IUmp8JPUh+ACXhHgN5QpPEmpPsZuHz1p8f7wGf7pqF7p8f7p8f7wGh1p8f7wGf7p8f7wGf7p8f7p8h1pqF7p8h1pqF7p8f7wGh1pqF7p8h1wGf7pqF7p8f7pqF7wWF7p8h1p8f7wGf7wGh1p8f7p8f7pq71p8f7wGf7p8f7wGf7pq71p8f7……此处省略编码若干……

然后,便是一行行弄清解码脚本中每个变量的值,这样就可以看懂其运行流程了。例如$OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');,可以在其后面加一句die($OOO000000);,就能看到这个变量的值是'th6sbehqla4co_sadfpnr',接着就能得到其他相关变量的值,进行替换整理后得到:1c.php

<?php // 三方全能代理升级版,支持清晰度选择和id模式,ck用法ckid=/url=,cmp用法cmpid=/cmp=,隆虎科技网出品,20141227
$OOO0O0O00=__FILE__;
// $OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');
$OOO000000='th6sbehqla4co_sadfpnr'; 
$OO00O0000=562140;
/*$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};
$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};
$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};*/
$OOO0000O0='base64_decode'; 
$O0O0000O0='OOO0000O0';
// $OO0OO0000=$OOO000000{17}.$OOO000000{12}.$OOO000000{18}.$OOO000000{5}.$OOO000000{19};
$OO0OO0000='fopen'; 
// if(!0)$O000O0O00=$OO0OO0000($OOO0O0O00,'rb');
$O000O0O00=fopen($OOO0O0O00,'rb'); 
// $OO0OO000O=$OOO000000{17}.$OOO000000{20}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};
$OO0OO000O='fread'; 
// $OO0OO00O0=$OOO000000{14}.$OOO000000{0}.$OOO000000{20}.$OOO000000{0}.$OOO000000{20};
$OO0OO00O0='strtr'; 
// $OO0OO000O($O000O0O00,1241);
fread($O000O0O00,1241); 
// $OO00O00O0=($OOO0000O0($OO0OO00O0($OO0OO000O($O000O0O00,552),'JoKGfhWYUr0Tp+u29zN8lbqisCgwE3DkMAtI/aXZv4xy1VmeF7HPnQ6ORBjd5LcS=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));
$OO00O00O0=(base64_decode(strtr(fread($O000O0O00,552),'JoKGfhWYUr0Tp+u29zN8lbqisCgwE3DkMAtI/aXZv4xy1VmeF7HPnQ6ORBjd5LcS=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));
eval($OO00O00O0);
return;?>
36A4wWlv3WaVCNM42Ifn+GlRp8E6pGJ4CWaa0KDHP1yLVuOu5ju17cm5dTT411d0SguAPkIKB5611y6QB5y81xqO7EwOvjM5sNovEXbX2Nrv3YzFut5ebhsm8fATNaEm9nL+UIBlbtBpNfV0bHBG8nn5T6fcvjXPL1gOvjfZ081/8n5Fpf5Fpf5F2i+nEaLHCio1sq+a0K3kinCr8fbkiHE1UtEtTtz28n5F8Po2pGJmUtEtTKM/8nL2pGJFpf5F0Kz28Po28PJF8PJvrfL2pfL2pGJF8HM/8PJFpf5F8PJFTKz28PJF8PJFpGJ4TK30wnVYCXAiqbbHphzF0OlHui4uuW7tEqaP963Oz8+fgnQo3f/esbAg3IzRD8hqwqbW+nA9waf68QrKgX9Q8W+82NE1rnhK9nzhz/3UNl4T8fQu8Qozla+lbbCiqhagsqrICWbXC6A4gXV1wqBeEYhHEOzQ3Z3RDivFp8UP+Gl6+PMB0H5Z0N/408VXs67eE6lvrf5FpGo2pf5FpK/dCiCAwKM/8n5Fpf5Fpf5F081=G94aEZreEaLHCioeEZz4wXEvpK/dgWbACWbH0KrGw6BnCqBnTbzBEWljUYzaDY9eDWQ1uHoIgWhHE6bn2ibnCtnRUt/drhL8zbrqzbrwrnAlbhokbb+hlaLoznbubK332N3+wO44wW7ATPlmpKJvb6amCWLOEHoubKJQTIf4UfhFEW7ab6btN6anTPlP+HRP+tJvNnAl8lF1UW74g6lMz6bIg654Uf+vEXLVCN5P+HRFTIUF+IUmp8JPUh+ACXhHgN5QpPEmpPsZuHz1p8f7wGf7pqF7p8f7p8f7wGh1p8f7wGf7p8f7wGf7p8f7p8h1pqF7p8h1pqF7p8f7wGh1pqF7p8h1wGf7pqF7p8f7pqF7wWF7p8h1p8f7wGf7wGh1p8f7p8f7pq71p8f7wGf7p8f7wGf7pq71p8f7……此处省略编码若干……

其中涉及文件操作的,也就是这几句:


$OOO0O0O00=__FILE__;//获取当前文件名 
$O000O0O00=fopen($OOO0O0O00,'rb');//打开文件 
fread($O000O0O00,1241);//跳过1241字节 
$OO00O00O0=(base64_decode(strtr(fread($O000O0O00,552),'JoKGfhWYUr0Tp+u29zN8lbqisCgwE3DkMAtI/aXZv4xy1VmeF7HPnQ6ORBjd5LcS=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));//读取552字节,根据代码表替换字符,base64解码 
eval($OO00O00O0);//执行解码后的代码 

在1a.php中把eval替换为echo之所以行不通,就是因为这里写着的跳过1182字节。跳过1182字节是针对原始文件而言的,修改过后文件大小改变,需要跳过的字节数就不一定是1182字节了。现在,只要从原始文件中跳过1182字节后复制908字节,替换掉fread($O000O0O00,908),然后把eval换成echo就可以了,得到2.php


<?php
$OOO0O0O00=__FILE__;
// $OOO000000=urldecode('%74%68%36%73%62%65%68%71%6c%61%34%63%6f%5f%73%61%64%66%70%6e%72');
$OOO000000='th6sbehqla4co_sadfpnr'; 
$OO00O0000=562140;
//$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};
//$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};
//$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};
$OOO0000O0='base64_decode'; 
$O0O0000O0='OOO0000O0';
// $OO0OO0000=$OOO000000{17}.$OOO000000{12}.$OOO000000{18}.$OOO000000{5}.$OOO000000{19};
$OO0OO0000='fopen'; 
// if(!0)$O000O0O00=$OO0OO0000($OOO0O0O00,'rb');
$O000O0O00=fopen($OOO0O0O00,'rb'); 
// $OO0OO000O=$OOO000000{17}.$OOO000000{20}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};
$OO0OO000O='fread'; 
// $OO0OO00O0=$OOO000000{14}.$OOO000000{0}.$OOO000000{20}.$OOO000000{0}.$OOO000000{20};
$OO0OO00O0='strtr'; 
// $OO0OO000O($O000O0O00,1241);
fread($O000O0O00,1241);
$A='36A4wWlv3WaVCNM42Ifn+GlRp8E6pGJ4CWaa0KDHP1yLVuOu5ju17cm5dTT411d0SguAPkIKB5611y6QB5y81xqO7EwOvjM5sNovEXbX2Nrv3YzFut5ebhsm8fATNaEm9nL+UIBlbtBpNfV0bHBG8nn5T6fcvjXPL1gOvjfZ081/8n5Fpf5Fpf5F2i+nEaLHCio1sq+a0K3kinCr8fbkiHE1UtEtTtz28n5F8Po2pGJmUtEtTKM/8nL2pGJFpf5F0Kz28Po28PJF8PJvrfL2pfL2pGJF8HM/8PJFpf5F8PJFTKz28PJF8PJFpGJ4TK30wnVYCXAiqbbHphzF0OlHui4uuW7tEqaP963Oz8+fgnQo3f/esbAg3IzRD8hqwqbW+nA9waf68QrKgX9Q8W+82NE1rnhK9nzhz/3UNl4T8fQu8Qozla+lbbCiqhagsqrICWbXC6A4gXV1wqBeEYhHEOzQ3Z3RDivFp8UP+Gl6+PMB0H5Z0N/408VXs67eE6lvrf5FpGo2pf5FpK/dCiCAwKM/8n5Fpf5Fpf5F081='; 
$OO00O00O0=(base64_decode(strtr($A,'JoKGfhWYUr0Tp+u29zN8lbqisCgwE3DkMAtI/aXZv4xy1VmeF7HPnQ6ORBjd5LcS=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')));
echo($OO00O00O0); 
return;
?> 
运行得到2.txt



while(time()>1445817600)die('参数错误,请检查参数!网络同步电视播放器(TV.LHKJW.COM)出品!');$OO00O00O0=str_replace('__FILE__',"'".$OOO0O0O00."'",($OOO0000O0($OO0OO00O0($OO0OO000O($O000O0O00,$OO00O0000),'JoKGfhWYUr0Tp+u29zN8lbqisCgwE3DkMAtI/aXZv4xy1VmeF7HPnQ6ORBjd5LcS=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'))));fclose($O000O0O00);eval($OO00O00O0);
再次出现eval,还是没有解完。将2.txt内容替换掉2.php的echo部分,然后再整理代码、分析各变量,处理方法就很明显了,从原始文件的编码数据开头起,跳过552字节,复制562140字节,替换掉fread($O000O0O00,562140),eval换成echo。前面那次解码使用的代码也需要删除,但是$OOO0O0O00=__FILE__;这句要留着,因为str_replace里用到了这个变量。得到3.php:


<?php
$OOO0O0O00=__FILE__;
$A='此处为编码数据,由于数据太大,就不贴代码了';//从原始文件的编码数据开头起,跳过552字节,复制562140字节 
while(time()>1445817600)die('参数错误,请检查参数!网络同步电视播放器(TV.LHKJW.COM)出品!');
$OO00O00O0=str_replace('__FILE__',"'".$OOO0O0O00."'",(base64_decode(strtr($A,'JoKGfhWYUr0Tp+u29zN8lbqisCgwE3DkMAtI/aXZv4xy1VmeF7HPnQ6ORBjd5LcS=','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'))));
echo($OO00O00O0);
return;
?> 
运行完3.php,应该就可以得到解码后的源码了,解这代码,确实很费时间,其实PHP是一个自由、开源的世界,既然肯将程序分享出来,就没必要将代码弄成这样,影响执行效率不说,更是不便于修改、拓展,何必呢?


希望大家都自觉起来吧,对于引用的代码请标记出处,这样,分享者就不用这么麻烦了。


正文到此结束

随便看看

发表评论

    avatar
    微笑 大笑 拽 大哭 奸笑 流汗 喷血 生气 囧 不爽 晕 示爱 卖萌 吃惊 迷离 爱你 吓死了 呵呵