".file_get_contents($f1l3n4m3)); } function ev41($evalcode){ global $allvarnames, $obfuscation, $deobf_be_verbose; $obfuscation+=1; if ($obfuscation>0) { print "\n//--- begin $obfuscation ---\n".$evalcode."\n//--- end $obfuscation ---\n\n"; } # Make anything that looks like a variable global preg_match_all ('/\$([a-zA-Z_]\w*)/', $evalcode, $varnames, 0); foreach ($varnames[0] as $varname) { # echo "var $varname"; print_r($varname); echo "\n"; $allvarnames[$varname]=1; } $export_global=''; foreach ($allvarnames as $varname => $blah) { $export_global .= 'global '.$varname.";\n"; } #$GLOBAL['evalcode']=$evalcode; #foreach ($GLOBALS as $key => $val) { global $$key; } /* import the global namespace .. eish */ #$excludeList = array('GLOBALS', '_FILES', '_COOKIE', '_POST', '_GET', 'excludeList'); #$export_global="\n". # '$vars_defined=array_diff(get_defined_vars(),$excludeList);'."\n". # 'foreach ($vars_defined as $name_11 => $value_11) { echo "$name_11 "; $GLOBALS[$name_11]=$value_11; } '."\n"; global $argv1; $evalcode = preg_replace('/\b(include|include_once|require|require_once)\b/', 'UN_include', $evalcode ); $evalcode = preg_replace('/\beval\b/', "ev41", $evalcode ); $evalcode = preg_replace('/\bdie\b/', "DIEANOTHERDAY", $evalcode ); $evalcode = preg_replace('/\bsystem\b/', "UN_system", $evalcode ); $evalcode = preg_replace('/\bpassthru\b/', "UN_passthru", $evalcode ); $evalcode = preg_replace('/\bshell_exec\b/', "UN_shell_exec", $evalcode ); $evalcode = preg_replace('/\b__FILE__\b/', '"'.$argv1.'"', $evalcode ); $evalcode = preg_replace('/;/', ";\n", $evalcode ); # better layout $evalcode = $export_global.$evalcode; if ($deobf_be_verbose==1) { echo "// This is what we're really running ...\n$evalcode\n"; } eval($evalcode); #foreach ($allvarnames as $varname => $blah) { # $snippet = substr($GLOBAL[substr($varname,1,999)],0,32); # echo $varname."=$snippet\n"; #} } // Close stdin fclose(fopen("php://stdin","r")); $deobf_be_verbose = 0; foreach ($argv as $argv1) { if ($argv1==$argv[0]) { continue; } if ($argv1=="-v") { $deobf_be_verbose=1; continue; } $obfuscation=-1; echo "\n// -- file ".$argv1." --\n"; $filecode="?>".file_get_contents($argv1); $allvarnames=array(); ev41($filecode); echo "\n"; }