遇到个加密的PHP文件,把decode过程写下来

一种php文件加密方法的破解 文件加密方式,变量混淆+字符串加密文件原始内容 :$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=164;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$ 阅读详情


早上有朋友让我帮忙看一个PHP文件,里面都是乱码,改动任何一个字符就会中止运行。

文件只有一行,以下是部分内容:

中间省略一堆字符编码,最后的内容是

2Kx9yHSQyO/D+5+fnPf+v/BSrlfeg=')));return;?>5e813...32位MD5....3f6


一开始使用ZendStudio+Xdebug跟踪了一遍,发现对于这种压缩在一行的代码,调试根本无力啊!断点都无从下起。

搞了半天还是没效果,干脆手工解决吧。

简单的看了一下,只是把变量名用一些比较特殊的字符替代,用编辑器打开,把几个重复出现的关键字替换一下,就能看出大概了。

其中还用到了一个自定义函数,这段函数已经在文件开头提供了,就是“蜖棁ㄔ┄蕷”。

function 蜖棁ㄔ┄蕷($A,$B="")
{
	$A=base64_decode($A);
	if(empty($A)) return "";
	if($B==""){return ~$A;}
	else
	{
		$D=strlen($A);$B=str_pad($B,$D,$B);$str=$A^$B;return $str;
	}
}

经过几次简单的替换可以知道每个字段内保存的是什么内容了


首先从eval函数入手,后面跟着的应该是2个解密函数,函数名保存在数组里。类似

<?php
$arr['B']='base64_decode';
$arr['G']='gzuncompress';
//调用的时候可以这样用
eval($arr['G']($arr['B']('一大堆乱码')))


解出来就能看到修改后就不能运行的关键代码:

	$A=file_get_contents('origin.php');
	@substr($A,-32)==md5(substr(substr($A,0,-32).'另外一个<span style="font-family: Arial, Helvetica, sans-serif;">32位MD5</span>',6))||die();

注释掉后继续执行后面的代码:


又是一个eval,在解密……

由于解密出来的文件有乱码,不能直接用Copy&Paste,必须以二进制写入一个文件,再经过一些替换、解密,再写入一个文件……总共经过5轮解密,最后得到源文件。


最后整理了一下写了个正则搞定这个文件,直接解除这个文件。

<?php
	$B='base64_decode';
	$G='gzuncompress';
	function A($A,$B="")
	{
		$A=base64_decode($A);
		if(empty($A)) return "";
		if($B==""){return ~$A;}
		else
		{
			$D=strlen($A);$B=str_pad($B,$D,$B);$str=$A^$B;return $str;
		}
	}
	$s=file_get_contents('origin.php');
	//第1次匹配
	preg_match('/\]\(\'(.+?)\'\)/',$s,$r1);
	$s=$G($B($r1[1]));
	
	//第2次匹配
	preg_match('/\]\(\'(.+?)\'\)/',$s,$r2);
	$s=A($B($r2[1]));
	
	//第3次匹配
	preg_match('/\]\(\'(.+?)\'\)/',$s,$r3);
	$s=($B($r3[1]));
	
	//第4次匹配
	preg_match('/\]\(\'(e.+?)\'\)/',$s,$r4);
	$s=$G($B($r4[1]));
	
	//第5次匹配
	preg_match('/\]\(\'(e.+?)\'\)/',$s,$r5);
	$s=(A($B($r5[1])));
	file_put_contents('code.php',$s);

	echo 'Done!';


相关代码:http://download.youkuaiyun.com/detail/sbdx/8616319

PHP base64编码后解码乱码的解决办法 主要介绍了PHP base64编码后解码乱码的解决办法,导致乱码的原因就是base64编码后包含一些特殊字符,替换一下就可以了,需要的朋友可以参考下 立即下载

相关推荐

国内外主流嵌入式GUI汇总

随着MCU资源增多,处理能力也强了,同时市场需求也增多了GUI功能也越来越丰富了,很多的嵌入式图形库都可以做出绚丽的界面。

m0_69914734的博客 3290

webshell之一句话木马变形

什么是一句话木马 一句话木马就是只需要一行代码的木马,短短一行代码,就能做到和大马相当的功能。为了绕过waf的检测,一句话木马出现了无数中变形,但本质是不变的:木马的函数执行了我们发送的命令。 我们如何发送命令,发送的命令如何执行? 我们可以通过 GET、POST、COOKIE这三种方式向一个网站提交数据,一句话木马用 $_GET[' ']、$_POST[' ']、$_COO...

weixin_30371875的博客 1728

海康工业相机触发模式详解:软触发 vs 外触发,在C#里如何选与用?

本文深入解析海康工业相机的软触发与外触发模式,详细比较两者的特性差异、适用场景及C#实现方法。通过海康SDK配置指南和实战代码示例,帮助开发者掌握工业相机触发模式的选择与优化技巧,提升自动化检测系统的精确性和可靠性。

weixin_42635064的博客 556

如何解决PHP base64编码后解码乱码的问题

PHP base64编码后解码乱码的解决办法:用GET形式传递时,防止【+】号被替换成空格即可,代码为【$str = base64_decode(str_replace(" ","+",$_GET['str']))】。为了防止出现乱码的情况,我做了一步替换,然后再解密,果然,乱码的问题,不复存在了!遇到这个问题的时候,我就纳闷了,为什么有一些能正确解密,但是有一些却出现乱码呢?加密后,以GET的形式传到其他页面,用。后来经过检查,发现有一些中文字符,解密的时候,出现乱码。

qq_32450471的博客 8257

10X Genomics数据实战:手把手教你用Seurat处理单细胞PBMC数据(附完整代码)

本文详细介绍了如何使用Seurat处理10X Genomics的单细胞PBMC数据,从数据获取、质控到降维分析和细胞分群的全流程。通过实战代码演示,帮助研究者掌握单细胞RNA测序数据分析的核心技术,提升对细胞异质性的理解。

weixin_29053577的博客 254

半导体AMHS天车振动控制:从0.5G到超低振动的技术演进与工程实战

在先进晶圆厂中,自动化物料搬运系统(AMHS)的天车如同空中出租车,承担着晶圆盒(FOUP)在洁净室各工艺区间的转运任务。然而,当天车加减速、过弯或抓取时产生的机械振动通过轨道梁和建筑结构传递至光刻机等敏感设备,便可能直接威胁套刻精度与良率。传统被动减振方案依靠橡胶垫和弹簧,在0.5G指标时代曾行之有效,但在EUV光刻和先进制程面前已力不从心。主动振动控制技术通过传感器、控制器与作动器构成的闭环系统,在轨道吊点和机械手端实时输出反向力抵消振动,配合磁悬浮走行、轻量化结构及调度系统的路径优化,将振动从0.5G

weixin_29188043的博客 345

PHP入门学习记录

文中代码参考自:PHP 基础_笨小孩@GF 知行合一的博客-优快云博客_csdn php 看完以后就感觉PHP和C语言在一些用法上有点相似( •̀ ω •́ )y 但是那篇博客中,后面那些比较难的用法还不是很懂QAQ <!-- switch语句 --> <!-- <?php $a="abc"; switch($a){ case'red': echo "red"; break; case'green': echo

https://goodlunatic.github.io/ 288

1、vectorCast单元测试常用操作

进入软件主页面,点击file,选择set working directory,随便选择一个保存该项目的目录即可。

weixin_59334478的博客 2157

PHP的base64_decode乱码

前几天出现的问题,GET和POST请求中的字符串经过base64_decode之后乱码了,查了一下是PHP的问题,在使用base64_decode解码之前先加一句: $encodedData = str_replace(' ','+',$encodedData); $decocedData = base64_decode($encodedData); 就好了。 如果字符串过长,还需...

Nero Zhang的博客 1万+

8、对比 LightGBM、XGBoost 和深度学习

本文对比了LightGBM、XGBoost和深度学习模型(特别是TabTransformer)在处理表格数据时的性能差异。从模型复杂度、数据准备、训练时间、准确性和适用场景等方面进行分析,重点探讨了三者在人口普查收入预测任务中的表现。文章详细介绍了XGBoost与LightGBM的核心特性与区别,深入讲解了TabTransformer的架构与实现,并涵盖了分类特征编码、缺失值处理和类别不平衡等关键数据预处理技术,为选择合适的表格数据建模方法提供了实践指导。

julia4scientist的博客 120

TextView部分文字可以被点击的效果。TextView拼接图片,图片可以被点击

今有一需求,就是列表标题后拼接图标,点击图标跳转一个web页; 这里简单做下笔记,以供需要的人参考: //设置部分文字点击事件 ClickableSpan clickableSpan = new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(conte...

LXFX1108的专栏 694

PHP解决base64_decode解密出现的乱码问题

问题:用base64_encode加密后,解密时,时而乱码时而正常 发现:用get方式传加密的字符串时,接收到以后,字符串里包含的”+“会被替换成" " 解决:解密的时候,先做一步替换,先把" "替换成“+” 这样就输出正常了。

huojiahui22的博客 1万+

【Zabbix实战之部署篇】Docker部署Zabbix+grafana监控平台

【Zabbix实战之部署篇】docker部署Zabbix+grafana监控平台

jks212454的博客 2580

base64加密php的方法,php中base64_decode与base64_encode加密解密函数

php中base64_decode与base64_encode加密解密函数,实例分析了base64加密解密函数的具体用法,具有一定的实用价值,需要的朋友可以参考下本文实例讲述了php中base64_decode与base64_encode加密解密函数。分享给大家供大家参考。具体分析如下:这两个函数在php中是用得对php代码进行加密与解密码的base64_encode是加密,而base64_dec...

weixin_29768055的博客 911

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

php中的base64,php中base64_decode与base64_encode加密解密函数

php中base64_decode与base64_encode加密解密函数,实例分析了base64加密解密函数的具体用法,具有一定的实用价值,需要的朋友可以参考下本文实例讲述了php中base64_decode与base64_encode加密解密函数。分享给大家供大家参考。具体分析如下:这两个函数在php中是用得对php代码进行加密与解密码的base64_encode是加密,而base64_dec...

weixin_35538624的博客 7202

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

php screw加密与破解

一、破解工具之php-screw-brute 1、项目地址   https://github.com/securifybv/php-screw-brute 2、项目介绍   此脚本可以恢复/爆破php screw使用的密钥。PHP Screw使用压缩文件的长度来确定(硬编码)密钥的起始索引。PHP Screw的工作原理是首先使用ZLIB(级别1)压缩PHP文件,然后按位取反,再与...

aijin3040的博客 747

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

php gzinflate(),php 利用gzinflate和base64_decode加密解密示例

对php gzinflate和base64_decode加密解密感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!/*** gzinflate和base64_decode加密解密** @param* @arrange 五一二笔记网: 512PiC.com**/function encode_file_contents($filename) {$type=strtolower(substr...

weixin_31679307的博客 1329

php文件加密解密

利用base64加解密 base64_encode是加密,而base64_decode是解密 语法:string base64_encode(string data); 语法:string base64_decode(string data); 加密案例如下: public function encode_file_contents($filename) { ...

baheng0479的博客 625

PHP文件源码加密破解还原过程Common.php

Common.php <?php $l11II1Ill = __FILE__; $llII1I11l = pack('H*', '34366467656e696163746c5f734462666f'); $l1llI1II1 = $llII1I11l{14} . $llII1I11l{7} . $llII1I11l{12} . $llII1I11l{4} . $llII1I11l{1} ....

挖掘大数据价值,让决策者快速洞悉趋势,让大众读懂数据背后的故事。 3198

php base64 站长工具,php gzinflate和base64_decode加密解密

php gzinflate和base64_decode加密解密function encode_file_contents($filename) {$type=strtolower(substr(strrchr($filename,’.'),1));if(’php’==$type && is_file($filename) && is_writable($filena...

weixin_30603711的博客 719

php代码加密 (php,decode)

PHP代码加密与解,但不支持中文.   &lt;?php /* @名称:PHP加密/解密 @更新:2009年9月22日 20:23:47 */ function phpencode($code) { $code = str_replace(array('&lt;?php','?&gt;','&lt;?PHP'),array('','',''),$cod...

Just Code 438

asp php base64 加密解密,base64加密解密_php base64_decode 解码方法

base64加密解密_php base64_decode 解码方法观点1:php实现base64加密解密在PHP中我们可以直接使用PHP自带的函数 base64_encode() 和 base64_decode() 进行加密和解密,废话不说了,我们直接进入正题:例子 1.base64_encode() 示例$str = 'This is an encoded string';echo base64...

weixin_35389904的博客 1112

phpjm php加密的解密过程

前言 最近接手一套系统,安装后发现不能运行,被告知必须修改hosts绑定域名才能执行,怒,这怎么可以?暴力破解它。 准备篇 看了一下用的是phpjm.net的加密。 其实还是挺简单的,主要是利用了php变量名和数组索引名支持特殊字符,准确的来说是: \$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]* phpjm就是把里面的变量名弄成乱码,然后再

风雪小筑 1万+

php 加解密文件,php文件加密解密

利用base64加解密base64_encode是加密,而base64_decode是解密语法:string base64_encode(string data); 语法:string base64_decode(string data);加密案例如下:public function encode_file_contents($filename) {$type=strtolower(subst...

weixin_33268861的博客 316

php base64_decode 解码方法

下面简单介绍一下base64_decode+gzinflate压缩编码和解码代码方法,就是通常我们在程序中见的eval_r(gzinflate(base64_decode('加密代码')));形式的加密方法。 加密代码: function encode_file_contents($filename) { $type=strtolower(substr(strrchr($filename

wensy0218的博客 3658

记录破解某网站 php代码 加密

记录破解某网站 php 加密 加密文件是混编过的文件,命名跟代码都无法看 步骤 1:输出乱码变量$��经� 得到是 base64_decode 2:通过 base64_decode 解码 字符串 得到一个字符串变量,跟一段方法执行 3:接着用base_64 解码字符串,获得一大串乱码,完全无法看…想着放弃了 4:经仔细查看发现eval() 方法里第一个是base64_decode 的乱码变量,尝试直接输出调用方法,得到一串新的字符串 5:直接base64_decode 解码新的字符串 得到最终代码

lqb3732842的博客 5851
上一篇: Arduino+HC-SR04 实现超声波测距
下一篇: DEDE 5.7 PHP5.4 5.5 编辑器变空白的解决方案
sbdx
博客等级 码龄24年 114粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值