Форум программистов, компьютерный форум, киберфорум
GoldenId
Войти
Регистрация
Восстановить пароль
Карта форума Блоги Сообщество Поиск Заказать работу  
Оценить эту запись

Реверс-инжиниринг одной строчки JavaScript - Хабр

Запись от GoldenId размещена 15.07.2017 в 05:54

Javascript
1
<pre id=p><script>n=setInterval("for(n+=7,i=k,P='p.\\n';i-=1/k;P+=P[i%2?(i%2*j-j+n/k^j)&1:2])j=k/i;p.innerHTML=P",k=64)</script>
Данная строчка JavaScript отрисует следующую анимацию:
Нажмите на изображение для увеличения
Название: 26407acb273d35bfb8bb5f1bd21d8244.gif
Просмотров: 374
Размер:	461.8 Кб
ID:	4326

Источник

А на сколько хватило Вашей оперативной памяти понять?
Размещено в Без категории
Показов 2866 Комментарии 3
Всего комментариев 3
Комментарии
  1. Старый комментарий
    Я немного не понял в чём заключается реверс-инжиниринг, объясните
    Запись от SergProgrammer размещена 15.07.2017 в 12:05 SergProgrammer вне форума
  2. Старый комментарий
    Аватар для GoldenId
    Ну, насколько я понял, он в итоге расписывает эту строчку в читаемом виде:
    Javascript
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    
    const DELAY = 64; // approximately 15 frames per second 15 frames per second * 64 seconds = 960 frames
    var n = 1;
    var p = document.getElementById("p");
    // var draw = "for(n+=7,i=delay,P='p.\\n';i-=1/delay;P+=P[i%2?(i%2*j-j+n/delay^j)&1:2])j=delay/i;p.innerHTML=P";
     
    /**
     * Draws a picture
     * 128 chars by 32 chars = total 4096 chars
     */
    var draw = function() {
        var i = DELAY; // 64
        var P ='p.\n'; // First line, reference for chars to use
        var j;
     
        n += 7;
     
        while (i > 0) {
     
            j = DELAY / i;
            i -= 1 / DELAY;
     
            let index;
            let iIsOdd = (i % 2 != 0);
     
            if (iIsOdd) {
                let magic = ((i % 2 * j - j + n / DELAY) ^ j); // < ------------------
                let magicIsOdd = (magic % 2 != 0); // &1
                if (magicIsOdd) { // &1
                    index = 1;
                } else {
                    index = 0;
                }
            } else {
                index = 2;
            }
     
            switch (index) { // P += P[index];
                case 0:
                    P += "p"; // aka P[0]
                    break;
                case 1:
                    P += "."; // aka P[1]
                    break;
                case 2:
                    P += "\n"; // aka P[2]
            }
        }
        //Update HTML
        p.innerHTML = P;
    };
     
    setInterval(draw, 64);
    Запись от GoldenId размещена 16.07.2017 в 00:33 GoldenId вне форума
  3. Старый комментарий
    Аватар для BOGG ART
    Был код.
    Его автоматически оптимизировали и автоматически обфусцировали.
    Убрали все "лишние" пробельные символы и символы переноса.
    Получилось одна строка.

    А чувак из этой строки делал обратно читаемый код.
    Запись от BOGG ART размещена 18.07.2017 в 22:24 BOGG ART вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru