最近在整理单位购买的源码时,发现源码里好多文件都混淆加密了。虽然不解密也不影响使用,但是心里总觉得有些别扭,便试着将加密的文件解密。

首先,百度了一下,看网上是否有现成的混淆类解密工具,搜到了一个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简单混淆类加密文件如何解密?的更多相关文章

  1. 混淆和加密.NET开发工具

    .NET开发的工具,可以用ILSpy等很轻松的反编译查看源码,为了保护自己写的软件,一般会对软件进行加密,不仅内部关键数据通过加密,软件开发完毕后,对软件也进行加密,防止别人很轻松的反编译和查看到比较 ...

  2. 学习Java AES加解密字符串和文件方法,然后写个简单工具类

    Reference Core Java Volume Ⅱ 10th Edition 1 对称加密 "Java密码扩展"包含了一个Cipher,它是所有密码算法的超类.通过getIn ...

  3. C#,ASP.NET简单的MD5加密,解密

    简单的MD5加密 首先要有一个加解密的规则  就是key 代码如下 // 创建Key public string GenerateKey() { DESCryptoServiceProvider de ...

  4. Code笔记之:对使用zend加密后的php文件进行解密

    对使用zend加密后的php文件进行解密 使用zend加密后的php文件用notpad++打开会出现类似的乱码 下面使用解密工具进行解密 http://pan.baidu.com/s/1i3n4ysX ...

  5. [C#] 常用工具类——加密解密类

    using System; using System.Configuration; using System.Collections.Generic; using System.Text; using ...

  6. 基于Android 下载文件时,更新UI简单帮助类

    因为在项目开发时.有这种简单需求,问谷歌,网络上也有好多Utils工具类,可是比較冗余.自己就简单的写了一个简单帮助类. /** * 下载文件,更新UI简单帮助类 * * @author jarlen ...

  7. RandomAccessFile类进行文件加密

    文件加密/解密示例. package io; import java.io.*; public class encrypt { private File file; //存储文件对象信息 byte[] ...

  8. 通过微软的HTML Help Workshop 利用.html文件 生成简单的chm帮助类的文件

    1.下载并安装Microsoft HTML Help Workshop 下载链接:http://www.microsoft.com/en-us/download/details.aspx?id=211 ...

  9. ref:使用Dezender对zend加密后的php文件进行解密

    ref:http://www.cnblogs.com/88223100/ 使用Dezender对zend加密后的php文件进行解密   在开发中需要修改一些php文件,部分是通过zend加密的,记事本 ...

随机推荐

  1. 阻止a标签跳转

       一.在html中 1. <a href="javascript:;"></a> 2. <a href="###">&l ...

  2. ExtJs xtype一览

    标签: extjs xtype 分类: HTML 基本组件: xtype Class 描述 button Ext.Button 按钮 splitbutton Ext.SplitButton 带下拉菜单 ...

  3. Android Material Design-Working with Drawables(使用Drawable)-(五)

    转载请注明出处:http://blog.csdn.net/bbld_/article/details/40584331 翻译自:http://developer.android.com/trainin ...

  4. 解决Visual Studio 2010 “无法导入以下密钥文件” 错误

    错误原文: "错误 1 无法导入以下密钥文件: SamplePlugin.pfx.该密钥文件可能受密码保护.若要更正此问题,请尝试再次导入证书,或手动将证书安装到具有以下密钥容器名称的强名称 ...

  5. oracle视图总结(创建、查询、改动、删除等)

    视图定义: - -视图是一种虚表. - -视图建立在已有表的基础上, 视图赖以建立的这些表称为基表. - -向视图提供数据内容的语句为 SELECT 语句, 能够将视图理解为存储起来的 SELECT ...

  6. End of Life check fails with NullPointerException

    Checks if the running version of JIRA is approaching, or has reached End of Life. Details Type: Bug ...

  7. Go -- 调用dll库

    package main import ( "syscall" "unsafe" ) func main(){ h, err := syscall.LoadLi ...

  8. 卷积神经网络LeNet Convolutional Neural Networks (LeNet)

    Note This section assumes the reader has already read through Classifying MNIST digits using Logisti ...

  9. 数学图形(2.15)Spherical sinusoid球面正弦曲线

    这个曲线与之前的数学图形(2.7)sphere sine wave很相似.而且个人觉得从其公式上看sphere sine wave更应该叫做球面正弦曲线.当然从渲染的曲线图上看,它是非常明显的贴在球上 ...

  10. go语言基础之回调函数

    1.回调函数 示例: 实现:加,减,乘 示例: package main import "fmt" type FuncType func(int, int) int //实现加法 ...