👋 Канал OTUS в Telegram!
Посты от приглашенных гостей из IT-тусовки, полезные статьи, подборки вакансий от партнеров ➞
Подробнее

Курсы

Программирование
Архитектор программного обеспечения
-40%
Архитектура и шаблоны проектирования
-40%
Fullstack разработчик JavaScript
-40%
MS SQL Server разработчик
-40%
Android-разработчик. Продвинутый курс
-40%
Android-разработчик. Базовый курс
-40%
Backend-разработка на Kotlin
-30%
Программист 1С
-30%
Symfony Framework
-30%
Разработчик на Spring Framework
-20%
Разработчик Golang
-25%
C# ASP.NET Core разработчик
-25%
iOS-разработчик. Базовый курс
-25%
VOIP инженер Базы данных Web-разработчик на Python Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик игр на Unity Vue.js разработчик Agile Project Manager в IT Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02
Проходил 20 июня 2019 года в 20:00

День открытых дверей
Всё о курсе «Реверс-инжиниринг»

День открытых дверей онлайн

День Открытых Дверей — отличная возможность узнать подробнее о программе курса, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. Также преподаватель расскажет о своём профессиональном опыте и ответит на вопросы участников. Поэтому если есть вопрос, запишитесь на онлайн-трансляцию и задайте его в прямом эфире!
Преподаватель
Артур Пакулов

Запись

О курсе

Реверс-инжиниринг
50 000 ₽ 40 000 ₽
4 месяца
Начало 31 августа

ЧТО ТАКОЕ РЕВЕРС-ИНЖИНИРИНГ? Реверс-инжиниринг кода (обратная разработка кода) - это процесс анализа машинного кода программы, который ставит своей целью понять принцип работы, восстановить алгоритм, обнаружить недокументированные возможности программы, и т.п. Цель курса. Профессионально сделанных курсов по обратной разработке на российском рынке (почти) нет. Наша цель - восполнить этот пробел и предложить курс, в рамках …

Программа курса
Модуль 1
Низкоуровневое программирование на ассемблер под x8086/x64
Модуль 2
Низкоуровневое программирование на ассемблер под MIPS
Модуль 3
Защищённый режим процессора
Модуль 4
Внутреннее устройство Windows
Модуль 5
Системное программирование
Модуль 6
Обратная разработка программ
Модуль 7
Проектная работа
Низкоуровневое программирование на ассемблер под x8086/x64
В данном модуле проходит экспресс курс изучения языка Ассемблер. Изучение необходимо для получения навыков чтения дизассемблерного кода в отладчике и дизассемблере. После изучения модуля, учащийся научится понимать во что превращается скомпилированная программа и почему она содержит именно такие данные.
Регистры процессора, работа с памятью
рассмотреть группу регистров, правила взаимодействия регистров между собой и памятью ПК;
рассмотреть «оборачивания» адресов;
установить нужное ПО.
31 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Установка софта. Необходимо установить следующий софт:
Emu 8086
FASM
x64Dbg
Ida Pro 7
Hiew
Far Manager
ConEmu
Представление данных, кода, опкоды команд
выучить базовые команды ЯА: пересылки данных, работа со стеком, переходы.
3 сентября, 20:00 — 21:30
Арифметические, логические команды
закрепить материал, выучить ещё команды.
7 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Решение Crackme. Необходимо разобрать алгоритм генерации серийника в Otus_Crackme_01.exe_ (FB42BFAD815A9563B9F6FDD362B47F70)
Итог - написать кейген
Цепочечные операции
работать со строками.
10 сентября, 20:00 — 21:30
Подпрограммы
проанализировать работу локальных переменных и аргументов внутри функции.
14 сентября, 20:00 — 21:30
Прерывания BIOS
перехватывать прерывания, читать и писать в сектора, в видеопамять, производить клавиатурный ввод-вывод.
17 сентября, 20:00 — 21:30
Написание кастомного MBR
проанализировать структуру MBR.
21 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Кастомный MBR. Написать свой кастомный загрузочный код от MBR, который при выполнеии будет требовать ввести пароль. В случае, если пароль верен, то ПК должен продолжить загрузки ОС так, как буд-то бы ничего и не было.
В противном случае зациклить запрос на введение пароля. Для простоты допускается использовать виртуальную дискету, с которой ПК будет грузиться первоначально. На проверку прислать код и сомпилированную дискету (ну и сам пароль). Пароль нужно хранить в виде CRC32 хеш суммы.

Низкоуровневое программирование на ассемблер под MIPS
В данном модуле мы изучаем архитектуру MIPS процессоры, чтобы понять принципиальные различия между двумя архитектурами.
Регистры процессора. Работа с памятью
познакомиться с процессором MIPS.
24 сентября, 20:00 — 21:30
Арифметические, логические команды. Команды условного/безусловного перехода
проанализировать основные команды под процессоры MIPS.
28 сентября, 20:00 — 21:30
Опкоды команд
рассмотреть syscallы эмулятора MARS.
1 октября, 20:00 — 21:30
Защищённый режим процессора
Важный модуль, без которого невозможно будет понять принцип работы руткитов. Модуль включает в себя фундаментальные принципы работы процессора.
Режимы работы процессоров. Принцип работы процессора в PM. Сегментная организация памяти
разобрать сегментную организацию памяти.
5 октября, 20:00 — 21:30
Страничная организация памяти
использовать принцип работы страничной организации памяти;
транслировать виртуальные адреса в физические.
8 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Защищенный режим. Написать программу, которая переводит процессор в защищённый режим.
Типы дескрипторов
работать с другими дескрипторам, в частности с call gate.
12 октября, 20:00 — 21:30
Внутреннее устройство Windows
Данный модуль включает в себя изучение строения OS Windows. Модуль обязателен для успешного анализа руткитов.
Настройка рабочей среды для отладки драйверов режима ядра
собрать и задебажить драйвер
Объекты ядра
проанализировать строение ОЯ.
15 октября, 20:00 — 21:30
Менеджер памяти
объяснить как выделять подкачиваемую и неподкачиваемую память.
19 октября, 20:00 — 21:30
Диспетчер ввода-вывода. Работа с памятью
объяснить как работает абстракция объектов ядра;
обрабатывать IRP пакеты.
22 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Билд драйвер. написать драйвер, который принимает на вход ID процесса
и завершает его.
Системное программирование
Модуль включает в себя информацию, которая необходима для анализа большинства вредоносных программ.
PE формат
проанализировать общую структуру PE формата.
26 октября, 20:00 — 21:30
Таблица импорта
вручную просматривать таблицу импорта.
проанализировать, каким образом программа понимает откуда брать тело функции.
29 октября, 20:00 — 21:30
Таблица экспорта/ Таблица релокаций
искать фиксапы, вручную парсить таблицу экспорта.
2 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Pe Loader. Реализовать простейший Pe Loader, который будет считывать с диска Pe (exe) из памяти и запускать его.
Pe файл брать тот, который выдаёт MessageBox и скомпилирован на FASMЕ.
Ловушки Windows
ставить хуки на оконные/клавиатурные события.
5 ноября, 20:00 — 21:30
Перехват WinApi функций
перехватывать API функции методом сплайсинга.
9 ноября, 20:00 — 21:30
Программирование Native приложений
выполнять код до входа пользователя в систему.
писать код, используя функционал только ntdll библиотеки.
12 ноября, 20:00 — 21:30
Способы добавления в автозагрузку
искать вредоносный софт.
16 ноября, 20:00 — 21:30
Программирование служб
написать свою тестовую службу;
управлять слуюжбами.
19 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Программирование службы. Службу нужно дописать так, чтобы на момент её загрузки она выполнила какие-то действия, к примеру записала в корень диска C файл serv.log с произвольной информацией.
Служба должна запуститься в контексте процесса svchost. Этот процесс нужно будет сдампить и прислать дамп. Помимо этого нужно прислать исходники и билд самой службы.

Настройка рабочей среды для отладки драйверов режима ядра
собрать и задебажить драйвер;
настраивать подходящую среду для отладки драйверов.
23 ноября, 20:00 — 21:30
Обратная разработка программ
Данный модуль посвящён практическим навыкам анализа программ.
Динамический анализ кода
производить ручную распаковку программ;
применять динамический анализ для определения общего функционала программы;
настроить безопасную среду.
26 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Настройка безопасной среды. Настроить безопасную среду на хостовой машине.
Статический анализ кода
определять формат файлов из HIEW, применять правильные утилиты для дизассемблирования или декомпилирования.
30 ноября, 20:00 — 21:30
Разработка shell кодов
проанализировать шелкоды.
3 декабря, 20:00 — 21:30
Metasploit
пробить тестовую программу и получить реверс шелл;
генерировать шелкоды.
7 декабря, 20:00 — 21:30
Внедрение реверс шела в некоторые прошивки роутеров
внедрить свой код в прошивку роутера.
10 декабря, 20:00 — 21:30
Уязвимость Buffer Overflow
проанализировать корень проблемы данного типа уязвимости.
14 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
Эксплойт. Превратить poc от BoF_Simple.cpp в эксплойт, запускающий удалённо калькулятор
Уязвимость UAF
разобрать причину уязвимости.
17 декабря, 20:00 — 21:30
Буткиты
проанализировать шаги, предпринимаемые буткитом во время его работы.
21 декабря, 20:00 — 21:30
Проектная работа
Вместе с участниками группы по ходу курса мы «разревёрсим» несколько реальных вредоносных программ, определим их функционал и в качестве выпускного проекта напишем программу для лечения.
Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
24 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
Проектная работа.
Консультация по проектам и домашним заданиям
получить ответы на вопросы по проекту, ДЗ и по курсу.
28 декабря, 20:00 — 21:30
Защита проектных работ
защитить проект и получить рекомендации экспертов.
31 декабря, 20:00 — 21:30
Подведение итогов курса
узнать, как получить сертификат об окончании курса, как взаимодействовать после окончания курса с OTUS и преподавателями, какие вакансии и позиции есть для выпускников (опционально - в России и за рубежом) и на какие компании стоит обратить внимание.
4 января, 20:00 — 21:30

Преподаватель

Артур Пакулов
Ex-вирусный аналитик в Kaspersky Lab.
Специалист в области низкоуровневого программирования, обратной разработки и анализа вредоносного программного обеспечения. В период 12.2015 - 05.2017 - специалист по образовательным программам и преподаватель Образовательного департамента “Лаборатории Касперского”. Преподаватель и методист-разработчик курсов и программ по направлениям: “Защита информации от вредоносного ПО”, “Низкоуровневое программирование”, “Профессиональный пентестинг”. Программы, разработанные Пакуловым, включены в учебные планы российских и зарубежных Университетов, в том числе МГТУ им. Н.Э. Баумана, МГУ им. М.В. Ломоносова. Преподаватель международных магистерских программ по информационной безопасности.

Навыки:

Низкоуровневое программирование,
Системное программирование,
Реверс-инжиниринг,
Анализ вредоносного ПО,
Веб-безопасность,
Программирование: Assembler, C/C++, Delphi, Python
Преподаватель курсов:
Реверс-инжиниринг

F.A.Q.: Наиболее часто задаваемые вопросы:

Нужно ли оплачивать обучение до Дня открытых дверей, если я хочу гарантированно попасть в группу?
Да, мы рекомендуем заранее оплатить обучение, чтобы гарантированно попасть в группу. В период проведения Дня открытых дверей резко возрастает количество желающих обучаться, поэтому может случиться так, что к окончанию Дня открытых дверей мест в группе не останется
Кто будет проводить День открытых дверей?
Проводить День открытых дверей будет преподаватель курса.
Как принять участие в Дне открытых дверей?
Для того, чтобы принять участие в Дне открытых дверей, оставьте свой e-mail в поле регистрации на мероприятие. Перед началом Дня открытых дверей мы пришлем вам ссылку, пройдя по которой, вы сможете присоединиться к вебинару.
Какие вопросы будем обсуждать на Дне открытых дверей?
На дне открытых дверей мы поговорим о проекте OTUS (о программе курса, почему мы не принимаем в группы новичков, почему учиться у нас интересно, но сложно), карьерных перспективах выпускников (почему вероятность карьерного роста у лучших студентов стремится к 100%), учебном процессе (оплатах, оценке знаний, сертификатах и прочих аспектах). Также ведущий мероприятия с радостью ответит на все ваши вопросы.