Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите что должен делать этот код... (https://javascript.ru/forum/misc/13035-podskazhite-chto-dolzhen-delat-ehtot-kod.html)

ms_train 13.11.2010 14:50

Подскажите что должен делать этот код...
 
Здраствуйте,есть код,не подскажете в что общих чертах он должен делать и что,после его выполнения будет на выходе?

<script type="text/javascript">
    a = Array(114, 51, 97, 108, 95, 112, 97, 122);
    b = Array(129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153);
    c = ((1 << 1) + 1) * (-~ (((1 << 1) << (1 << 1)) + 1)) + (1 << 1);

    function e(i) {
        return (b[1 ^ 1] - b[((1 + (1 << 1)) << 1) + 1]) + i + ((1 + (1 << (b[(1 << 1) + 1] % ((1 << 1 << 1) + 1)))) << 1) - c + ~ (1 << 1);
    }
    d = eval(String.fromCharCode(e(151), e(137), e(142), e(132), e(143), e(151), e(78), e(140), e(143), e(131), e(129), e(148), e(137), e(143), e(142), e(78), e(136), e(146), e(133), e(134)));
    p = (-~ (-~ (((1 << 1) << (1 << 1)) + 1) + (1 << 1))) - ((1 << 1 << 1) + 1);

    function z(i) {
        if (String.fromCharCode(a[i]) == g[i]) return true;
        return false;
    }
    r = (new RegExp("[\\?&]" + "__" + "=([^&#]*)")).exec(d);
    if (r != null) {
        g = r[(1 << 1) - 1];
        r = (r[(1 << 1) - 1]);
        l = eval(String.fromCharCode(e(146), e(78), e(140), e(133), e(142), e(135), e(148), e(136)));
        if (l = p + (1 << 1) + ~ (((1 + 1) << (1 << 1)) >> ((1 << 1) + 1))) {
            if (z(1 - 1) && z(1) && z(1 + 1) && z((1 << 1) + 1) && z(1 << 1 << 1) && z(5) && z(6) && z(7)) {
                a[0] ^= (1 << 1) + 1;
                a[1] ^= b[12] - 139;
                a[2] ^= g.charCodeAt(1) - 40;
                a[3] ^= g.charCodeAt(3) % 10;
                a[4] ^= g.charCodeAt(5) - (10 << 3) - (10 << 1);
                a[5] ^= 4 * 10 + 2;
                a[6] ^= 45;
                a[7] ^= (2 << 3) - 3;
                for (i = 0; i < a.length; i++) {
                    document.write(String.fromCharCode(a[i]));
                }
            }
        }
    }
</script>

Gvozd 13.11.2010 15:02

нам что по-вашему сильно скучно?
запустите и проверьте

monolithed 13.11.2010 15:07

На обфускатор похоже

ms_train 13.11.2010 15:11

Да это походу и есть обфускатор,только вот никакие деобфускаторы/декодеры это дело не берут...

SV0L0CH 13.11.2010 15:14

Тогда только вручную пересчитывать.

monolithed 13.11.2010 15:28

Цитата:

Сообщение от ms_train
Да это походу и есть обфускатор

99% что это так

Цитата:

Сообщение от ms_train
только вот никакие деобфускаторы/декодеры это дело не берут...

А что по вашему должен выполнить деобфускатор с этим кодом? Логично наверно что обфусцировать.

Цитата:

Сообщение от SV0L0CH
Тогда только вручную пересчитывать.

Что пересчитывать?

SV0L0CH 13.11.2010 15:40

Цитата:

Сообщение от monolithed
Что пересчитывать?

Например:
c=32;
и так далее.

Gvozd 13.11.2010 16:04

Цитата:

Сообщение от SV0L0CH
Например: c=32; и так далее.

зачем вручную пересчитывать?
данный код(как и любой анпакер/декодер же) занимается в первую очередь, что формирует целевой JS-код в форме строки.
затем эта строка передается на выполнение каким-либо из способов.
а способов не трак уж много:
eval, new Function, document.write
может еще что забыл
надо заменить все эти ф-ции на свои, и сделать логирование приходящих им параметров.
как правило приходить будет уже достаточно аккуратный код. ну разве что обсфуцированный, но как правило не закодированный

кстати, обсфукация - это лишь изменение исходного кода до нечитаемого, путем замен нормальных имен переменных на бессмысленные
а тут - кодирование

monolithed 13.11.2010 16:25

Цитата:

Сообщение от Gvozd
new Function

(0)['constructor']['constructor'](alert(this))(); //Function(alert(this))();
:D

Цитата:

Сообщение от Gvozd
а тут - кодирование

точно


Часовой пояс GMT +3, время: 10:40.