php做为一门当下非常流行的web语言,常常看到有人求解密php文件,想当年的asp也是一样。一些人不理解为什么要混淆(加密),甚至鄙视混淆(加密),在我看来混淆加密代码可以用来防一般的小人,会起到一定的保护作用。
" n8 o& `/ L- N% u# F) r* V
2 s+ Q$ g5 Y$ N8 e1 j) a+ `- C3 z
加密的原因:
+ h; r3 d1 V2 X3 d- E# m7 g
& x/ @" ]8 T. a+ k0 c1. 保护代码,防止别人剽窃
' L" g2 Y, J6 m) R
/ V& Z8 j- j3 m$ h2. 保护文件,防止别人发现/查杀(php木马 or 后门)
! y; X% z6 R. g
& ^6 u3 F+ Z) L+ Y0 G$ Q+ K3. 剽窃了他人代码防止被发现
+ _' @) k. X* ` \% j
1 V6 D0 W/ }1 g) Q$ p$ @' r
4. 其他商业或非商业目的
7 ]: @5 e: o( `6 y+ w0 @$ T7 I
: t; \ n( U2 ?- q, j/ Q: s我一直都比较关注代码的加解密,从简单eval base64,gzcompress,gzinflate 到 威盾,Zend Guard加密,到近期比较流行的一种二进制(unicode乱码)加密,如 phpjm,phpdp神盾。对比这几种加密方式。
Y& X. k. R! l0 T5 s" F
9 D2 N/ r: E! m' O" D$ U/ ^% J
第一种加密方式,就是简单的使用函数encode代码之后,再eval(decode('encode的代码')),解密非常简单,直接把
+ D. U' z+ ^$ K9 H+ @0 {
5 [/ i- m1 o, v1 M1 B本帖隐藏的内容
) J/ s1 k# Y, c8 l3 x
eval替换成exit即可输出源代码,如果经过多层加密,就继续替换下去...
6 E+ O# {5 d- F+ x% ?( C3 W$ y4 e+ V1 ^4 o) ^. h/ D$ P
eval(base64_decode('PD9waHAgZWNobyAndHh0Y21zLmNvbSc7Pz4='));
2 O( |3 z. N* t, B* _* r+ |9 C
9 d$ a+ z1 Y# C! k" ^3 |解密难度:★☆☆☆☆
% O: j! B: w+ t+ j7 t( o" v# @$ W/ v$ d5 C' b- ]6 F- {# w
第二种威盾加密,做为第一种方式的升级版,即把之前的base64之类的系统内置函数变成了匿名函数。解密
: \( y6 B/ y4 z; c6 j, H7 H2 b# d6 U' I5 K% O$ k0 Y& R6 i
本帖隐藏的内容
; G- j3 o( O% R" e
也是一样把eval替换成exit即可。
# C1 Y% t' T3 J
: S" z) M; Q( Z3 t2 u* v# S. Q: `$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=28;$OOO0000O0=$OOO000000{4}.$OOO000000{9}.$OOO000000{3}.$OOO000000{5};$OOO0000O0.=$OOO000000{2}.$OOO000000{10}.$OOO000000{13}.$OOO000000{16};$OOO0000O0.=$OOO0000O0{3}.$OOO000000{11}.$OOO000000{12}.$OOO0000O0{7}.$OOO000000{5};$O0O0000O0='OOO0000O0';eval(($O0O0000O0('JE9PME9PMDAwMD.//......省略
- g& t- w1 G. c, f/ C! L6 T+ v
/ A" k) G& o; l9 o: y解密难度:★★☆☆☆
; @& s! l# H: d! x: [- G0 _6 B D( w# h, U# E$ U, Y
第三种Zend Guard,
( B/ {7 c" }( L2 G( H
( ?; z# @2 V- C2 e- ~6 N' H) F本帖隐藏的内容
* u( A8 |: L9 k6 I
这种加密方式无法像前面一样手动解密。需要用到工具,如:dezender黑刀。 目前我知道的就只有php4~php5.2的可以被此工具解密出来,解密出来的变量或函数可能比较丑像$_obfuscate开头,因为经过混淆了。不过如果在php代码里加上一句代码,可使该程序溢出导致解密失败。
0 c# L3 m" s2 U" h% Q2 Y@Zend; 3074; 以下省略乱码
0 ?! e1 k) E: p* j+ z' z. B) p
解密难度:★★★★☆
6 F" E! F- M" C1 m! G1 O! v- G6 K6 t' @4 H3 x
第四种二进制(unicode乱码)加密,如phpjm,phpdp神盾。这种加密方式其实也是威盾的升级版,即把匿名函数字符串经过一系列的打乱分散处理之后,再把函数、变量、字符串替换成经过处理的unicode字符串。这样生成的文件就不能轻易的修改了。加大了解密的难度,解密方法也简单,就是替换掉那些变量和方法,使之成为正常的字符串,再exit即可。
7 ?, v1 |0 c' j+ B+ c+ S( [! S" a
$ A" Y) n, j+ J0 t# a0 ?cb8ae577f0e1b634.png.网站教程深度解析php混淆加密解密的手段,希望对大家解读魔方加密有所帮助1免费在线下载-来自源码哥(ymg6.com)
4 |, a4 E( ~3 L- }
e; t" b( K8 U6 u; P解密难度:★★★★☆
4 Q1 E6 ^# j: o0 ^ l r l- ]* m& F; {+ h$ S
总结:php无扩展加密无非用到的几个函数 eval , preg_replace使用e修饰符 , strtr , base64_decode。
$ n" d& `& s7 R% z( V5 E% N: q2 R% E5 n: R, v* u% X( X) a& x