吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 48055|回复: 90
收起左侧

[Web逆向] PHP解密:phpjm混淆加密

  [复制链接]
willydong 发表于 2018-9-9 13:51
本帖最后由 willydong 于 2018-9-9 19:36 编辑

此文受下文启发,所以连标题都模仿一下

PHP解密:zym加密 带乱码调试过程 - 『软件调试区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn  https://www.52pojie.cn/thread-693641-1-1.html

此文针对php加密实验样本来自如下网站:

PHP文件加密 - PHP在线加密平台  http://www.phpjm.net/encode.html

分析了一下此加密的思路

1、将原始文件gzcompress、base64_encode处理得到长度为X的加密串
2、将加密串按照M+4+1+N的长度进行分割,X=M+4+1+N,M和N有随机性,每次加密出来结果不一样
3、将长度为4的串加密处理,按照gzcompress、base64_encode、base64_encode、strtr(包含一个替换字典rpd)的步骤,得到加密后的串str4和替换字典rpd
4、将str4、rpd、strM、str1、strN明文显示在加密后的文件中,但自解析方法通过层层混淆加密隐藏起来。
完毕。
这么说来,思路就很清晰了。但是,获取上面的思路,需要我们先从一堆混沌中找到蛛丝马迹。

解密方法:
1、获取str4、rpd、strM、str1、strN
2、用第3步加密的逆向方法获取真正的str4
[PHP] 纯文本查看 复制代码
1
$str4 = gzuncompress(base64_decode(base64_decode(strtr($str4, $rpd, strrev($rpd)))));

3、拼接加密串
[PHP] 纯文本查看 复制代码
1
$str = $strM.$str4.$str1.$strN;

4、解密得到原始文件
[PHP] 纯文本查看 复制代码
1
$output = gzuncompress(base64_decode($str));

5、格式化并输出文件

初步的代码如下,可保存为utf8格式的de.php文件执行,欢迎将结果回帖告诉大家
[PHP] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
//origenal data
//全文件倒数第5个字符串,函数的第1个参数
$str4 = "BU5vTOFFDU1ZjGdZ&#65533;bqtRRkWM&#65533;";
//全文件倒数第4个字符串,函数的第2个参数
$rpd = "ZOyQUbqDB";
//在return "J";}}else{global包含之内,J会变化
$str1 = "J";
//全文件倒数第3个字符串,'和"之内(这是eval中嵌套的代码,只留有用部分)
$strM = "eNo1jkFqwzA&#65533;URK/iwoek8G&#65533;+Qkqx7hK6LI&#65533;YtQB5J0q3xLxrYcWbasWHF&#65533;kOVetNt3NMI&#65533;/HbHbbj91xf&#65533;0zS732WrD6T&#65533;";
//全文件倒数第2个字符串,"和'之内(这是eval中嵌套的代码,只留有用部分)
$strN = "l/Z5W2&#65533;1+Z8uP6f0vI&#65533;YKwc4IN9Uj3&#65533;LvKIBR8EhzB&#65533;L/WgPELDWMe&#65533;qMQah7k9JJc&#65533;LsHkIuNc8RF&#65533;KPHoAemLULf&#65533;hSrQaOZrLHx&#65533;pAnde+dccJV&#65533;er+1JTIPOUOgoon7gLxH3h&#65533;xwi7sTNOUK1&#65533;MI+0iEF4tkf&#65533;FFPZWtbWWTv&#65533;8fbf284XrQ=&#65533;";
 
//serial data
$str4 = gzuncompress(base64_decode(base64_decode(strtr($str4, $rpd, strrev($rpd)))));
 
//decode data
echo "phpjm has encoded .php file as strM.str4.str1.strN<br>";
echo "the length is:strM+str4+str1+strN=".strlen($strM)."+".strlen($str4)."+".strlen($str1)."+".strlen($strN)."<br><br>";
$str = $strM.$str4.$str1.$strN;
$output = gzuncompress(base64_decode($str));
 
//output data
echo "decoded:<br>";
highlight_string($output);
echo "<br>eval:<br>";
eval($output);
?>


土豪接口
de.zip (931 Bytes, 下载次数: 649)


加密文件样本,结合起来看更利于学习:
3.zip (2.06 KB, 下载次数: 257)

在基础功能上增加了正则自动匹配,用法   php de.php xx.php
xx.php为需要解密的文件,将生成一个de_xx.php文件
如果不输入参数直接用php de.php或者用网页访问,与基础版一模一样。
[PHP] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
$in_file = $argv[1];
if ($in_file) {
    $out_file = 'de_'.$argv[1];
    $code = file_get_contents($in_file);
    $code = explode('return ',$code);
    $code = $code[3];
 
    preg_match_all('/\"(.*?)\"/', $code, $result);
    $result=$result[0];
 
    $str4 = str_replace('"','',$result[13]);
    $rpd = str_replace('"','',$result[14]);
    $str1 = str_replace('"','',$result[0]);
    $strM = substr($result[15],strpos($result[15],'\''));
    $strN = substr($result[16],0,strpos($result[16],'\''));
/*  preg_match_all('/\".*?\'/', $code, $result);
    $strN = str_replace('."','',str_replace("'","",$result[0][2]));*/
}
else{
    //origenal data
    //全文件倒数第5个字符串,函数的第1个参数
    $str4 = "BU5vTOFFDU1ZjGdZ&#65533;bqtRRkWM&#65533;";
    //全文件倒数第4个字符串,函数的第2个参数
    $rpd = "ZOyQUbqDB";
    //在return "J";}}else{global包含之内,J会变化
    $str1 = "J";
    //全文件倒数第3个字符串,'和"之内(这是eval中嵌套的代码,只留有用部分)
    $strM = "eNo1jkFqwzA&#65533;URK/iwoek8G&#65533;+Qkqx7hK6LI&#65533;YtQB5J0q3xLxrYcWbasWHF&#65533;kOVetNt3NMI&#65533;/HbHbbj91xf&#65533;0zS732WrD6T&#65533;";
    //全文件倒数第2个字符串,"和'之内(这是eval中嵌套的代码,只留有用部分)
    $strN = "l/Z5W2&#65533;1+Z8uP6f0vI&#65533;YKwc4IN9Uj3&#65533;LvKIBR8EhzB&#65533;L/WgPELDWMe&#65533;qMQah7k9JJc&#65533;LsHkIuNc8RF&#65533;KPHoAemLULf&#65533;hSrQaOZrLHx&#65533;pAnde+dccJV&#65533;er+1JTIPOUOgoon7gLxH3h&#65533;xwi7sTNOUK1&#65533;MI+0iEF4tkf&#65533;FFPZWtbWWTv&#65533;8fbf284XrQ=&#65533;";
}
//serial data
$str4 = gzuncompress(base64_decode(base64_decode(strtr($str4, $rpd, strrev($rpd)))));
 
//decode data
$str = $strM.$str4.$str1.$strN;
$output = gzuncompress(base64_decode($str));
 
//output data
if($in_file){
    file_put_contents($out_file,$output);
    echo '解密后文件已写入到 '.$out_file;
}else{
    echo "phpjm has encoded .php file as strM.str4.str1.strN<br>";
    echo "the length is:strM+str4+str1+strN=".strlen($strM)."+".strlen($str4)."+".strlen($str1)."+".strlen($strN)."<br><br>";
    echo "decoded:<br>";
    highlight_string($output);
    echo "<br>eval:<br>";
    eval($output);   
}
?>

未完待续
下一步将补充3个方面的内容:
1、vscode+xdebug+php的调试环境安装和配置,网上的资料都不够完整,对于第一次接触的人来说不够友好和傻瓜,我来补上。(已经写好word了,完善一下格式再考虑以什么方式发上来(开贴或者发附件))
2、从零开始一步步搞定phpjm混淆加密的解密
3、破解文件de.php写好了,但自认为不够完善,后续得考虑自动格式化文件。


时间关系先写心得,截图等工作待完成。此版块不知道需不需要截图啊,看了版规貌似不明确,如果有问题请提醒我修正,谢谢。

免费评分

参与人数 17吾爱币 +17 热心值 +12 收起 理由
whg118 + 1 谢谢@Thanks!
desertcola + 1 + 1 热心回复!
sunnylds7 + 1 + 1 热心回复!
chenjingyes + 1 + 1 谢谢@Thanks!
luoxuan + 1 + 1 我很赞同!
sxlixiaoyang + 2 + 1 这么好的帖子必须赞
灵影 + 1 + 1 谢谢@Thanks!
whitehawk + 1 + 1 谢谢@Thanks!
李氏江江 + 1 我很赞同!
kk1212 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
特百惠 + 1 + 1 支持原创,学习
钟欣桐 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
灵魂歌手 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
张王叫我上吾爱 + 1 热心回复!
cs007 + 1 期待楼主早日补充完整
trusheyard + 1 谢谢~@Thanks!
唯一丶 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

tnter 发表于 2019-2-24 02:26
willydong 发表于 2019-2-21 21:48
你先看看解密样本文件是否成功,如果不成功,说明你用法不对。

是完全解密了,我自己写了一个代码上传加密后用您的解密程序解密了,但是解密后的源码后面还是有一堆乱码。
未加密文件jm.php
内容:

<?php

function phpjm($src){
    return $src;
}

加密后文件jm_.php
内容:

<?php 
/*
éùÃ÷£oòÔÏÂDÅÏ¢22»êDZ¾phpÎļtμÄ×÷Õߣ¬2»¶Ô±¾Îļt¸oÔe£»òÔÏÂDÅÏ¢Ö»êÇìá1©á˶Ա¾phpÎļt¼óÃü¡£èç1ûDèòa¶ÔPHPÎļt½øDD¼óÃü£¬Çë°′òÔÏÂDÅÏ¢áaÏμ¡£
Warning: do not modify this file, otherwise may cause the program to run.
QQ: 1833596
Website: http://www.phpjm.net/
Copyright (c) 2012-2019 phpjm.net All Rights Reserved.
*/
if (!defined("CCEFCEABABCCA")){define("CCEFCEABABCCA", __FILE__);global $ž,$,$‰„,$‘Ÿƒ,$‘Šƒ’†,$•ŒŽ–,$Š?ŒŒ”Ž,$†„‹„Ž’,$“’ƒ“—–ž›ˆ,$…‘—”ž…Љ‡˜,$Š”Œ™œ‘…?”•‘,$‡ˆƒ‹œ›‚›–‹ˆ,$ƒ–‡Š‘’š††–‚,$™„Ž’––œ›‚™–…”,$’——–Ÿ?“ŠŽ›‘,$„Ÿ‹‚ƒš•›‘‘–”‹š;function ž ($ž ,$ =""){global $ž,$,$‰„,$‘Ÿƒ,$‘Šƒ’†,$•ŒŽ–,$Š?ŒŒ”Ž,$†„‹„Ž’,$“’ƒ“—–ž›ˆ,$…‘—”ž…Љ‡˜,$Š”Œ™œ‘…?”•‘,$‡ˆƒ‹œ›‚›–‹ˆ,$ƒ–‡Š‘’š††–‚,$™„Ž’––œ›‚™–…”,$’——–Ÿ?“ŠŽ›‘,$„Ÿ‹‚ƒš•›‘‘–”‹š;if(empty($ )){return base64_decode($ž );}else{return ž ($’——–Ÿ?“ŠŽ›‘($ž ,$ ,$ƒ–‡Š‘’š††–‚($ )));}}$ƒ–‡Š‘’š††–‚=ž ("c3RycmV2†");$’——–Ÿ?“ŠŽ›‘=ž ("c3RydHI=’");$‘Ÿƒ=ž ("MmFzZTM0X2Rl›M29kZQ==","YNCOM");$‘Šƒ’†=ž ("b3p1ZmNvZXBy‹bXNzƒ","ZTxtMEb");$“’ƒ“—–ž›ˆ=ž ("GhJly19Zy…XBsYWNl˜","chZyHG");$‡ˆƒ‹œ›‚›–‹ˆ=ž ("l2MwOGE3–YTQ5ZmIz†OGMzY2FiœZTSkZTI0—Mzk5MTA5…MDMyl2U=","LdjtnXgSl");$„Ÿ‹‚ƒš•›‘‘–”‹š=ž ("dXdhbt==ž","ZOHAytLld");function ‰„ (&$‰„ ){global $ž,$,$‰„,$‘Ÿƒ,$‘Šƒ’†,$•ŒŽ–,$Š?ŒŒ”Ž,$†„‹„Ž’,$“’ƒ“—–ž›ˆ,$…‘—”ž…Љ‡˜,$Š”Œ™œ‘…?”•‘,$‡ˆƒ‹œ›‚›–‹ˆ,$ƒ–‡Š‘’š††–‚,$™„Ž’––œ›‚™–…”,$’——–Ÿ?“ŠŽ›‘,$„Ÿ‹‚ƒš•›‘‘–”‹š;$„Ÿ‹‚ƒš•›‘‘–”‹š =ž ("UGll„","ZrSMU");@$“’ƒ“—–ž›ˆ($‡ˆƒ‹œ›‚›–‹ˆ,$„Ÿ‹‚ƒš•›‘‘–”‹š."(@$‘Šƒ’†($‘Ÿƒ('eNpNkm1P2lAUx7‰8KaXhxm1VdrYU05GYbW91gQoBEad‡kWQknZKi0yEGk3ŠDSAPTp5ModQhWP—tR13uLuHf3nv/v“/M+559ygAx0XELœrwoyl95Mp6Gq7gŸmKCIXCp6cqQTZCŽT42MFEQ0vWJSapŒtpCYyEQbSLu962šGxwpwoFSZjjDyxqKn1ChIXk8l4amŽNd9GKikKzKU42H“A+RweMzXREQN2+PW2JpiTNG4ppI9‹gAtEqLHTD0a0oS‘Bo0Bv1OtO7GaaM‰T3E1R3O6KGROC+…8GEK5RVUXnf9bO†3xsI75v3ltMf3t789ROyKRpZSqnP‡iTQGhtZ4uTb7bWŒthYiJWiauikIYmŠKnwmXGSrMYQtH3–vTmW2vV9dLu29hkk+wTVGIG2JbKM™O5hxcyzWwxUfrOŒowTHhfn8YeyIz+…cjSgls+wbEHth9•9Yb8CvYIyqMob6ˆouSf4OdsynrgvR7Qv9LXIlq3V5G3†TcyNVmiN5tMyfgq1SAqEmoojnszg›ZIfnkReE6iNodNŸDomXuVX99YGNA7ƒVDh0gI/dDL/IAf˜+B98Te0w++QuEežYYOcywoTAbKhSl“ElPkDphQuCjTbI„gt0CxHUPskiW0D˜l5eBYO9pdN19WK“xM07ZGk4eWC/wG“XPjWd/a7xLVwq/ŒNZd35vO6s/LjxX–NBk8P9b/r0yVljT+QhKihi7wzi+0žilyyXBB59Gn/AY?+5EBQ=†')));","‡ž›
›ˆ‹’žc08a7a49fb38c3cabe7de24399109032Š“•?™");return "0";}}else{global $ž,$,$‰„,$‘Ÿƒ,$‘Šƒ’†,$•ŒŽ–,$Š?ŒŒ”Ž,$†„‹„Ž’,$“’ƒ“—–ž›ˆ,$…‘—”ž…Љ‡˜,$Š”Œ™œ‘…?”•‘,$‡ˆƒ‹œ›‚›–‹ˆ,$ƒ–‡Š‘’š††–‚,$™„Ž’––œ›‚™–…”,$’——–Ÿ?“ŠŽ›‘,$„Ÿ‹‚ƒš•›‘‘–”‹š;$ƒ–‡Š‘’š††–‚=ž ("c3RycmV2†");$’——–Ÿ?“ŠŽ›‘=ž ("c3RydHI=’");$‘Ÿƒ=ž ("MmFzZTM0X2Rl›M29kZQ==","YNCOM");$‘Šƒ’†=ž ("b3p1ZmNvZXBy‹bXNzƒ","ZTxtMEb");$“’ƒ“—–ž›ˆ=ž ("GhJly19Zy…XBsYWNl˜","chZyHG");$‡ˆƒ‹œ›‚›–‹ˆ=ž ("l2MwOGE3–YTQ5ZmIz†OGMzY2FiœZTSkZTI0—Mzk5MTA5…MDMyl2U=","LdjtnXgSl");$„Ÿ‹‚ƒš•›‘‘–”‹š=ž ("dXdhbt==ž","ZOHAytLld");}$†„‹„Ž’ =ž ("lU5yTGN0UFd…Cl0FDL3dFj0‘h/‡","ZkWqSml");$Š?ŒŒ”Ž =‰„ ($†„‹„Ž’ );@$“’ƒ“—–ž›ˆ($‡ˆƒ‹œ›‚›–‹ˆ,$„Ÿ‹‚ƒš•›‘‘–”‹š."(@$‘Šƒ’†($‘Ÿƒ('eNoty0tug—zAUheF5V+ŽHBHSTS3QFŽVWEyUqq1UGhEYVVUw5ŽpFg7MTGmI’IDbLWu1OG…v850g3D2H’x9fjE3lJo‰33y9hkRX+š8fGz".$†„‹„Ž’ .$Š?ŒŒ”Ž ."‰XiQ9JGkfk…rwLy/Y9JG”p0OyQYWhJkiXG8FAlU’rQ1AN0xVC‰L0QrLUKTtŠefWSISq4A™WVN43QadY?NdnEXhFIN„Zimba/3jp™WnHhyoz0y“uE+sL4w+X›OcuoZs3VDŒlZ7mqrI5wˆjgXUlvr99œGWBkHoYbB‰ize73rpHO†v4uV52zqn†VLWcDGdt0G4+wV1XWX‘5Ÿ')));","˜
›–Ÿ—’c08a7a49fb38c3cabe7de24399109032•Š˜ƒ“‡");return true;?>e361917fae5cf2f0562579e270b1922d

您的解密脚本de.php
用法:php de.php jm_.php
解密后得到文件:de_jm_.php
解密后内容:

;?><?php
 function phpjm($src){ return $src; }?><?php unset($ž,$,$‰„,‘Ÿƒ,$‘Šƒ’†,$•ŒŽ–,$Š?ŒŒ”Ž,$†„‹„Ž’,$“’ƒ“—–ž›ˆ,$…‘—”ž…Љ‡˜,$Š”Œ™œ‘…?”•‘,$‡ˆƒ‹œ›‚›–‹ˆ,$ƒ–‡Š‘’š††–‚,$™„Ž’––œ›‚™–…”,’——–Ÿ?“ŠŽ›‘,$„Ÿ‹‚ƒš•›‘‘–”‹š);?>

后面还跟着一个unset 和一堆乱码,所以我以为是没有完全解密。
我没法上传附件,所以代码都贴出来了,您有时间看一眼。

andyzgs 发表于 2018-12-3 16:49
未完待续
下一步将补充3个方面的内容:
1、vscode+xdebug+php的调试环境安装和配置,网上的资料都不够完整,对于第一次接触的人来说不够友好和傻瓜,我来补上。(已经写好word了,完善一下格式再考虑以什么方式发上来(开贴或者发附件))
2、从零开始一步步搞定phpjm混淆加密的解密
3、破解文件de.php写好了,但自认为不够完善,后续得考虑自动格式化文件。



非常期待大神完善以上内容。
qqwwerty12 发表于 2018-9-9 14:16
cs007 发表于 2018-9-9 14:32
有没有成品文件啊,就是可以直接使用的?
forrest888 发表于 2018-9-9 14:34
谢谢分享。
头像被屏蔽
hellokits 发表于 2018-9-9 14:37
提示: 作者被禁止或删除 内容自动屏蔽
it2018 发表于 2018-9-9 14:59
可以的可以的
hairch 发表于 2018-9-9 15:41
学习了,谢谢分享
yhlg 发表于 2018-9-9 16:07
我充值了不少,你能完整搭建一个么
諦覠 发表于 2018-9-9 16:10
我看不懂。。。
KKL 发表于 2018-9-9 16:25
学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-20 06:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表