在研究某个程序的时候发现此段代码【xx.php】
100){ $‘×”›«â¾‡();}eval($²´ööâ†ëš('d¢¢ìšš”dš¬àš¨¨þ8’òà/æ®øâ¤î°°øøc¬œø¨¢ðød¢œè´¢îè–¨¤ªš¨¬4¤að²˜abæèdªî='));!$…ìëô·ó¬áøäå($⨬òôæì($¸ñ ôõóå‹($¿¯ò¹…œ·,$è°ô»¼»ö¨('¦¬²c'),$•ô•û篹ù('¦¬š='))),$»œäóê‚óä«($¸ñ ôõóå‹($¿¯ò¹…œ·,$ðžòµú–('¬a=='),$œáó¢åü¿†('¦¬²b'))))?$––ö뫾îל×():$ó‘ì—˜ÿœ;$›µüâá²úýñùî = $¢”â—ùü('¦¬²ª¢==');$šª‚ôö‚ü¤ï = $íü’ó†('¦¬²b');$šª‚ôö‚ü¤ï = $ëöíëìæååá($”ñž¨´ï˜($¸ñ ôõóå‹($¿¯ò¹…œ·,$›µüâá²úýñùî,$šª‚ôö‚ü¤ï)));return $šª‚ôö‚ü¤ï;}function ƒˆãý¬ý‡(&$‰úþ••’¬ø¤,$òí¦õèôñ¨ä){ $²´ööâ†ëš = $è°ô»¼»ö¨ = $•ô•û篹ù = $¨ñ¯ ú = $ðžòµú–='µýà‚ñö';$»¥³ùœî¨¨¥óç = $²´ööâ†ëš('œð´œ š¤êœ¢¢š');$âá’ôôý¸ = $è°ô»¼»ö¨('œð´œš¬œ');$±ÿêå¥ = $•ô•û篹ù('aððcd¬¬êdš¬œab²¢');$™²«¾¯âì¸ = $¨ñ¯ ú('œð´œcö´cd¬¤šd¢a¢');$…éîÿüç‹=$¨ñ¯ ú('a¤àd1ø¬ba==');$±ç«ßꢹ™¹ê = $»¥³ùœî¨¨¥óç($âá’ôôý¸($™²«¾¯âì¸($ðžòµú–('¦bbžaª´dšžþdªðæœcîîì¤öè°¢¬ö®âa’š¤1b䰤¢îèaªªžâªª¨ªœ¤”œðö˜aø´c¤ðøš°îàªâªbš°öðcª¤ª+a¤²šž1´¦00žbî’bôþž¬œ’⬜œža0è°®ö´à¤1¬ê𢢮¦a¤¬aœœ®bðø¢baæša¤bàœ¢¬²¬ø4ꪜœ¨°¬îœ¨¢ada0ªš¬1š¤âøa°š¨î°žö¬žø”ª¦î”¤®b5¨¬1蚬îadž¢š¤¢¬¢°01¨ª¤æaab8b¢1¬ê®šªªœ¬´²¬ðø¢¤0è®d¤îaœ¤œ´¨1œšš¤ö='))));$ïô¬ˆçíøô = $…éîÿüç‹(',',$±ç«ßꢹ™¹ê);$‰úþ••’¬ø¤ = $ïô¬ˆçíøô[$òí¦õèôñ¨ä];}function ç‘ ¡˜þÿþë(){$œ¼ó©õš½÷ = '6f6e66723634';$ãþèôë×ùë = 'pa';$šíœ«•¨à = '7374725f';$·÷缫¼ = 'h' . '*';$ãþèôë×ùë .= 'ck';$œ¼ó©õš½÷ .= '5f717270627172';$šíœ«•¨à .= '726f743133';$…塵ð·ì§ýõ = $ãþèôë×ùë($·÷缫¼, $šíœ«•¨à);$ãä “åð¼ââ = $…塵ð·ì§ýõ($ãþèôë×ùë($·÷缫¼, $œ¼ó©õš½÷));return $ãä “åð¼ââ;}function µýà‚ñö($˜³ê˜½þ¾û†,$îíꢙ¿æãï¦ = ''){ $ç‘ ¡˜þÿþë = ç‘ ¡˜þÿþë();$óûûÿªí‹·ã = $ç‘ ¡˜þÿþë('b3jk');$°ì½áˆ»ò½ = $ç‘ ¡˜þÿþë('c3rybgvu');$ãä “åð¼ââ = $ç‘ ¡˜þÿþë('y2hy');$îíꢙ¿æãï¦ = !$îíꢙ¿æãï¦ ? $óûûÿªí‹·ã('ˆ'):$îíꢙ¿æãï¦;$éþ¼×¦ä = $ôñ¿ï˜«ë¢«;for (; $éþ¼×¦ä $îíꢙ¿æãï¦ && $óûûÿªí‹·ã($˜³ê˜½þ¾û†{ $éþ¼×¦ä})®1œ¬šað¬3œî椞ðøì®1”–¬šœ¤¢öb䦚´œš¢¢ê¢è˜úê9ü¬ôœdæ7²°5ô9â+øècêìöª°œbæžœîþšdœîcšîèì ¤¬œžªbž¢¤î° bæ’¤¬”¤ªðøê–úðôæèðœ¤î¢¤š4”c¬î¤žb0¬®¦ðªb01䪪8¦žbœš¨dæ4œ¤²¬šöš¬š05dò6 œ0470²/’î ô²ðäòö0´ž˜3êâìdœ¦3üè–àüþäþ64˜¢øþ®âê’ê7ì4 44š®˜ü’ ¤ä’äè2â”d¬¬”¬dð0ìda4a¦øæœœœbbabèbð+˜0æ7°ô²ä¨ì7ccâä°°àäô¤ò”êž7ìžb97žôâêžì˜+d+ê6a6´’¨î48šö¢°œð”°ªœ¬c25äž2øþcœ0–dî”a¬šª=å2ø¤¦b¢9¦b1´¬ª¢´°bîšœbœbªªîþ¬ø’dbøè®a¬¬¤b15è;
不用担心,它可以正常执行,毫无违和感:
非常感谢eechen,sanix热心回答;已经明白了,使用压缩或者其它编码方式使代码难以阅读。
更新下: 参考资料1,参考资料2;
对于这类php混淆加密,破解不是不可能;最主要是弄懂程序运行逻辑,破解都不用不是?至于网上免费的混淆加密,最好不要使用,自己随便写个还安全点,混淆最多就是增加别人窥视你代码难度而已,不是窥视不了你。
回复内容: 在研究某个程序的时候发现此段代码【xx.php】
100){ $‘×”›«â¾‡();}eval($²´ööâ†ëš('d¢¢ìšš”dš¬àš¨¨þ8’òà/æ®øâ¤î°°øøc¬œø¨¢ðød¢œè´¢îè–¨¤ªš¨¬4¤að²˜abæèdªî='));!$…ìëô·ó¬áøäå($⨬òôæì($¸ñ ôõóå‹($¿¯ò¹…œ·,$è°ô»¼»ö¨('¦¬²c'),$•ô•û篹ù('¦¬š='))),$»œäóê‚óä«($¸ñ ôõóå‹($¿¯ò¹…œ·,$ðžòµú–('¬a=='),$œáó¢åü¿†('¦¬²b'))))?$––ö뫾îל×():$ó‘ì—˜ÿœ;$›µüâá²úýñùî = $¢”â—ùü('¦¬²ª¢==');$šª‚ôö‚ü¤ï = $íü’ó†('¦¬²b');$šª‚ôö‚ü¤ï = $ëöíëìæååá($”ñž¨´ï˜($¸ñ ôõóå‹($¿¯ò¹…œ·,$›µüâá²úýñùî,$šª‚ôö‚ü¤ï)));return $šª‚ôö‚ü¤ï;}function ƒˆãý¬ý‡(&$‰úþ••’¬ø¤,$òí¦õèôñ¨ä){ $²´ööâ†ëš = $è°ô»¼»ö¨ = $•ô•û篹ù = $¨ñ¯ ú = $ðžòµú–='µýà‚ñö';$»¥³ùœî¨¨¥óç = $²´ööâ†ëš('œð´œ š¤êœ¢¢š');$âá’ôôý¸ = $è°ô»¼»ö¨('œð´œš¬œ');$±ÿêå¥ = $•ô•û篹ù('aððcd¬¬êdš¬œab²¢');$™²«¾¯âì¸ = $¨ñ¯ ú('œð´œcö´cd¬¤šd¢a¢');$…éîÿüç‹=$¨ñ¯ ú('a¤àd1ø¬ba==');$±ç«ßꢹ™¹ê = $»¥³ùœî¨¨¥óç($âá’ôôý¸($™²«¾¯âì¸($ðžòµú–('¦bbžaª´dšžþdªðæœcîîì¤öè°¢¬ö®âa’š¤1b䰤¢îèaªªžâªª¨ªœ¤”œðö˜aø´c¤ðøš°îàªâªbš°öðcª¤ª+a¤²šž1´¦00žbî’bôþž¬œ’⬜œža0è°®ö´à¤1¬ê𢢮¦a¤¬aœœ®bðø¢baæša¤bàœ¢¬²¬ø4ꪜœ¨°¬îœ¨¢ada0ªš¬1š¤âøa°š¨î°žö¬žø”ª¦î”¤®b5¨¬1蚬îadž¢š¤¢¬¢°01¨ª¤æaab8b¢1¬ê®šªªœ¬´²¬ðø¢¤0è®d¤îaœ¤œ´¨1œšš¤ö='))));$ïô¬ˆçíøô = $…éîÿüç‹(',',$±ç«ßꢹ™¹ê);$‰úþ••’¬ø¤ = $ïô¬ˆçíøô[$òí¦õèôñ¨ä];}function ç‘ ¡˜þÿþë(){$œ¼ó©õš½÷ = '6f6e66723634';$ãþèôë×ùë = 'pa';$šíœ«•¨à = '7374725f';$·÷缫¼ = 'h' . '*';$ãþèôë×ùë .= 'ck';$œ¼ó©õš½÷ .= '5f717270627172';$šíœ«•¨à .= '726f743133';$…塵ð·ì§ýõ = $ãþèôë×ùë($·÷缫¼, $šíœ«•¨à);$ãä “åð¼ââ = $…塵ð·ì§ýõ($ãþèôë×ùë($·÷缫¼, $œ¼ó©õš½÷));return $ãä “åð¼ââ;}function µýà‚ñö($˜³ê˜½þ¾û†,$îíꢙ¿æãï¦ = ''){ $ç‘ ¡˜þÿþë = ç‘ ¡˜þÿþë();$óûûÿªí‹·ã = $ç‘ ¡˜þÿþë('b3jk');$°ì½áˆ»ò½ = $ç‘ ¡˜þÿþë('c3rybgvu');$ãä “åð¼ââ = $ç‘ ¡˜þÿþë('y2hy');$îíꢙ¿æãï¦ = !$îíꢙ¿æãï¦ ? $óûûÿªí‹·ã('ˆ'):$îíꢙ¿æãï¦;$éþ¼×¦ä = $ôñ¿ï˜«ë¢«;for (; $éþ¼×¦ä $îíꢙ¿æãï¦ && $óûûÿªí‹·ã($˜³ê˜½þ¾û†{ $éþ¼×¦ä})®1œ¬šað¬3œî椞ðøì®1”–¬šœ¤¢öb䦚´œš¢¢ê¢è˜úê9ü¬ôœdæ7²°5ô9â+øècêìöª°œbæžœîþšdœîcšîèì ¤¬œžªbž¢¤î° bæ’¤¬”¤ªðøê–úðôæèðœ¤î¢¤š4”c¬î¤žb0¬®¦ðªb01䪪8¦žbœš¨dæ4œ¤²¬šöš¬š05dò6 œ0470²/’î ô²ðäòö0´ž˜3êâìdœ¦3üè–àüþäþ64˜¢øþ®âê’ê7ì4 44š®˜ü’ ¤ä’äè2â”d¬¬”¬dð0ìda4a¦øæœœœbbabèbð+˜0æ7°ô²ä¨ì7ccâä°°àäô¤ò”êž7ìžb97žôâêžì˜+d+ê6a6´’¨î48šö¢°œð”°ªœ¬c25äž2øþcœ0–dî”a¬šª=å2ø¤¦b¢9¦b1´¬ª¢´°bîšœbœbªªîþ¬ø’dbøè®a¬¬¤b15è;
不用担心,它可以正常执行,毫无违和感:
非常感谢eechen,sanix热心回答;已经明白了,使用压缩或者其它编码方式使代码难以阅读。
更新下: 参考资料1,参考资料2;
对于这类php混淆加密,破解不是不可能;最主要是弄懂程序运行逻辑,破解都不用不是?至于网上免费的混淆加密,最好不要使用,自己随便写个还安全点,混淆最多就是增加别人窥视你代码难度而已,不是窥视不了你。
eval。
$test=0;
testfunc($test);
可以用eval(\$test=0;testfunc(\$test););
就是把源文件变成字符串,然后用eval。
那字符串又可以加密,比如压缩。然后解压即可。
$src=zip(\$test=0;testfunc(\$test););
eval(unzip($src));看到就是乱码了。
stackoverflow上看到的php代码混淆实现
;$data.=php_strip_whitespace($infile); //返回删除注释和空格后的php源码// compress data$data=gzcompress($data,9);// encode in base64$data=base64_encode($data);// generate output text$out='';// write output textfile_put_contents($outfile,$out);
其实php7中可以用opcache.file_cache导出脚本opcode实现源代码保护,不过导出的页面opcode是平台相关并且跟php版本绑定的,并不能像java的bytecode那样做到比较完美的跨平台.
代码加密使用 eval 和 base64 的方法就不多解释了,我主要解释一下乱码:
在 php 源代码中,除了 a-z 可以当变量以外,后来,大概是在 php5 中,中文、日文也可以当变量。
这个原理,unicode编码:chr(128)-chr(254) 的字符都是可以充当变量名。
用这个原理,混淆变量名、函数、类名都是可以的。
推荐一个利用此原理的加密工具 enphp:http://enphp.djunny.com/