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