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加密的,记事本 ...
随机推荐
- SSM+Maven(教程二):Idea快速入门SSM+Maven框架。
快速入门须知 这篇文章,直接应用已经搭建好的SSM框架.一般在公司里面,考虑框架的搭建.封装等问题,都由研发经理或者架构师完成,所以对于刚入门的小白来说,在去搭建整合花费的时间会很多很多.对于理解能力 ...
- AskUsingForm_c函数
IDA SDK里面提供的UI(user interface)函数 AskUsingForm_c,该函数弹出一个对话框,而对话框的外观形式,就由此函数的第一个参数form(const char *类型) ...
- PHP session过期机制和配置
问题:使用PHP session时会遇到明明超过了session过期时间,但session依然完好无损的活着,让人头大. 其实仔细看一下php.ini关于PHP session回收机制就一目了然了. ...
- Linux操作系统的种种集成开发环境
Linux操作系统的种种集成开发环境 随着Linux的逐渐兴起,已经有为数众多的程序在上面驰骋了,许多开发环境(Development Environment)也应运而生.好的开发环境一定是集成了编辑 ...
- 对于矩阵的理解-- by 孟岩老师
“如果不熟悉线性代数的概念,要去学习自然科学,现在看来就和文盲差不多.” --瑞典数学家Lars Garding名著<Encounter with Mathematics>. 1. 矩阵的 ...
- Static Nested Class 和 Inner Class的不同?
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法).Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上. 注: 静态内部类(Inner ...
- matlab从文件夹名中获得该文件夹下所图像文件名
function [s,nameC]=get_FileNameFromFolderPath(path) % 函数调用:[s,nameC]=get_FileNameFromFolderPath(path ...
- [Python爬虫] 之三十一:Selenium +phantomjs 利用 pyquery抓取消费主张信息
一.介绍 本例子用Selenium +phantomjs爬取央视栏目(http://search.cctv.com/search.php?qtext=消费主张&type=video)的信息(标 ...
- function/bind
1.函数指针指向一类函数,这类函数的类型一样,也就是函数的返回类型和形参表一样. 2.不同的函数类型要使用不同的函数指针,才能指向它,有没有好的办法呢? 类比思考下,交换方法,对不同的类型要写不同的s ...
- 用pdb调试OpenStack Havana
作为个人学习笔记分享,有任何问题欢迎交流! Note:若是想要用pdb调试OpenStack,必须通过Devstack安装它. Devstack安装Havana过程 1. 使用一般用户(非root ...