php代码解密
Posted cainiaoyimei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘);、eval(($$O0O0000O0(
例如:
<?php /* */$OOO000000=urldecode(‘%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64‘);$GLOBALS[‘OOO0000O0‘]=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5}.$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$GLOBALS[‘OOO0000O0‘].=$GLOBALS[‘OOO0000O0‘]{3}.$OOO000000{11}.$OOO000000{12}.$GLOBALS[‘OOO0000O0‘]{7}.$OOO000000{5};$GLOBALS[‘OOO000O00‘]=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15};$GLOBALS[‘O0O000O00‘]=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14};$GLOBALS[‘O0O000O00‘]=$O0O000O00.$OOO000000{3};$GLOBALS[‘O0O00OO00‘]=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16};$GLOBALS[‘OOO00000O‘]=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8};$OOO0O0O00=__FILE__;$OO00O0000=0x9980;echo($GLOBALS[‘OOO0000O0‘](‘JE8wMDBPME8wMD0kR0xPQkFMU1snT09PMDAwTzAwJ10oJE9PTzBPME8wMCwncmInKTskR0xPQkFMU1snTzBPMDBPTzAwJ10oJE8wMDBPME8wMCwweDUwMik7JE9PMDBPMDBPMD0kR0xPQkFMU1snT09PMDAwME8wJ10oJEdMT0JBTFNbJ09PTzAwMDAwTyddKCRHTE9CQUxTWydPME8wME9PMDAnXSgkTzAwME8wTzAwLDB4MWE4KSwnRW50ZXJ5b3V3a2hSSFlLTldPVVRBYUJiQ2NEZEZmR2dJaUpqTGxNbVBwUXFTc1Z2WHhaejAxMjM0NTY3ODkrLz0nLCdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJykpO2V2YWwoJE9PMDBPMDBPMCk7‘));return;?> ~Dkr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXLO0xN···········后面还有很多这样的代码。
发现上面这个?>后面有很多的代码,很明显,这些代码肯定不是要给客户的浏览器看的,肯定是在php中进行解析的。
<?php /* */ $OOO000000=urldecode(‘%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64‘); $GLOBALS[‘OOO0000O0‘]=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5}.$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16}; $GLOBALS[‘OOO0000O0‘].=$GLOBALS[‘OOO0000O0‘]{3}.$OOO000000{11}.$OOO000000{12}.$GLOBALS[‘OOO0000O0‘]{7}.$OOO000000{5}; $GLOBALS[‘OOO000O00‘]=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15}; $GLOBALS[‘O0O000O00‘]=$OOO000000{0}.$OOO000000{1}.$OOO000000{5}.$OOO000000{14}; $GLOBALS[‘O0O000O00‘]=$O0O000O00.$OOO000000{3}; $GLOBALS[‘O0O00OO00‘]=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16}; $GLOBALS[‘OOO00000O‘]=$OOO000000{3}.$OOO000000{14}.$OOO000000{8}.$OOO000000{14}.$OOO000000{8}; $OOO0O0O00=__FILE__; $OO00O0000=0x9980; $O000O0O00=$GLOBALS[‘OOO000O00‘]($OOO0O0O00,‘rb‘); $GLOBALS[‘O0O00OO00‘]($O000O0O00,0x502); $OO00O00O0=$GLOBALS[‘OOO0000O0‘]($GLOBALS[‘OOO00000O‘]($GLOBALS[‘O0O00OO00‘]($O000O0O00,0x1a8),‘EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=‘,‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/‘)); eval($OO00O00O0); return; ?>~Dkr9NHenNHenNHe1zfukgFMaXdoyjcUImb19oUAxyb18mRtwmwJ4LT09NHr8XTzEXRJwmwJXLO0xNWLyHA1SmT09NHeEXHr8Xk10PkrfHT0knTyYdk09NTzEXHeEXTZffhtOuTr9tWAxTBZfNHr8XHr9NHeEmbUILTzEXHr8XTzEXRtONTzEXTzEXHeEpRtfydmOlFmlvfbfqDykwBAsKa09aaryiWMkeC0OLOMcuc0lpUMpHdr1sAunOFaYzamcCGyp6HerZH
首先我们将代码整理上面成大概可以阅读的形式。
什么都不管先,先把长相怪异的变量都输出出来!
按道理应该都要输出出来的,根据我之前做的结果,发现有用的只有如下几个变量,其他为干扰变量。
$OOO000000=urldecode(‘%66%67%36%73%62%65%68%70%72%61%34%63%6f%5f%74%6e%64‘); die($OOO000000); //输出出来$OOO000000 为 fg6sbehpra4co_tnd
$GLOBALS[‘OOO0000O0‘]=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5}.$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16}; die($GLOBALS[‘OOO0000O0‘]); //输出出来$GLOBALS[‘OOO0000O0‘] 为 base64_decode
$GLOBALS[‘OOO000O00‘]=$OOO000000{0}.$OOO000000{12}.$OOO000000{7}.$OOO000000{5}.$OOO000000{15}; die($GLOBALS[‘OOO000O00‘]); // 输出出来$GLOBALS[‘OOO000O00‘] 为 fopen
$GLOBALS[‘O0O00OO00‘]=$OOO000000{0}.$OOO000000{8}.$OOO000000{5}.$OOO000000{9}.$OOO000000{16}; die($GLOBALS[‘O0O00OO00‘]); //输出出来 $GLOBALS[‘O0O00OO00‘] 为 fread
紧接着我们来看一下下面的代码 (重要、重要、重要)。
$O000O0O00=$GLOBALS[‘OOO000O00‘]($OOO0O0O00,‘rb‘);
//然后我们重点来分析上述代码,根据我们之前输出的可以发现这行代码实际为:
$O000O0O00=fopen(FILE,‘rb‘);
$GLOBALS[‘O0O00OO00‘]($O000O0O00,0x502);
//再分析这个上述代码,根据我们之前输出得到变量,可以发现这行代码实际为:
fread($O000O0O00,0x502); //意思就是读文件到0x502 但没有获取内容,这时候句柄指向了0x502,0x502之前的内容就没有了。
$OO00O00O0=$GLOBALS[‘OOO0000O0‘]($GLOBALS[‘OOO00000O‘]($GLOBALS[‘O0O00OO00‘]($O000O0O00,0x1a8),‘EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=‘,‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/‘));
//再分析这个上述代码,根据我们之前输出得到变量,可以发现这行代码实际为:
$OO00O00O0 = base64_decode(strtr(fread($O000O0O00,0x1a8),‘EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=‘,‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/‘));
//上面这个代码又是重新从0x502后取了0x1a8单位的内容赋给了$OO00O00O0。
这时候我们解密的步骤很清楚了。
先找到这个文件的第0x502,然后删除之前的文本,然后再往后找到0x1a8,复制下来这段文本。
构造:
$data = "复制下来的文本";
$decode = base64_decode(strtr($data,‘EnteryouwkhRHYKNWOUTAaBbCcDdFfGgIiJjLlMmPpQqSsVvXxZz0123456789+/=‘,‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/‘));
echo $decode; //即可得到源码。
以上是关于php代码解密的主要内容,如果未能解决你的问题,请参考以下文章