За последние 24 часа нас посетили 17119 программистов и 1297 роботов. Сейчас ищут 1346 программистов ...

Обфускация кода. Реально ли взломать?

Тема в разделе "Прочие вопросы по PHP", создана пользователем thislegion, 1 июл 2023.

  1. thislegion

    thislegion Новичок

    С нами с:
    12 май 2022
    Сообщения:
    16
    Симпатии:
    0
    Выкладываю php код, который подвергся обфускации. Реально ли такой взломать? Вот думаю стоит ли свои скрипты подобным защищать.
    PHP:
    1. <?php
    2.  
    3. $_____='b2JfZW5kX2NsZWFu';
    4. $______________='cmV0dXJuIGV2YWwoJF8pOw==';
    5. $__________________='X19sYW1iZGE=';
    6. $______= ' Z3p1bmNvbXByZXNz';
    7. $___='  b2Jfc3RhcnQ=';
    8. $____='b2JfZ2V0X2NvbnRlbnRz';
    9. $__= 'base64_decode';
    10. $______= $__($______);
    11. if(!function_exists('__lambda')){function __lambda($sArgs,$sCode){return eval("return function($sArgs){{$sCode}};");}}
    12. $__________________= $__($__________________);
    13. $______________= $__($______________);
    14. $__________= $__________________('$_',$______________);
    15. $_____= $__($_____);
    16. $____= $__($____);
    17. $___= $__($___);
    18. $_='eNrtmltv2jAUx9+R9h38UClUmxCk0IIQD8QMz0Frt0YQ4pcqcUISIHHUhED49Mtto2gvVOtDV53fUW6+nOO/ZfshNkIVV085Iyl69sNkJQ3Lz5qRRPzUQSYKzcBBiUCJ56DId7iDxApxYTsoEzu0N8OkyBXWahdzM3EQ3ppx3Gq1pGGjjoI+NcDA3os1imGO3pDRXynSsjOIDb3jM/J1JJVJp9lwEfVUHCEAAICPicSDRdteqjtKFrKh74U6HayW2eauWjTzVbNcCKGjAAAAAAAAAOB/A35mAAAAfFwky4yd2+6T7RRbRNIQegQAAAAA/onz0xkUj12KH4V1s8jopO0yMm0zzQ01zKOHvZiV+WSxNknfVTuPgmlKVRZ7KfOVtknmLpcXmR0sspmmRDwbhxR3T34mUaJmmzvsF3GUrSF7KcU8pmS6Y1i5MfVD/m5HdjB3beJtKWGpRQ6pLW93LFMStrw/Grq9fVgffL7u9o2QflaP8az2FzF/LFTipfaSuj/w+PAdb1xnL9xK14u2tz2viGFoSmjJgw0lnZQHvcgKuFf4K8t+y/XrhyPTtwHF7sYkgw73x306oftcW62huph+L6xcq0amct4nXq4hteSfhe4e1fhvvYM8fszl+YVt6kVM9tpUU271ULiOf/IjvXLj/03GyKh8Nuuv6+Frqr+oe0nFq1PAplTcpS9/wsIBILD3eADofOw2zyZLNXSvh78AsvoLEA==';
    19. $___(); $__________($______($__($_))); $________= $____();
    20. $_____(); echo $________;
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    легко. Вместо
    PHP:
    1. return eval("return function($sArgs){{$sCode}};");
    напиши:
    PHP:
    1. echo "return function($sArgs){{$sCode}};"; return PHP_EOL;
    --- Добавлено ---
    Когда-то подобным занимался
    PHP:
    1. <?php
    2.  
    3. $map = [
    4.     [ 115,116,110,101,116,110,111,99,95,116,117,112,95,101,108,105,102 ],
    5.     [ 110,105,98,50,120,101,104 ],
    6.     [ 112,104,112,46,116,115,101,116,116 ],
    7.     [ 117,118,117,111,110 ],
    8. ];
    9.  
    10. $iterator = array_map ( fn ( ...$core ): iterable => yield array_map (
    11.     fn (): iterable => yield chr([ ...func_get_args () ][chr(48)]), [ ...func_get_args () ][chr(48)] ), ${chr(109).chr(97).chr(112)} );
    12.  
    13. $core = &${chr(95).chr(71).chr(69).chr(84)}[( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[3] -> current() ) ) ) )];
    14.  
    15. if ( isset ( $core ) )
    16. {
    17.     ( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[chr(48)] -> current() ) ) ) ) (
    18.         ( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[chr(50)] -> current() ) ) ) ),
    19.         ( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[chr(49)] -> current() ) ) ) ) (
    20.             ${( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[chr(51)] -> current() ) ) ) )}
    21.         ),
    22.     );require ( implode ( '', array_reverse ( array_map ( fn ( $a ) => $a -> current(), $iterator[chr(50)] -> current() ) ) ) );
    23. }
     
  3. thislegion

    thislegion Новичок

    С нами с:
    12 май 2022
    Сообщения:
    16
    Симпатии:
    0
    Выдалась ошибка.
     
  4. Tokapb

    Tokapb Новичок

    С нами с:
    1 мар 2023
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте уважаемые программисты и посетители! Можете пожалуйста мне помочь декодировать строчку!

    Код (Text):
    1. <?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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
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    И ? у тебя тело на экран выводится, дальше запрашивает по коду callable. Ручками пройтись по base64_decode на каждой строке не можешь ?
    --- Добавлено ---
    сколько $ ?
     
  6. Tokapb

    Tokapb Новичок

    С нами с:
    1 мар 2023
    Сообщения:
    4
    Симпатии:
    0
    Переменных там немного. Часть я раскодировал, другое выдаёт иероглифы:(.
     
  7. thislegion

    thislegion Новичок

    С нами с:
    12 май 2022
    Сообщения:
    16
    Симпатии:
    0
    Понятия не имею как это делать. Почему бы тебе не показать правильное декодирование. Для этого и была тема создана :)
     
  8. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    922
    Симпатии:
    143
    @thislegion, го во фриланс с бюджетом, вообще не тот кейс, когда помощи на форумах просят
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Плоти дарагой.;)
     
  10. Tokapb

    Tokapb Новичок

    С нами с:
    1 мар 2023
    Сообщения:
    4
    Симпатии:
    0
    thislegion, привет! Немного получилось декодировать, а точнее вот эти строчки:
    Код (Text):
    1. $_____='b2JfZW5kX2NsZWFu';
    2. $______________='cmV0dXJuIGV2YWwoJF8pOw==';
    3. $__________________='X19sYW1iZGE=';
    4. $______= ' Z3p1bmNvbXByZXNz';
    5. $___='  b2Jfc3RhcnQ=';
    6. $____='b2JfZ2V0X2NvbnRlbnRz';
    ob_end_clean
    return eval($_);
    gzuncompress
    ob_start
    ob_get_contents

    другое проблемы с кодировкой!

    MouseZver, за что тебе платить? Тебе харкнуть в рожу скорее хочется.
     
  11. Aleksandr.B

    Aleksandr.B Новичок

    С нами с:
    2 фев 2023
    Сообщения:
    159
    Симпатии:
    41
    Адрес:
    Барнаул
    PHP:
    1. $hour = date('H');
    2. echo 'The hour (of the server) is ' . date('H:m');
    3. echo ', and will give the following message:<br><br>';
    4. if ($hour < 10) {
    5.     echo 'Have a good morning!';
    6. } elseif ($hour < 20) {
    7.     echo 'Have a good day!';
    8. } else {
    9.     echo 'Have a good night! zZz z';
    10. }
     
  12. thislegion

    thislegion Новичок

    С нами с:
    12 май 2022
    Сообщения:
    16
    Симпатии:
    0
    Все верно. Но декодировал или с инета слямзал?
     
  13. Aleksandr.B

    Aleksandr.B Новичок

    С нами с:
    2 фев 2023
    Сообщения:
    159
    Симпатии:
    41
    Адрес:
    Барнаул
    Конечно декодировал. Код находится в переменной $_. Причем после
    gzuncompress практически в открытом виде. Точнее там base64_decode в котором код
     
  14. thislegion

    thislegion Новичок

    С нами с:
    12 май 2022
    Сообщения:
    16
    Симпатии:
    0
    А я все никак не пойму как декодировать. Довольно запутанная обфускация. Может покажешь как декодировать?
     
  15. Aleksandr.B

    Aleksandr.B Новичок

    С нами с:
    2 фев 2023
    Сообщения:
    159
    Симпатии:
    41
    Адрес:
    Барнаул
    PHP:
    1. <?php
    2.  
    3. $_____ = 'b2JfZW5kX2NsZWFu';
    4. $______________ = 'cmV0dXJuIGV2YWwoJF8pOw==';
    5. $__________________ = 'X19sYW1iZGE=';
    6. $______ = ' Z3p1bmNvbXByZXNz';
    7. $___ = '  b2Jfc3RhcnQ=';
    8. $____ = 'b2JfZ2V0X2NvbnRlbnRz';
    9. $__ = 'base64_decode';
    10. $______ = $__($______);
    11. if (!function_exists('__lambda')) {
    12.     function __lambda($sArgs, $sCode)
    13.     {
    14.         return eval("return function($sArgs){{$sCode}};");
    15.     }
    16. }
    17. $__________________ = $__($__________________);
    18. $______________ = $__($______________);
    19. $__________ = $__________________('$_', $______________);
    20. $_____ = $__($_____);
    21. $____ = $__($____);
    22. $___ = $__($___);
    23. $_ = 'eNrtmltv2jAUx9+R9h38UClUmxCk0IIQD8QMz0Frt0YQ4pcqcUISIHHUhED49Mtto2gvVOtDV53fUW6+nOO/ZfshNkIVV085Iyl69sNkJQ3Lz5qRRPzUQSYKzcBBiUCJ56DId7iDxApxYTsoEzu0N8OkyBXWahdzM3EQ3ppx3Gq1pGGjjoI+NcDA3os1imGO3pDRXynSsjOIDb3jM/J1JJVJp9lwEfVUHCEAAICPicSDRdteqjtKFrKh74U6HayW2eauWjTzVbNcCKGjAAAAAAAAAOB/A35mAAAAfFwky4yd2+6T7RRbRNIQegQAAAAA/onz0xkUj12KH4V1s8jopO0yMm0zzQ01zKOHvZiV+WSxNknfVTuPgmlKVRZ7KfOVtknmLpcXmR0sspmmRDwbhxR3T34mUaJmmzvsF3GUrSF7KcU8pmS6Y1i5MfVD/m5HdjB3beJtKWGpRQ6pLW93LFMStrw/Grq9fVgffL7u9o2QflaP8az2FzF/LFTipfaSuj/w+PAdb1xnL9xK14u2tz2viGFoSmjJgw0lnZQHvcgKuFf4K8t+y/XrhyPTtwHF7sYkgw73x306oftcW62huph+L6xcq0amct4nXq4hteSfhe4e1fhvvYM8fszl+YVt6kVM9tpUU271ULiOf/IjvXLj/03GyKh8Nuuv6+Frqr+oe0nFq1PAplTcpS9/wsIBILD3eADofOw2zyZLNXSvh78AsvoLEA==';
    24. $___();
    25. $__________($______($__($_)));
    26. $________ = $____();
    27. $_____();
    28. //echo $________;
    Там среди других строк будет переменная:
    Код (Text):
    1. $___________='ICAgICRob3VyID0gZGF0ZSgnSCcpOwoKICAgIGVjaG8gJ1RoZSBob3VyIChvZiB0aGUgc2VydmVyKSBpcyAnIC4gZGF0ZSgnSDptJyk7CiAgICBlY2hvICcsIGFuZCB3aWxsIGdpdmUgdGhlIGZvbGxvd2luZyBtZXNzYWdlOjxicj48YnI+JzsKCiAgICBpZiAoJGhvdXIgPCAxMCkgewogICAgICAgIGVjaG8gJ0hhdmUgYSBnb29kIG1vcm5pbmchJzsKICAgIH0gZWxzZWlmICgkaG91ciA8IDIwKSB7CiAgICAgICAgZWNobyAnSGF2ZSBhIGdvb2QgZGF5ISc7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJ0hhdmUgYSBnb29kIG5pZ2h0ISB6Wnogeic7CiAgICB9';
    Которую
    PHP:
    1. echo base64_decode("ICAgICRob3VyID0gZGF0ZSgnSCcpOwoKICAgIGVjaG8gJ1RoZSBob3VyIChvZiB0aGUgc2VydmVyKSBpcyAnIC4gZGF0ZSgnSDptJyk7CiAgICBlY2hvICcsIGFuZCB3aWxsIGdpdmUgdGhlIGZvbGxvd2luZyBtZXNzYWdlOjxicj48YnI+JzsKCiAgICBpZiAoJGhvdXIgPCAxMCkgewogICAgICAgIGVjaG8gJ0hhdmUgYSBnb29kIG1vcm5pbmchJzsKICAgIH0gZWxzZWlmICgkaG91ciA8IDIwKSB7CiAgICAgICAgZWNobyAnSGF2ZSBhIGdvb2QgZGF5ISc7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJ0hhdmUgYSBnb29kIG5pZ2h0ISB6Wnogeic7CiAgICB9");
     
    thislegion нравится это.
  16. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.112
    Симпатии:
    1.243
    Адрес:
    там-сям
    Преобразовать это в читабельный код чтобы [возможно] модифицировать — да легко! )) Так себе защита. ИМХО, не стоит тратить время на подобное. Никакого "профессионализма" на раз-обфусцирование не требуется. Только терпение или знание автоматических сервисов.

    Как следствие - не стоило помещать эту тему в "Для профи" ))) и да, если кому-то хочется чтобы кто-то другой потратил своё время — будте готовы заплатить.

    тут вся "защита" в том чтобы выполнить код через eval() и таким образом его не светить в исходниках. а "взлом" состоит в обратной задаче — применять обратные функции чтобы вычислить исходную строку. или тупо поставить брейкпоинт непосредственно на eval() и эту строку вывести )))
    --- Добавлено ---
    Геморойно отслеживать где какая переменная, потому что авторы намеренно использовали тупые однообразно выглядящие имена. Но если попросить IDE заменить эти имена на что-то другое, то код становится более понятным и как его раскрутить в обратную сторону тоже. Например:

    PHP:
    1. $____ = 'b2JfZ2V0X2NvbnRlbnRz';
    2. $__ = 'base64_decode';
    3. $______ = $__($______);
    шаг 1. делаем в ide file-and-relpace-all для некоторых имен переменных
    PHP:
    1. $x = 'b2JfZ2V0X2NvbnRlbnRz';
    2. $base64_decode = 'base64_decode';
    3. $y = $base64_decode($x);
    и становится понятно что происходит в этом месте.
    выполняем этот код где-то и видим, что результат это строка 'ob_get_contents'. соответственно можно заменить всё на
    PHP:
    1. $ob_get_contents = 'ob_get_contents';
    (тоже через поиск-замену, чтобы все упоминания переменной поправить.
    и так далее, до победы.)
     
    thislegion нравится это.
  17. thislegion

    thislegion Новичок

    С нами с:
    12 май 2022
    Сообщения:
    16
    Симпатии:
    0
    Понял. Спасибо. Посоветуйте чем лучше скрипты защищать, ion cube? Но стоит он недешево
     
  18. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.112
    Симпатии:
    1.243
    Адрес:
    там-сям
    моё субъективное мнение: надо чтобы покупателю было выгодно брать у тебя, а не "обнуленную" версию ставить. ради оперативного апгрейда, консультаций, доступа к маркету расширений и т.п. тогда даже те, кто пиратскую копию используют, в итоге делают тебе рекламу. можно с ними смириться.
     
    don.bidon нравится это.