Сообщение от qaim
|
PS переменную Z перевел на php, получилось вот это =) :
|
я про это и говорил, что дальше вряд ли получится. хотя, возможно.
хотя я дальше функции с fuck не смотрел щас гляну еще разок
итак, тут несколько фрагментов. надеюсь, до этого вы дошли.
window.u62="функция с аргументами a,b,c";
var x = "1p(<много букв в формате \\\\H\\\\14>)";
var y = "<много букв в формате u004d|u0022>";
var z= "функция с аргументами fuck";
var s="<элемент <script> >"
// переименование (зачем?)
s.text='var a=\u0027' + x + '\u0027,b=\u0027' + y + '\u0027,f=' + z + ';
// передаст функции с аргументами fuck аргументы :
// 1. см. x (вверху)
// 2. число 62
// 3. число 92 (??)
// 4. разбитую по символу "|" строку y.
eval(f(a,62,92,b.split(\u0027|\u0027)));';
т.е. нужно вытащить в php значения переменных "x" и "y", причём последнюю ещё разбить по символу "|"
(это не трудно... регвыры помогут с вытаскиванием, а разрезать строку по символу можно встроенными средствами).
далее рассматриваем функцию с аргументами fuck.
её сорец :
// f - 1p(<много букв в формате \\\\H\\\\14>)
// u - число 62
// c - число 92
// k - массив строк типа [ "u004d", "u0022"]
function (f, u, c, k) {
e = function (c) {
return (c < u ? '' : e(parseInt(c / u))) + ((c = c % u) > 35 ? String.fromCharCode(c + 29) : c.toString(36))
};
while (c--) {
if (k[c]) {
var r = new RegExp('\\b' + e(c) + '\\b', 'g');
y = eval('u' + u);
f = y(f, k[c], r)
}
}
eval(f);
return c
}
отображу деобфускатор немного красивше :
// f - 1p(<много букв в формате \\\\H\\\\14>)
// f -> зашифрованный код.
// u - число 62
// c - число 92
// k - массив строк типа [ "u004d", "u0022"]
// используется для дешифровки
function (f, u, c, k) {
e = function (c) {
if (c < u) {
return "";
} else {
return e(c / u) + ( (c = c % u) > 35 ? String.fromCharCode(c + 29) : c.toString(36) );
}
};
while (c--) {
if (k[c]) {
var r = new RegExp('\\b' + e(c) + '\\b', 'g');
f = f.replace(r, k[c]);
}
}
// запускает декодированный код
eval(f);
}
дальше eval(f) продвинуться не удаётся,т.к. строка "x" начинается с "1p", и исполняется, а такой идентификатор является неправильным, и при обращении к нему выскакивает ошибка.. пока что тупик
.
думаю, данный реплейсер не нужно обьяснять
от php потребуется только аналог String.fromCharCode, и преобразование числа в 36-ричную систему, ну и знания регвыров, конечно же.
я себя неважно чувствую после универа, поэтому брться как-то не хочется.