Смешно и плакать хочется

gattsu

Выдающийся
Проверенный
Победитель в номинации 2018
Победитель в номинации 2017
За веру и верность форуму
За заслуги перед форумом
Преподаватель
Сообщения
165
Розыгрыши
0
Репутация
1 457
Реакции
293
Баллы
1 393

и все остальные производные сборки. Код никто не смотрит.
Код:
    public static void encXORPass(byte[] raw, final int offset, final int size, int key)
    {
        int stop = size - 8;
        int pos = 4 + offset;
        int edx;
        int ecx = key; // Initial xor key
      
        while (pos < stop)
        {
            edx = raw[pos] & 0xFF;
            edx |= (raw[pos + 1] & 0xFF) << 8;
            edx |= (raw[pos + 2] & 0xFF) << 16;
            edx |= (raw[pos + 3] & 0xFF) << 24;
          
            ecx += edx;
          
            edx ^= ecx;
          
            raw[pos++] = (byte) (edx & 0xFF);
            raw[pos++] = (byte) (edx >> 8 & 0xFF);
            raw[pos++] = (byte) (edx >> 16 & 0xFF);
            raw[pos++] = (byte) (edx >> 24 & 0xFF);
        }
      
        raw[pos++] = (byte) (ecx & 0xFF);
        raw[pos++] = (byte) (ecx >> 8 & 0xFF);
        raw[pos++] = (byte) (ecx >> 16 & 0xFF);
        raw[pos] = (byte) (ecx >> 24 & 0xFF);
    }
Ковырял. Увидел. Посмеялся. Загрустил.
Веселый участок кода, с++ такое бы не простил. Мне кажется, что чрезмерная автоматизация множества процессов, в данной ситуации работа с памятью, делает из людей дураков.

int stop = size - 8; offset потеряли

ПС Понятно, что с нуля всегда, и не перекрывает никакие данные, но все же. Забавная фигня обычно из-за таких глупых ошибок мучаешься 2 недели, в поисках при краше системы на один из миллиона случаев. Но когда находишь хочешь себе руки отрезать хД
 

Назад
Сверху Снизу