解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾

原文 解析php混淆加密解密的手段如 phpjm,phpdp神盾,php威盾

php做为一门当下非常流行的web语言常常看到有人求解密php文件想当年的asp也是一样。一些人不理解为什么要混淆(加密)甚至鄙视混淆(加密)在我看来混淆加密代码可以用来防一般的小人会起到一定的保护作用。

 

加密的原因

1. 保护代码防止别人剽窃

2. 保护文件防止别人发现/查杀(php木马 or 后门)

3. 剽窃了他人代码防止被发现

4. 其他商业或非商业目的

 

我一直都比较关注代码的加解密从简单eval base64,gzcompress,gzinflate 到 威盾Zend Guard加密到近期比较流行的一种二进制(unicode乱码)加密,如 phpjm,phpdp神盾。对比这几种加密方式。

 

第一种加密方式就是简单的使用函数encode代码之后再eval(decode('encode的代码')),解密非常简单直接把eval替换成exit即可输出源代码如果经过多层加密就继续替换下去...

 

eval(base64_decode('PD9waHAgZWNobyAndHh0Y21zLmNvbSc7Pz4='));//txtcms.com

 

解密难度

 

第二种威盾加密做为第一种方式的升级版即把之前的base64之类的系统内置函数变成了匿名函数。解密也是一样把eval替换成exit即可。

 

$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=28;$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('JE9PME9PMDAwMD.//txtcms.com......省略

 

解密难度

 

第三种Zend Guard,这种加密方式无法像前面一样手动解密。需要用到工具如dezender黑刀。

目前我知道的就只有php4~php5.2的可以被此工具解密出来解密出来的变量或函数可能比较丑像$_obfuscate开头因为经过混淆了。不过如果在php代码里加上一句代码可使该程序溢出导致解密失败。

 

@Zend; 3074; 以下省略乱码//txtcms.com

 

解密难度

 

第四种二进制(unicode乱码)加密如phpjm,phpdp神盾。这种加密方式其实也是威盾的升级版即把匿名函数字符串经过一系列的打乱分散处理之后再把函数、变量、字符串替换成经过处理的unicode字符串。这样生成的文件就不能轻易的修改了。加大了解密的难度解密方法也简单就是替换掉那些变量和方法使之成为正常的字符串再exit即可。

 

if (!defined("BEEABDD")){define("BEEABDD", __FILE__);global $?$妰,$唽,$墎儢,$唫敊?$槀垙梽,$厠墪儛?$嚌巵嚀亸,$寬剛檲槗,$拹枩崄厷?$湠湜啔増仦?$憻檮劀瀺晵€?$垵啑崙媺悎剹,$倧€剮寳崊湌倹€,$槏偀梹啅€攢専挄,$剦槙姙儣枓瀿厐巼;function 殸($殸,$妰?""){.......//txtcms.com

 

解密难度

 

总结php无扩展加密无非用到的几个函数 eval , preg_replace使用e修饰符 , strtr , base64_decode。

时间: 2024-08-31 22:56:20

解析php混淆加密解密的手段,如 phpjm,phpdp神盾,php威盾的相关文章

神盾加密解密教程(二)PHP 神盾解密_php实例

其实网上早就有人分析过这个了,而且写成了工具.但是我测试了很多个,没一个能用,所以决定自己从头分析一遍. 打开神盾加密过后的源码,可以看到这样的代码 上面写着广告注释,而且不能删除,因为文件末尾有个md5效验码,以验证代码是否被修改过,如图. 再仔细看代码部分,发现里面都是乱码,其实这都是障眼法,它利用了php变量扩充到 latin1 字符范围,其变量匹配正则是 \$[a-zA-Z_\x7f-\xff][\w\x7f-\xff]* 这样的格式.这个前几天天已经分析过了,最终也在官网找到了答案,请

神盾加密解密教程(三)PHP 神盾解密工具_php实例

先下载 php神盾解密工具decryption然后解压放到一个文件夹里,把你要解密的文件也放进去.然后新建一个 decode.php 代码写: 复制代码 代码如下: <?phprequire('decryption.php');decryption('Code.php');?> 执行后就会生成 Code_source.php 的源码文件了. 效果 就目前来说没发现任何问题,如果有什么问题可以留言,我会及时处理的. 要注意的几点,decryption.php 文件不要做任何修改,否则执行不了.d

DES算法加密解密代码解析

问题描述 下面是一段DES算法,对于DES我不是很懂,麻烦帮我讲解一下下面的加密解密怎么实现,各行的意思.谢谢!!publicDES(){InitializeComponent();}//密钥//获取或设置对称算法的机密密钥.机密密钥既用于加密,也用于解密.为了保证对称算法的安全,必须只有发送方和接收方知道该机密密钥.有效密钥大小是由特定对称算法实现指定的,密钥大小在LegalKeySizes中列出.privatestaticbyte[]DESKey=newbyte[]{11,23,93,102

关于网页代码加密解密保护

加密|解密|网页 文本代码保护是件很头痛的事,随着了解的加深保护的方法越多,也就意味着漏洞越多. [-调取原代码的方法-] 1:右键 - 查看原文件 2:查看 - 原文件 3:文件 - 另存为 4:IE缓存 5:还可以通过代码提取 教程代码: <SCRIPT> function add() { var ress=document.forms[0].it315zhangxx.value window.location="view-source:"+ress; } </S

DEX文件混淆加密

现在部分 app 出于安全性(比如加密算法)或者用户体验(热补丁修复bug)会考虑将部分模块采用热加载的形式 Load.所以针对这部分的 dex 进行加密是有必要的如果 dex 是修复的加密算法你总不想被人一下就反编译出来吧.当然也可以直接用一个加密算法对 dex 进行加密Load 前进行解密就可以了但是最好的加密就是让人分不清你是否加密了.一般逆向过程中拿到一个可以直接反编译成 java 源码的 dex 我们很可能就认为这个 dex 文件是没有加密可以分析的. 原文地址: DEX文件混淆加密

Javascript实现摩斯码加密解密

摩尔斯电码是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母.数字和标点符号,是由美国人萨缪尔·摩尔斯在1836年发明. 每一个字符(字母或数字)对应不同的序列(由点和划组成). 一般来说,任何一种能把书面字符用可变长度的信号表示的编码方式都可以称为摩尔斯电码. 但现在这一术语只用来特指两种表示英语字母和符号的摩尔斯电码:美式摩尔斯电码和国际摩尔斯电码.下面内容仅针对国际摩尔斯电码. 字母.数字.标点.特殊字符与摩斯码对照表 字母 字母 摩斯码 字母 摩斯码 字母 摩斯码 字母 摩

C#做的一个加密/解密的类

加密|解密 大家要有兴趣,可以一起来讨论一下 WebService数据交互安全问题,以下的这个代码,可以用于Dotnet环境下的任何托管方式的应用程序,在实际应用中有两个实例.其中,有一个挂在Internet上的,URL:http://www.tttsss.com/webservice/THRDataService.asmx , 有兴趣的可以看看其中的Soap信息.当然,要看里面的加密解密过程,就没办法了!否则,我呀太没面子了,是吧! 前两年写的东西,现在整理一下发出来!以前公司需要做WebSe

【推荐】JAVA基础◆浅谈3DES加密解密

浅谈3DES加密解密   (注:本文不深入探讨3DES的加密原理,只着重说明在Java中使用3DES加密解密以及常见问题)       从数据安全谈起       当你使用网银时,是否担心你的银行卡会被盗用?     当你和朋友用QQ进行聊天时,是否担心你的隐私会被泄露?     作为开发者,编写安全的代码比编写优雅的代码更重要,因为安全是一切应用之根本!为了确保数据不被侵犯,数据加密/解密技术运用而生.    --摘录自<Java加密解密的艺术>       所以为了确保数据传输和数据存储的

请教一个JS加密解密的问题

问题描述 请教一个JS加密解密的问题 JS代码片段如下: var _0x4158 = ["scrollTop", "he................ function _0x5ba4x1(_0x5ba4x2) { var _0x5ba4x3 = $(window)[_0x4158[0]](); var _0x5ba4x4 = _0x5ba4x3 + $(window)[_0x4158[1]](); var _0x5ba4x5 = $(_0x5ba4x2)[_0x4158[