|
php的加密分组件加密和非组件加密两种,一般而言,非组件加密比较容易通过代码进行解密。而组件加密就需要专门的软件来解密。
php组件加密中用的比较多的是zend加密。一个比较经典的解密软件黑刀dezender。因为这个软件的作者已经从事其它行业,并且网站打开也很慢,所以,传到这里,比较放心点。
顺便附带相关的介绍及使用
关于三个解密内核的区别:
目前最新版本就是5.0三套解密内核版
首先,第一套和第二套内核本身没什么太大区别的,解密效果都差不多,嘿嘿,至少我是没看出什么差别来了。至于第三套内核与前两套的差别,貌似是第三套内核可以在前两套内核解密某些文件出现溢出时,将脚本解密出一个大致的东西来,最起码能看到function后面定义的函数名。这样的话兴许还能通过谷歌找到缺失的代码并进行补全。
所以,最常用的还是内核1和内核2。其他使用上的问题不再做介绍,只要不是太笨的童鞋们一看界面自然就会用。
关于混淆函数:
似乎现在大家也都知道了,除了丰富和扩充混淆函数库“config.ini”外,木有其他办法能解决这个问题。有某些强大的童鞋自己整理了一套比较规范的混淆函数库,据说,只要是严格按照PHP代码书写规范开发的程序,就能通过他的函数库将代码正确的解密出来。怕就怕那些乱七八糟的自定义函数名,那恐怕做多大的字典来当混淆函数库也是无济于事的。。。
解密后的代码修复技巧篇:
这部分就比较实用了,通常dezend之后的php脚本,都会出现一些奇怪的错误。只要熟悉了这个规律,就能基本完整的将脚本恢复原貌。常见的错误有:
1、出现独占一行的 ( ); 代码
这种情况可以直接将之删除即可。。。
2、条件判断循环语句常见错误,如:
按照正确的php语法应该是这么写的:
- if ( i=0; i<100; i++ ){echo 'hahahaha'; }
复制代码 但用黑刀Dezender解密后往往会变成这个样子:
- i=0;if ( i<100; ++i ){echo 'hahahaha';}
复制代码 i=0; 被移动到了 if 的前面,i++ 变成了 ++i ,掌握了这个规律,就知道怎么修复了。同理,一部分 while 循环判断语句有时候也会出现类似的问题。
3、当出现整段的html代码使用echo输出的时候,dezend会将这一段html代码的每一行都用echo给输出出来。。。造成阅读不便。但多数情况下并不影响使用和执行。
4、调用某些函数时,函数的参数值被移动到上一行,如正确语句:- $ABC = aabbcc($a,base64_encode($b),ccc($C));
复制代码 会在Dezender之后变为下面这样子:- $a,base64_encode($b),ccc($C);$ABC = aabbcc();
复制代码 根据上面的规律修复即可。5、解密后 $GLOBALS['msql']; 实际为 $msql = $GLOBALS['msql'];
6、$this->test = new test('page','id');
反编译后成:
("page", "id");
$this->test = new test();7、try-catch 中抛出异常的函数搞出来有问题(抛出异常部分)
比方说:
throw new Exception('失败');
会给解密成:
('失败');
throw new Exception();8、部分foreach的循环反编译不正确
比方说:
$array = $this->menu();
foreach ($array as $k => $r)
{
$array[$k][\'menuid\'] = $r[\'id\'];
$array[$k][\'parentids\'] = 3;
$array[$k][\'childids\'] = \"\";
unset($array[$k][\'classid\']);
unset($array[$k][\'memo\']);
unset($array[$k][\'id\']);
}
加密后反编译出来的可能是:
$array = $this->menu();
foreach ($array as $r)
{
$r[\'menuid\'] = $r[\'id\'];
$r[\'parentids\'] = 3;
$r[\'childids\'] = \"\";
unset($r[\'classid\']);
unset($r[\'memo\']);
unset($r[\'id\']);
}9、子类调用父类的析构函数反编译出不来,彼方说:
parent::__construct();
反编译后变成了:
$FN_-2147483646();10、class类中$this->system =& $system; 实际上$system是全局变量,应该是
$this->system =& $GLOBALS['system'];
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即加入
x
|