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)));便可以得到源码了。
php简单混淆类加密文件如何解密?的更多相关文章
- 混淆和加密.NET开发工具
.NET开发的工具,可以用ILSpy等很轻松的反编译查看源码,为了保护自己写的软件,一般会对软件进行加密,不仅内部关键数据通过加密,软件开发完毕后,对软件也进行加密,防止别人很轻松的反编译和查看到比较 ...
- 学习Java AES加解密字符串和文件方法,然后写个简单工具类
Reference Core Java Volume Ⅱ 10th Edition 1 对称加密 "Java密码扩展"包含了一个Cipher,它是所有密码算法的超类.通过getIn ...
- C#,ASP.NET简单的MD5加密,解密
简单的MD5加密 首先要有一个加解密的规则 就是key 代码如下 // 创建Key public string GenerateKey() { DESCryptoServiceProvider de ...
- Code笔记之:对使用zend加密后的php文件进行解密
对使用zend加密后的php文件进行解密 使用zend加密后的php文件用notpad++打开会出现类似的乱码 下面使用解密工具进行解密 http://pan.baidu.com/s/1i3n4ysX ...
- [C#] 常用工具类——加密解密类
using System; using System.Configuration; using System.Collections.Generic; using System.Text; using ...
- 基于Android 下载文件时,更新UI简单帮助类
因为在项目开发时.有这种简单需求,问谷歌,网络上也有好多Utils工具类,可是比較冗余.自己就简单的写了一个简单帮助类. /** * 下载文件,更新UI简单帮助类 * * @author jarlen ...
- RandomAccessFile类进行文件加密
文件加密/解密示例. package io; import java.io.*; public class encrypt { private File file; //存储文件对象信息 byte[] ...
- 通过微软的HTML Help Workshop 利用.html文件 生成简单的chm帮助类的文件
1.下载并安装Microsoft HTML Help Workshop 下载链接:http://www.microsoft.com/en-us/download/details.aspx?id=211 ...
- ref:使用Dezender对zend加密后的php文件进行解密
ref:http://www.cnblogs.com/88223100/ 使用Dezender对zend加密后的php文件进行解密 在开发中需要修改一些php文件,部分是通过zend加密的,记事本 ...
随机推荐
- Bipolar transistor boosts switcher's current by 12 times
The circuit in Figure 1 uses a minimal number of external parts to raise the maximum output current ...
- Mysql字符串连接函数 CONCAT()与 CONCAT_WS()
从数据库里取N个字段,然后组合到一起用“,”分割显示,起初想到用CONCAT()来处理,好是麻烦,没想到在手册里居然有提到 CONCAT_WS(),非常好用. CONCAT_WS(separator, ...
- asp动态数组
本文所说的 ASP 数组是指在 ASP 中以默认语言 VBScript 为语言的数组. 样例: Dim MyArray() for i = 0 to 10 ...
- Unity5.0与Android交互
1. 目标 1) Unity3D可调用Android Java函数(在.jar中) 2) Java可调用Unity3D函数 3) Unity3D可调用Android C函数(在.so中) 2. 测试环 ...
- Ant简单工程的构建
1.在Ant的官方网站http://ant.apache.org/bindownload.cgi下载Ant最新版本(我下载的是apache-ant-1.8.2-bin.zip),Ant无需安装,直接解 ...
- 如何获得Windows Server 2012上的FC的WWN
我有一个测试环境, 一对Host与storage array之间既有iSCSI的连接, 也有FC的连接. 原来iSCSI的连接是OK的, 现在需要转用FC. 当在光纤交换机上划好了Zone之后, st ...
- 使用apache-cxf-2.2.10来制作一个极简版WebService程序
原想拿最新版cxf来制作的,无奈Apache的zip包总下不下来,国内的apache-cxf-2.2.10却一蹴而就,也就用了这个版本.下载地址是:http://pan.baidu.com/s/1td ...
- Lithium: HTML5 响应式的单页面模板
在线演示:http://www.gbtags.com/gb/demoviewer/2507/837ac02e-4963-46c9-83ee-a0a0bb867f7f/3.-Lithium|app|in ...
- ACCESS数据库如何设置密码
首先是文件-关闭数据库 打开-找到这个文件,然后以独占方式打开 然后文件-设置数据库密码,比如输入123作为密码,下次再打开数据库的时候就会要求输入密码 ...
- Python编程-基础知识-python项目包和文件的管理以及如何引用相对路径的包和模块
目录 结构: core |____ __init__.py |____ basic |____ __init__.py |____ database |____ __init__. ...