Кто такой реверс-инженер?
Реверс-инженер (reverse engineer) — это специалист по обратной разработке, который исследует готовое устройство/программу и документацию для того, чтобы понять принцип работы или найти уязвимости, а в последующем сделать изменение или воспроизвести устройство, программу или иной продукт с такими же функциями, но без прямого копирования.
Что делают реверс-инженеры и чем занимаются?
Обязанности на примере одной из вакансий:
- Поиск уязвимостей в ПО различных устройств;
- Реверс-инженеринг;
- Работа с фазером;
- Работа с дизассеблерами и отладчиками;
- Написание небольших программ и сценариев;
- Работа с firmware, загрузчиками, ПО и ядром Linux;
Что должен знать и уметь реверс-инженер?
Требования к реверс-инженерам:
- Знание типов уязвимостей в бинарном коде, причин их появления, способов обнаружения и эксплуатации;
- Опыт тестирования на проникновение и исследования уязвимостей ПО;
- Уверенное владение инструментами дизассемблирования и отладки (IDA Pro, WinDBG, etc.);
- Знание современных процессорных архитектур x86/64, ARM, PowerPС
- Уверенное понимание принципов работы ОС Linux;
- Уверенное знание языков программирования С/С++/Python;
- Понимание технологии фаззинга;