Выкладываю php код, который подвергся обфускации. Реально ли такой взломать? Вот думаю стоит ли свои скрипты подобным защищать. PHP: <?php $_____='b2JfZW5kX2NsZWFu'; $______________='cmV0dXJuIGV2YWwoJF8pOw=='; $__________________='X19sYW1iZGE='; $______= ' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; $__= 'base64_decode'; $______= $__($______); if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}} $__________________= $__($__________________); $______________= $__($______________); $__________= $__________________('$_',$______________); $_____= $__($_____); $____= $__($____); $___= $__($___); $_='eNrtmltv2jAUx9+R9h38UClUmxCk0IIQD8QMz0Frt0YQ4pcqcUISIHHUhED49Mtto2gvVOtDV53fUW6+nOO/ZfshNkIVV085Iyl69sNkJQ3Lz5qRRPzUQSYKzcBBiUCJ56DId7iDxApxYTsoEzu0N8OkyBXWahdzM3EQ3ppx3Gq1pGGjjoI+NcDA3os1imGO3pDRXynSsjOIDb3jM/J1JJVJp9lwEfVUHCEAAICPicSDRdteqjtKFrKh74U6HayW2eauWjTzVbNcCKGjAAAAAAAAAOB/A35mAAAAfFwky4yd2+6T7RRbRNIQegQAAAAA/onz0xkUj12KH4V1s8jopO0yMm0zzQ01zKOHvZiV+WSxNknfVTuPgmlKVRZ7KfOVtknmLpcXmR0sspmmRDwbhxR3T34mUaJmmzvsF3GUrSF7KcU8pmS6Y1i5MfVD/m5HdjB3beJtKWGpRQ6pLW93LFMStrw/Grq9fVgffL7u9o2QflaP8az2FzF/LFTipfaSuj/w+PAdb1xnL9xK14u2tz2viGFoSmjJgw0lnZQHvcgKuFf4K8t+y/XrhyPTtwHF7sYkgw73x306oftcW62huph+L6xcq0amct4nXq4hteSfhe4e1fhvvYM8fszl+YVt6kVM9tpUU271ULiOf/IjvXLj/03GyKh8Nuuv6+Frqr+oe0nFq1PAplTcpS9/wsIBILD3eADofOw2zyZLNXSvh78AsvoLEA=='; $___(); $__________($______($__($_))); $________= $____(); $_____(); echo $________;
легко. Вместо PHP: return eval("return function($sArgs){{$sCode}};"); напиши: PHP: echo "return function($sArgs){{$sCode}};"; return PHP_EOL; --- Добавлено --- Когда-то подобным занимался PHP: <?php $map = [ [ 115,116,110,101,116,110,111,99,95,116,117,112,95,101,108,105,102 ], [ 110,105,98,50,120,101,104 ], [ 112,104,112,46,116,115,101,116,116 ], [ 117,118,117,111,110 ], ]; $iterator = array_map ( fn ( ...$core ): iterable => yield array_map ( fn (): iterable => yield chr([ ...func_get_args () ][chr(48)]), [ ...func_get_args () ][chr(48)] ), ${chr(109).chr(97).chr(112)} ); $core = &${chr(95).chr(71).chr(69).chr(84)}[( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[3] -> current() ) ) ) )]; if ( isset ( $core ) ) { ( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[chr(48)] -> current() ) ) ) ) ( ( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[chr(50)] -> current() ) ) ) ), ( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[chr(49)] -> current() ) ) ) ) ( ${( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[chr(51)] -> current() ) ) ) )} ), );require ( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[chr(50)] -> current() ) ) ) ); }
Здравствуйте уважаемые программисты и посетители! Можете пожалуйста мне помочь декодировать строчку! Код (Text): <?php $I11l1lIllI=file(__FILE__);eval(base64_decode("ZnVuY3Rpb24gT08wTzAwTzBPTygkYSwkYil7JGM9YXJyYXkoODYwLDMyNCwzMiwyNTM4KTskaz1nemluZmxhdGUoYmFzZTY0X2RlY29kZSgiS3lyTlRjb3NLUVlBIikpOyRPME8wPSRrWzZdLiRrWzFdLiRrWzNdLiRrWzZdLiRrWzVdLiRrWzBdOyRPMD0iJGtbNV0ka1swXSRrWzRdJGtbMl0iO2lmKCRiPT0xNzApeyRkPSRPME8wKCRhLCRjWzBdKyRjWzFdLCRjWzJdKTt9ZWxzZWlmKCRiPT04KXskZD0kTzBPMCgkYSwkY1swXSwkY1sxXSk7fWVsc2VpZigkYj09MTIpeyRkPSRPMCgkTzBPMCgkYSwkY1swXSskY1sxXSskY1syXSkpO31yZXR1cm4kZDt9"));eval(base64_decode(OO0O00O0OO($I11l1lIllI[0],8)));eval(IlIlllll1I(OO0O00O0OO($I11l1lIllI[0],12),OO0O00O0OO($I11l1lIllI[0],170),$I11l1lIllI));__halt_compiler();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
И ? у тебя тело на экран выводится, дальше запрашивает по коду callable. Ручками пройтись по base64_decode на каждой строке не можешь ? --- Добавлено --- сколько $ ?
Понятия не имею как это делать. Почему бы тебе не показать правильное декодирование. Для этого и была тема создана
thislegion, привет! Немного получилось декодировать, а точнее вот эти строчки: Код (Text): $_____='b2JfZW5kX2NsZWFu'; $______________='cmV0dXJuIGV2YWwoJF8pOw=='; $__________________='X19sYW1iZGE='; $______= ' Z3p1bmNvbXByZXNz'; $___=' b2Jfc3RhcnQ='; $____='b2JfZ2V0X2NvbnRlbnRz'; ob_end_clean return eval($_); gzuncompress ob_start ob_get_contents другое проблемы с кодировкой! MouseZver, за что тебе платить? Тебе харкнуть в рожу скорее хочется.
PHP: $hour = date('H'); echo 'The hour (of the server) is ' . date('H:m'); echo ', and will give the following message:<br><br>'; if ($hour < 10) { echo 'Have a good morning!'; } elseif ($hour < 20) { echo 'Have a good day!'; } else { echo 'Have a good night! zZz z'; }
Конечно декодировал. Код находится в переменной $_. Причем после gzuncompress практически в открытом виде. Точнее там base64_decode в котором код
А я все никак не пойму как декодировать. Довольно запутанная обфускация. Может покажешь как декодировать?
PHP: <?php $_____ = 'b2JfZW5kX2NsZWFu'; $______________ = 'cmV0dXJuIGV2YWwoJF8pOw=='; $__________________ = 'X19sYW1iZGE='; $______ = ' Z3p1bmNvbXByZXNz'; $___ = ' b2Jfc3RhcnQ='; $____ = 'b2JfZ2V0X2NvbnRlbnRz'; $__ = 'base64_decode'; $______ = $__($______); if (!function_exists('__lambda')) { function __lambda($sArgs, $sCode) { return eval("return function($sArgs){{$sCode}};"); } } $__________________ = $__($__________________); $______________ = $__($______________); $__________ = $__________________('$_', $______________); $_____ = $__($_____); $____ = $__($____); $___ = $__($___); $_ = 'eNrtmltv2jAUx9+R9h38UClUmxCk0IIQD8QMz0Frt0YQ4pcqcUISIHHUhED49Mtto2gvVOtDV53fUW6+nOO/ZfshNkIVV085Iyl69sNkJQ3Lz5qRRPzUQSYKzcBBiUCJ56DId7iDxApxYTsoEzu0N8OkyBXWahdzM3EQ3ppx3Gq1pGGjjoI+NcDA3os1imGO3pDRXynSsjOIDb3jM/J1JJVJp9lwEfVUHCEAAICPicSDRdteqjtKFrKh74U6HayW2eauWjTzVbNcCKGjAAAAAAAAAOB/A35mAAAAfFwky4yd2+6T7RRbRNIQegQAAAAA/onz0xkUj12KH4V1s8jopO0yMm0zzQ01zKOHvZiV+WSxNknfVTuPgmlKVRZ7KfOVtknmLpcXmR0sspmmRDwbhxR3T34mUaJmmzvsF3GUrSF7KcU8pmS6Y1i5MfVD/m5HdjB3beJtKWGpRQ6pLW93LFMStrw/Grq9fVgffL7u9o2QflaP8az2FzF/LFTipfaSuj/w+PAdb1xnL9xK14u2tz2viGFoSmjJgw0lnZQHvcgKuFf4K8t+y/XrhyPTtwHF7sYkgw73x306oftcW62huph+L6xcq0amct4nXq4hteSfhe4e1fhvvYM8fszl+YVt6kVM9tpUU271ULiOf/IjvXLj/03GyKh8Nuuv6+Frqr+oe0nFq1PAplTcpS9/wsIBILD3eADofOw2zyZLNXSvh78AsvoLEA=='; $___(); $__________($______($__($_))); $________ = $____(); $_____(); //echo $________; var_dump(gzuncompress(base64_decode($_))); Там среди других строк будет переменная: Код (Text): $___________='ICAgICRob3VyID0gZGF0ZSgnSCcpOwoKICAgIGVjaG8gJ1RoZSBob3VyIChvZiB0aGUgc2VydmVyKSBpcyAnIC4gZGF0ZSgnSDptJyk7CiAgICBlY2hvICcsIGFuZCB3aWxsIGdpdmUgdGhlIGZvbGxvd2luZyBtZXNzYWdlOjxicj48YnI+JzsKCiAgICBpZiAoJGhvdXIgPCAxMCkgewogICAgICAgIGVjaG8gJ0hhdmUgYSBnb29kIG1vcm5pbmchJzsKICAgIH0gZWxzZWlmICgkaG91ciA8IDIwKSB7CiAgICAgICAgZWNobyAnSGF2ZSBhIGdvb2QgZGF5ISc7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJ0hhdmUgYSBnb29kIG5pZ2h0ISB6Wnogeic7CiAgICB9'; Которую PHP: echo base64_decode("ICAgICRob3VyID0gZGF0ZSgnSCcpOwoKICAgIGVjaG8gJ1RoZSBob3VyIChvZiB0aGUgc2VydmVyKSBpcyAnIC4gZGF0ZSgnSDptJyk7CiAgICBlY2hvICcsIGFuZCB3aWxsIGdpdmUgdGhlIGZvbGxvd2luZyBtZXNzYWdlOjxicj48YnI+JzsKCiAgICBpZiAoJGhvdXIgPCAxMCkgewogICAgICAgIGVjaG8gJ0hhdmUgYSBnb29kIG1vcm5pbmchJzsKICAgIH0gZWxzZWlmICgkaG91ciA8IDIwKSB7CiAgICAgICAgZWNobyAnSGF2ZSBhIGdvb2QgZGF5ISc7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJ0hhdmUgYSBnb29kIG5pZ2h0ISB6Wnogeic7CiAgICB9");
Преобразовать это в читабельный код чтобы [возможно] модифицировать — да легко! )) Так себе защита. ИМХО, не стоит тратить время на подобное. Никакого "профессионализма" на раз-обфусцирование не требуется. Только терпение или знание автоматических сервисов. Как следствие - не стоило помещать эту тему в "Для профи" ))) и да, если кому-то хочется чтобы кто-то другой потратил своё время — будте готовы заплатить. тут вся "защита" в том чтобы выполнить код через eval() и таким образом его не светить в исходниках. а "взлом" состоит в обратной задаче — применять обратные функции чтобы вычислить исходную строку. или тупо поставить брейкпоинт непосредственно на eval() и эту строку вывести ))) --- Добавлено --- Геморойно отслеживать где какая переменная, потому что авторы намеренно использовали тупые однообразно выглядящие имена. Но если попросить IDE заменить эти имена на что-то другое, то код становится более понятным и как его раскрутить в обратную сторону тоже. Например: PHP: $____ = 'b2JfZ2V0X2NvbnRlbnRz'; $__ = 'base64_decode'; $______ = $__($______); шаг 1. делаем в ide file-and-relpace-all для некоторых имен переменных PHP: $x = 'b2JfZ2V0X2NvbnRlbnRz'; $base64_decode = 'base64_decode'; $y = $base64_decode($x); и становится понятно что происходит в этом месте. выполняем этот код где-то и видим, что результат это строка 'ob_get_contents'. соответственно можно заменить всё на PHP: $ob_get_contents = 'ob_get_contents'; (тоже через поиск-замену, чтобы все упоминания переменной поправить. и так далее, до победы.)
моё субъективное мнение: надо чтобы покупателю было выгодно брать у тебя, а не "обнуленную" версию ставить. ради оперативного апгрейда, консультаций, доступа к маркету расширений и т.п. тогда даже те, кто пиратскую копию используют, в итоге делают тебе рекламу. можно с ними смириться.