php簡單混淆類加密文件如何解密?/ php混淆加密文件 並解密


最近在整理單位購買的源碼時,發現源碼里好多文件都混淆加密了。雖然不解密也不影響使用,但是心里總覺得有些別扭,便試着將加密的文件解密。

      首先,百度了一下,看網上是否有現成的混淆類解密工具,搜到了一個http://www.zhaoyuanma.com/。嘗試了一下,這個還真是好用,免費的,解密速度挺快。但是當解到一個比較大的文件時,發現文件上傳不上去了,網站提示:文件無法上傳。開始以為是不是解密次數多了,網站限制了。隔了一天試了一下,還是不行,后來打開了文件一下打算仔細的看看,覺得文件打開的比較遲鈍,硬盤也吱吱的響,這才注意到這個文件的體積還挺大的,都4M多,我說怎么上傳不上去。

      無法通過工具解密了,就只有自己想辦法,試着自己解密試試,結果踩到了一個坑。

      先發一個混淆類加密的樣式:

復制代碼
$O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");
$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};
$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};
$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};

eval($O00O0O("JE8wTzAwMD0iZENvVnp1dGtJSnllUVd4VXJxQVNOb*************));
復制代碼

 首先 在第一行后插入 echo $O00OO0; die(); 便可輸出 urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6****"); 到底是什么字符串了,通過輸出發現這一串字符是:

  n1zb/ma5\vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j

接着再繼續輸出  $O00O0O、$OO0O00、 $OO0000 三個變量所表示的字符串了,還是在每一行后面添加 echo $O00OO0; die(); 繼續用輸出。便可以知道這三個變量表示的是什么含義了。這兒要小心,一不小心,就容易掉到坑里了。

那就是 將第一行要將 $O00OO0=urldecode("%6E1%7A%62%2F%6D%"),這一句變成 $O00OO0=‘n1zb/ma5\vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j’; 而不是

 $O00OO0="n1zb/ma5\vt0i28-pxuqy*6lrkdg9_ehcswo4+f37j"; ,要不然就整體都錯了一位,調試出的變量所代表的函數就都似乎成了未知函數。(后來想想,$O00OO0=urldecode("%6E1%7A%62%2F%6D%")這行代碼可以保持原樣不動,就不會踩坑了)

錯位后的變量所代表的字符變成了

$O00O0O='bawh';
$O0OO00='w0k0k';
$OO0O00='wqbw0k';
$OO0000='58';
$O00O0O.='bawhl+eghs4gh'

通過正確的輸出,便發現加密的函數為:

$O00O0O='base';
$O0OO00='strstr';
$OO0O00='substr';
$OO0000='52';
$O00O0O.='base64_decode'

 接下來首先對  eval($O00O0O("JE8wTzAwMD0iZENvVnp1dGtJSnllUVd4VXJxQVNOb*************")); 解密,將 換成 echo ( base64_decode("JE8wTzAwMD0iZENvVnp1dGtJSnllUVd4VXJxQVNOb*************"));便會得到

$O0O000="dCoVzutkIJyeQWxUrqASNlMvwpFPhLRsXTcnbBZaKgHfEODGijYmWHhSVxLTIveKzZCPFpEgQOoUmqunkltfyDNJBjwbXRadAirGscMYnr9mbaEXlehpHsEpIuQLMyv0KgjmBaSJbZ4XIHhXIHhRzajkM2Lkw2PRP21kNJt5HsEpIAjVWZvmMZQFMZWOIujfWZWqBJQGWZ5cWGOUBRhRXs8XHs8pXRhRXsjDBZueWaTRK2k0BZCdWGusBGS9IGw1BYQ0bZ9xIajfWZWqBRhRXRhRXsjPKyjOisERIHERwJSxM3tqB248MJI+HsEpIA5kBZP6IHERIHjhWG1fy3tkMYCOnGvenRhRXsjAMytOisERIHERtYSsIrA3lHEeorEVnGvenRhRXsjzWyvmB3QOisERBZuFwgjkBsjhWG1fIatkMYCOIGweB20RMZ4RMyveMyTRB2MRwGu0MDCsNc4XIHhRPGueMZ1ViRhRXsE8NavOnRhRXsELIGCUB3ERIHERIHERlgjkNJvkKgj0BejfB29mIathNY91w2RXIHhRlgjcB2CVIHERIHERIH0RBJSLMYSeIG9YIGQUBaSLBJofIGQUBZ1kIaQONGueMytOwHjfbyQ0IG9YIGQUBaSLBsjxMZ1ONmhRXsERIHERIHERIHERIHERIHjUNsjkNJvkKgjUwsjcB2C1BZ4RBYuLwyoXIHhRlgjeB3WVIHERIHERIH0RBJSLMYSeIG9YIavUW3oXIHhRlgj0MZvfwS9kWateIH0RWGusBGPRMyt0NYOsWytONmhRXsELIathy2u0WaIRIHERlgj0MZvfwgjhwZuTbZ5JIGu0WavqMJS0wyoRXGueNYu5NejkNYPRM3OcBGSTXzhRXsELIatey2u0WaIRIHERlgj0MZvfwgjeB3NRMyt0NYOsWytONeEhMyveMyOVIGuewgjcKZQfwZzqHsEpIH0RWGtdMyt0NsERIHELIatkMYCOIGQOBGmRMyt0N*******RisEJvVfXdzhXnV4=";eval('?>'.$O00O0O($O0OO00($OO0O00($O0O000,$OO0000*2),$OO0O00($O0O000,$OO0000,$OO0000),$OO0O00($O0O000,0,$OO0000))));

繼續將變量替換成  base64_decode(strtr(substr($O0O000,52*2),substr($O0O000,52,52),substr($O0O000,0,52)));便可以得到源碼了。

轉載:https://www.cnblogs.com/imustun/p/10158718.html

 

--------------------------------------------------------------------------------------------------------

這個網站真是厲害 https://www.zhaoyuanma.com/phpjm.html

---------------------------------------------------------------------------

這個博客也有破解方法 : http://www.php20.cn/article/235

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM