Как стать автором
Обновить
27
-1

Пользователь

Отправить сообщение

Делаем crackme. Часть вторая: шифруем функции

Уровень сложностиСредний
Время на прочтение28 мин
Количество просмотров3.1K

Эта статья вторая в цикле по созданию crackme под linux amd64. В этой части мы создадим исполняемый файл, в котором каждая функция будет зашифрована собственным ключом, и будет расшифровываться только на время исполнения. Процесс создания будет полностью автоматизирован, то есть при добавлении нового кода или изменении старого никаких дополнительных действий делать будет не нужно. Код всего проекта находится в репозитории на github.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии0

Делаем crackme. Часть первая: whitebox AES

Уровень сложностиСредний
Время на прочтение34 мин
Количество просмотров3.1K

Эта статья первая из цикла, в котором мы будем создавать crackme для linux amd64. В crackme будут реализованы шифрование каждой функции отдельным ключём и наномиты для противодействия отладке. В данной статье мы рассмотрим алгоритм встраивания ключа шифрования в код для усложнения расшифровки функций пользователем. Если стало интересно, прошу под кат.

Читать далее
Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Применение обобщённой свёртки для обработки синтаксических деревьев

Время на прочтение16 мин
Количество просмотров3.9K

Привет, Хабр! В статье я покажу, как представить синтаксические деревья с помощью фиксированной точки для функторов. Такое представление позволяет снабжать каждый лист дерева дополнительной информацией о самом листе (например позицией выражение в файле с программой), при этом непосредственно перед обработкой листа мы можем убрать из него эту информацию. Таким образом во время обработки в конструкторах синтаксического дерева будут находиться только необходимые данные, что позволяет писать более чистый код для его обработки. К концу статьи мы напишем интерпретатор для простого императивного языка программирования, на примере которого будет показано всё вышеперечисленное

Читать далее
Всего голосов 20: ↑20 и ↓0+20
Комментарии2

Создание упаковщика x86_64 ELF файлов под linux

Время на прочтение13 мин
Количество просмотров6.2K

Введение


В данном посте будет описано создание простого упаковщика исполняемых файлов под linux x86_64. Предполагается, что читатель знаком с языком программирования си, языком ассемблера для архитектуры x86_64 и с устройством ELF файлов. В целях обеспечения ясности из приведённого в статье кода была убрана обработка ошибок и не были показаны реализации некоторых функций, с полным кодом можно ознакомится перейдя по ссылкам на github (загрузчик, упаковщик).

Идея состоит в следующем — мы передаём упаковщику ELF файл, на выходе получаем новый со следующей структурой:
ELF заголовок
Заголовок программы
Сегмент с кодом Загрузчик упакованных ELF файлов
Упакованный ELF файл
256 байт случайных данных
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии8

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Backend Developer
Middle