Чему вы научитесь
- Объяснять различия между Microsoft x64 calling convention и System V AMD64 ABI
- Работать с shadow space и правильно сохранять регистры при вызовах WinAPI
- Вызывать функции Windows API из ассемблера напрямую, без прослойки в виде C
- Читать и анализировать структуру PE-файла так же, как ранее читали ELF
- Работать с памятью процесса через VirtualAlloc, HeapAlloc и понимать разницу с brk/mmap
- Создавать и подключать DLL, экспортировать и импортировать символы
- Пользоваться WinDbg и dumpbin для отладки и анализа Windows-бинарников
- Писать код, который компилируется и работает без изменений и на Linux, и на Windows
О курсе
Курс о том, как ассемблерные знания, полученные на Linux, работают на Windows x64: другой ABI, другая модель системных вызовов, PE вместо ELF, DLL вместо .so. Финал курса — кроссплатформенный проект, который собирается под обе ОС из одного исходного кода.
Для кого этот курс
Тем, кто прошёл курсы «Ассемблер (NASM Linux x86-64)» уровня 1–3 и хочет закрыть картину целиком, узнав, как те же принципы работают на другой платформе
Тем, кто планирует заниматься системным программированием, reverse engineering или информационной безопасностью и должен одинаково уверенно читать код и под Linux, и под Windows
Разработчикам, которые пишут кроссплатформенные библиотеки и хотят понимать низкоуровневые различия платформ не понаслышке, а на уровне регистров и вызовов
Всем, кому интересно, почему один и тот же язык — ассемблер — выглядит и ведёт себя по-разному в зависимости от операционной системы
Начальные требования
- Уверенное владение материалом курсов «Ассемблер (NASM Linux x86-64)» — как минимум курсов 1 и 2 (базовый синтаксис, работа с памятью, функции, стек вызовов, системные вызовы, препроцессор)
- Понимание статической и динамической линковки (курс 2, раздел «Организация проектов»)
- Базовые навыки работы в командной строке; для этого курса дополнительно понадобится доступ к Windows (локально или через виртуальную машину).
Преподаватели курса
Как проходит обучение
Курс построен по тому же принципу, что и предыдущие: короткая теория и практические задания в каждом уроке. Каждая тема сопровождается прямым сравнением с тем, как аналогичная задача решалась на Linux — так проще увидеть не набор новых фактов, а систему различий. Ближе к концу курса задания усложняются и подводят к финальному мини-проекту, где нужно написать программу, работающую на обеих платформах.
Что вы получите
- Понимание того, как одна и та же архитектура (x86-64 / x64) по-разному используется в Linux и Windows
- Навык чтения WinAPI-документации и вызова системных функций Windows напрямую из ассемблера
- Умение анализировать PE-файлы и отлаживать программы в WinDbg
- Опыт создания собственной DLL и работы с динамической линковкой в Windows
- Готовый кроссплатформенный проект в портфолио, демонстрирующий понимание низкоуровневых различий между ОС
- Сертификат о прохождении курса