505
Subscribers
-124 hours
-57 days
-2030 days
Posts Archive
505
Нашёл, бля, баг драйвера: bl внутри цикла, сука, перезаписывает LR, и ret после выхода из цикла прыгает, нахуй, обратно в середину цикла — получается бесконечный дозапись мусора (сам payload, бля, успел расшифроваться полностью!). Фикс: сохраняю MAGIC_LR в x27 и восстанавливаю LR перед ret, ёпта:
505
Вот же краш, бля — надо, сука, детально отследить, что за херня творится с регистрами. Отлаживаю с малым счётчиком и трассировкой, нахуй:
505
Нашёл, бля: 0x13affc затирает x21/x22, сука (не сохраняет их, нахуй — реальный вызывающий держит живые данные только в x24–x28, ёпта). Переписываю драйвер на гарантированно сохраняемые регистры, блядь:
505
У этой хуйни c(i) период 512, но блядь матричная херня тоже зависит от i mod 512 — короче, вся эта поебень определяется индексом i % 512. Строю, сука, полные таблицы (аффинно, с проверкой и запасным вариантом на полный SBOX) и расшифровываю payload:
Период 512, бля, сломался — моя проверка периода в probe4 была хуйнёй полной (сравнивала массив сам с собой, ебаный позор). Ищем настоящий период бинарно по степеням двойки, нахуй:
505
Ну его нахуй! Каждый байт = отдельный запуск VM. Прощупываю структуру функции для ебучего дешифрования зондированием:
