Eval Decode и взлом модуля

Daniel

Разрушитель (V)
Сообщения
231
Симпатии
524
Баллы
17 689
Пример декодирования файла и разбор защиты модуля. Автоматизация и инструменты.
Часть первая.
Часто можно встретить обфусцированные php файлы с использованием eval (https://www.php.net/manual/ru/function.eval.php).
Обфускация (от английского obfuscate — делать неочевидным, запутанным, сбивать с толку) — преднамеренное сокрытие программного кода путём его запутывания с сохранением работоспособности.
С исходным кодом делают преобразования, результат которых предается в конструкцию eval(), которая выполняет код PHP, содержащейся в строке. Часто код преобразуется несколько раз с вызовом eval().
Скрытое содержимое. Вам нужно войти или зарегистрироваться.
 
Последнее редактирование:
Часть вторая.

!Не делать всего этого на реальном сайте, модуль обращается к сайту разработчика!
Скрытое содержимое. Вам нужно войти или зарегистрироваться.

Продолжение следует… Есть желающие попробовать решить задачу?
 
Есть. Только хайд уменьш.
Здесь первое сообщение в котором все исходные данные, и немного полезной информации из второго сообщения. Пробуйте. Все открывать смысла нет, тогда вы не сможете пойти своим путем.

Кстати, модуль взломан, но так как никто не откликнулся в соответствующей теме, то в публичном доступе его не будет.

Скрытое содержимое. Вам нужно войти или зарегистрироваться.
 
Прошло больше года и, как говориться, "а воз и нынче там". Учитывая вновь возросший интерес к модулю, стоит продолжить.
Так как основная работа проделана и известны все подводные камни, то осталось совсем чуть-чуть. Для продолжения нужны домен и выданная на него лицензия.
Эти данные нужны для расшифровки недостающего кода контроллера. Для этого понадобиться код алгоритма XTEA.
Скрытое содержимое. Вам нужно войти или зарегистрироваться.
 
Последнее редактирование:
  • Мне нравится
Симпатии: Denzy
@Daniel а можно что то сделать с кодом, который декодером ioncube выходит в таком виде:
PHP:
$fgC8Uy = file_get_contents(__FILE__);
$aR6Op0 = explode("=", $fgC8Uy, 2);
$cR5fbH = base64_decode(end($aR6Op0));
$aR6Op0 = "tLR%*vM)xliYfI[m4Z0bz{D+!\$&,n=X@";
$fgC8Uy = "R`mCw54}yl9hgn^V";
$method = "AES-192-CBC";
$cO6De = openssl_decrypt($cR5fbH, $method, $aR6Op0, true, $fgC8Uy);
if (!$cO6De) {
    exit("This file is corrupted.");
}
eval(" ?>" . $cO6De . "<?php ");
Таких файлов есть несколько, и все они декодируются с такой ошибкой.
 
@Daniel а можно что то сделать с кодом, который декодером ioncube выходит в таком виде:
PHP:
$fgC8Uy = file_get_contents(__FILE__);
$aR6Op0 = explode("=", $fgC8Uy, 2);
$cR5fbH = base64_decode(end($aR6Op0));
$aR6Op0 = "tLR%*vM)xliYfI[m4Z0bz{D+!\$&,n=X@";
$fgC8Uy = "R`mCw54}yl9hgn^V";
$method = "AES-192-CBC";
$cO6De = openssl_decrypt($cR5fbH, $method, $aR6Op0, true, $fgC8Uy);
if (!$cO6De) {
    exit("This file is corrupted.");
}
eval(" ?>" . $cO6De . "<?php ");
Таких файлов есть несколько, и все они декодируются с такой ошибкой.
Можно пример файла?
 
PHP:
//Открывает этот же файл
$fgC8Uy = file_get_contents(__FILE__);
//Разбивает строку по символу "="
#$aR6Op0 = explode("=", $fgC8Uy, 2);
    //Получается что берёт второе значение
$aR6Op0 = "GseUXif1GBmwKns10BaEcV+0TUS9XHCtVVGZj3Nl+DSlMXKGhpC+kPNkRI/z0Uqyo/2hJ3eUqRKNlNEWDKqqhy5SBvhE/B0W8PJkoNa2Sh0nyTqS6JH59wBdO+v+TCe5PmRPvTi30eWsBtJLkkbehtlXxMEl883IOopk7cTj4B8ERV54QFq35YDSG3FYY8PH9GCbIOeFdpDE6IFwIJwOir2E9e50xdk7O9GLQi7pPwgE6st6b/7HVQur6ilk6PtQr/hJ5JuJgZcCFTbgwh/EvkufKa6RqNp/HM9D/nD61OlcskBUHhTk8XUDDgs1uSllS7679aTdeuxqVLlnoBknZ6VMnaQ4kRdXzQ0bfvfVT+JCNjc2wVUudxyQagY8VTncG3Wu0m2myk/4vKbHaevR5TOlW+649Jwx2tCcyV29PuMbGWYVo+ApLQ2N2WHrpWSN+xlpWyWOVBuuMZq2Ar0U6BIxIyPLWJwdW+ZgyhMH/YwKxfqwveI7S3De1bkkKEFUbUXuMtuD77l2EnKKuJWeAqGvUrA8DvAx";
//Дальше всё как обычно
//Так как $aR6Op0 массив, и есть указатель end, берётся последнее значение массива
$cR5fbH = base64_decode(end($aR6Op0));
$aR6Op0 = "tLR%*vM)xliYfI[m4Z0bz{D+!\$&,n=X@";
$fgC8Uy = "R`mCw54}yl9hgn^V";
$method = "AES-192-CBC";
//Тут и происходит декодирование
$cO6De = openssl_decrypt($cR5fbH, $method, $aR6Op0, true, $fgC8Uy);
if (!$cO6De) {
    exit("This file is corrupted.");
}
eval(" ?>" . $cO6De . "<?php ");
 
Последнее редактирование:
Рядом со скриптом ложишь оригинальный файл,
PHP:
//Меняешь вместо filename.php своё имя файла 
$fgC8Uy = file_get_contents('filename.php');
$aR6Op0 = explode("=", $fgC8Uy, 2);

//Дальше всё как обычно
$cR5fbH = base64_decode(end($aR6Op0));

$aR6Op0 = "tLR%*vM)xliYfI[m4Z0bz{D+!\$&,n=X@";
$fgC8Uy = "R`mCw54}yl9hgn^V";
$method = "AES-192-CBC";
$cO6De = openssl_decrypt($cR5fbH, $method, $aR6Op0, true, $fgC8Uy);
echo $cO6De;
 
Последнее редактирование:
Я бы попробовал ради интереса, но и первое сообщение слишком захайдено, 0 информации, но очень интересно)
 
Я бы попробовал ради интереса, но и первое сообщение слишком захайдено, 0 информации, но очень интересно)
Не думаю, что сказанное соответствуют действительности. Уже выше был один такой товарищ. Просто нужно сообщений набрать вот и вся причина. Тем более, что это уже не имеет смысла.
 
Та нет, просто всегда было интересно как декодят файлы и ломают модули, а тут задачка) chatgpt - говорит атата ломать кубик,и не рассказывает нюансы)) гугл тоже не сильно охотно даёт информацию. А бывает что купишь модуль или шаблон клиенту на домен, и хотелось бы всем поставить или просто в коллекции иметь.

Интересно было почитать пару темок тут у вас, особенно с пошаговым обьяснением декодинга, жалко их пару штук всего. Но уже в целом перешло из разряда какой-то магии - в разряд сложной творческой работы ) узнал что такое обфускация, сервис easytoyou. Годный контент, побольше бы)
 
Назад
Верх