Обфускаторы/деобфускаторы

Статус
В этой теме нельзя размещать новые ответы.
чем расшифровыввется код:
PHP:
$x0b="array\137\x73\150if\164"; $x0c="\141\162\162\x61\x79\x5f\160\x6f\160"; $x0d="\x61\x72\x72ay_keys"; $x0e="\x61r\x72\x61y\x5f\x66\x6c\151\x70"; $x0f="\141\162\x72\141y\x5fvalu\145\163"; $x10="\141r\x72\141y\x5f\x75\156s\150i\146\x74"; $x11="\143\x6c\157\163e\x64\151r"; $x12="\x63o\x75\156\164"; $x13="c\157p\171"; $x14="\x64at\145"; $x15="d\151r"; $x16="e\x78\x70\x6c\x6fd\x65"; $x17="\x66ile\137\x67et\137\x63\x6f\x6et\x65\x6e\x74\163"; $x18="\146i\154e\x5f\160\165\x74_\143on\x74\145\156\x74\x73"; $x19="\x66\151\x6c\x65\137\x65\170\151\x73ts"; $x1a="\146\151l\x65\x73\151\172\x65"; $x1b="fi\x6c\x65\x6d\164i\155\145"; $x1c="\x67\145\x74\x69ma\x67\x65si\x7a\145"; $x1d="\x67\x6c\x6f\x62"; $x1e="\151c\x6f\156\x76"; $x1f="im\x61\x67\145\143\x72e\141\164e\146\x72\x6f\155j\x70\145g"; $x20="\151\x6da\147\x65\144e\x73\164\162\x6fy"; $x21="\x69\x6d\x61\147e\x63r\x65\x61t\x65\146r\157\x6d\160\x6eg"; $x22="\151mag\145c\162ea\x74efr\x6f\155g\151f"; $x23="\x69m\141\x67\145\x63r\145\141\x74et\x72\x75\x65\x63\x6flo\x72"; $x24="\151\155ag\x65\x66i\x6c\x6c"; $x25="\x69\x6dag\x65c\157\x70\171\x72\145s\141mpl\145\144"; $x26="\x69ma\x67e\152\160e\147"; $x27="\151\x6da\147\x65\160\156\147"; $x28="i\155\x61ge\147\x69\146"; $x29="\151m\141\x67e\164ypes"; $x2a="\x69mages\141\166\145a\x6c\x70ha"; $x2b="\151\155\x61ge\x73\170"; $x2c="i\155a\147e\163y"; $x2d="\x69\x6d\160\x6co\144e"; $x2e="\151n_\141r\162\x61\171"; $x2f="\151\x73\x5f\144\x69\x72"; $x30="is\137\156\165l\x6c"; $x31="\x69\163_\x66\151le"; $x32="\155i\143\162o\x74i\155e"; $x33="\x6d\x6b\x74\151m\x65"; $x34="\x6d\153d\x69\162"; $x35="mt\x5f\162\141nd"; $x36="o\x70endir"; $x37="\x70reg\137\155\x61\x74\x63\x68"; $x38="\160\162\x65\147\137\162\x65pl\141ce"; $x39="\162\x65\141\x64\x64\151\x72"; $x3a="\162\x61\x6e\144"; $x3b="\x72ound"; $x3c="\x72\x6ddir"; $x3d="r\x65\156\x61\155e"; $x3e="\x73\164r_\162\x65\x70l\x61ce"; $x3f="s\164\x72\154e\x6e"; $x40="s\165\142\x73\x74\162"; $x41="\163tr\x74\x6f\x75pper"; $x42="\164o\165\143\x68"; $x43="t\x72i\x6d"; $x44="\x75\x6e\x6cink";
 
чем расшифровыввется код:
PHP:
$x0b="array\137\x73\150if\164"; ...
это не код, а набор строк
Код:
$x0b = array_shift
$x0c = array_pop
$x0d = array_keys
$x0e = array_flip
$x0f = array_values
$x10 = array_unshift
$x11 = closedir
$x12 = count
$x13 = copy
$x14 = date
$x15 = dir
$x16 = explode
$x17 = file_get_contents
$x18 = file_put_contents
$x19 = file_exists
$x1a = filesize
$x1b = filemtime
$x1c = getimagesize
$x1d = glob
$x1e = iconv
$x1f = imagecreatefromjpeg
$x20 = imagedestroy
$x21 = imagecreatefrompng
$x22 = imagecreatefromgif
$x23 = imagecreatetruecolor
$x24 = imagefill
$x25 = imagecopyresampled
$x26 = imagejpeg
$x27 = imagepng
$x28 = imagegif
$x29 = imagetypes
$x2a = imagesavealpha
$x2b = imagesx
$x2c = imagesy
$x2d = implode
$x2e = in_array
$x2f = is_dir
$x30 = is_null
$x31 = is_file
$x32 = microtime
$x33 = mktime
$x34 = mkdir
$x35 = mt_rand
$x36 = opendir
$x37 = preg_match
$x38 = preg_replace
$x39 = readdir
$x3a = rand
$x3b = round
$x3c = rmdir
$x3d = rename
$x3e = str_replace
$x3f = strlen
$x40 = substr
$x41 = strtoupper
$x42 = touch
$x43 = trim
$x44 = unlink

я их "расшифровал" заменой
(\$x.*?)=".*?";
на
echo("\\$1 = $1\\n");
 
как зашифровать сразу папку со скриптами php связанными между собой ?
 
вот вариант хороший
PHP:
PHP код:
function encrypt($text, $key) {
    $text = gzdeflate($text);
    $len = strlen($text);
 
    $key = md5($key) . substr(md5(strrev($key)), 0, strlen($key));
 
    for ($i = 0; $i < $len; $i++) {
        $key .= $text[$i];
        $text[$i] = chr((ord($text[$i]) + ord($key[$i])) % 256);
    }
 
    return $text;
}
 
function decrypt($text, $key) {
    $len = strlen($text);
 
    $key = md5($key) . substr(md5(strrev($key)), 0, strlen($key));
 
    for ($i = 0; $i < $len; $i++) {
        $text[$i] = chr((ord($text[$i]) - ord($key[$i])) % 256);
        $key .= $text[$i];
    }
 
    return gzinflate($text);
}

файлы выгядит как
Код:
<?php $____='@Я@ґfкNВ¦ёТ†Ў… куча бинарного кода.... переменные?>
Это для шеллов в основном.

Можете, как человеку весьма далекому от php, обьяснить как использовать эту конструкцию?
 
Подскажите, что-нибудь можно сделать с переменными, выражениями, которые закодированы _obfuscate_ххххххх ?
 

Вложения

  • asm.txt
    20,3 KB · Просмотры: 56
  • obf.jpg
    obf.jpg
    337 KB · Просмотры: 142
Не совсем понял все :)
скажите, если код под зендом. Сервер его раскодирует. А дальше код obfuscate. Чтобы сервер его понял, ему же нужно его раскодировать правильно. Значит он должен получить алгоритм какой-то. Правильно? Если да, то, получается, что данный алгоритм где-то в скрипте должен лежать, просто под зендом. Правильно?
 
Не совсем понял все :)
скажите, если код под зендом. Сервер его раскодирует. А дальше код obfuscate. Чтобы сервер его понял, ему же нужно его раскодировать правильно. Значит он должен получить алгоритм какой-то. Правильно? Если да, то, получается, что данный алгоритм где-то в скрипте должен лежать, просто под зендом. Правильно?
в скрипте алгоритмов деофусцирующих быть не может скрипту не нужно их иметь, скрипт лишь содержит рабочую информацию образно флаги интерпритации, алготитмы находятся в лоадере aka словарь посмотри его тут Для просмотра ссылки Войди или Зарегистрируйся
пример словаря
Код:
<cqnk>-><raq>
<cqnl>-><sc>
<cqnm>-><t%y$>
<cqnn>-><u,>
<cqno>-><via4>
<cqnp>-><wk%<>
<cqnq>-><x-id>
<cqnr>-><y-l>
<cqns>-><zqqt>
<cqnt>-><[s5\>
<cqnu>-><\5yd>
<cqnv>-><]=l>
<cqnw>-><^yt>
<cqnx>-><_[e|>
там же пост 24 библиотека деобфускации на ~70000 кодов, работает просто
 
Не совсем понял все :)
скажите, если код под зендом. Сервер его раскодирует. А дальше код obfuscate. Чтобы сервер его понял, ему же нужно его раскодировать правильно. Значит он должен получить алгоритм какой-то. Правильно? Если да, то, получается, что данный алгоритм где-то в скрипте должен лежать, просто под зендом. Правильно?
Если выражаться понятным языком, то серверу нужны названия только глобальных переменных и процедур. Локальные же процедуры и переменные неважно как называются. Именно из за этого и появилась обфускация, т.е. совершенно неважно само название переменной, самое главное, что-бы у нее было одно и то-же имя во всех местах где она используется, и если мы во всем скрипте заменим $i на $HJH, то логика работы скрипта не поменяется, зато человеку разбирающему скрипт будет гораздо сложнее отслеживать логику.
 
Если выражаться понятным языком, то серверу нужны названия только глобальных переменных и процедур. Локальные же процедуры и переменные неважно как называются. Именно из за этого и появилась обфускация, т.е. совершенно неважно само название переменной, самое главное, что-бы у нее было одно и то-же имя во всех местах где она используется, и если мы во всем скрипте заменим $i на $HJH, то логика работы скрипта не поменяется, зато человеку разбирающему скрипт будет гораздо сложнее отслеживать логику.
Это я понимаю. Я не понимаю, где нормальные процедуры лежат, откуда сервер их берет, из скрипта или из внешнего источника? Хотя, если скрипт работает на локалке без инета, значит они где-то в скрипте. Правильно?
<-------------- добавлено через 57 сек. -------------->
там же пост 24 библиотека деобфускации на ~70000 кодов, работает просто
Все время было интересно, как работать с таким объемом данных?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху