Адрес e-mail:

Основы реверс-инжиниринга и оптимизации программ на ARM

Кафедра информатики и вычислительной математики МФТИ

представляют 

программу курса повышения квалификации

«Основы реверс-инжиниринга и оптимизации программ на ARM» 




Краткие данные курса:


Категория слушателей: разработчики программных решений для устройств на архитектуре ARM.

Форма обучения: очная или дистанционная;

Режим обучения: три недели, 12 ак.часов в неделю, формат выходного дня или вечерний формат, лекции и практические занятия в аудитории или в вебинарной комнате, практика на личном компьютере или в компьютерном классе;

Объем учебной программы: 36 часов;

Документ об окончании обучения: удостоверение о повышении квалификации установленного образца;

Начало занятий: по мере комплектования учебных групп;

Стоимость обучения: 14 000 рублей.


Перейти к предварительной записи на курс






“...чтобы быть хорошим программистом, 
важно понимать, что в действительности происходит
“за кулисами” высокоуровневого языка программирования. 
Следует знать по крайней мере пару разных архитектур.”

Александр Степанов, создатель C++ STL

Reverse-engineeringARM1.png
В современном мире мобильной и специализированной разработки ПО, одновременно с развитием целевых платформ и архитектур, растут и требования к эффективности, производительности и безопасности приложений, что, несмотря на качественные оптимизации Java-машины и использование JIT-компиляции, мотивирует к использованию нативного кода, оптимизированного под конкретную целевую платформу. Знание платформы, на которой исполняется ПО, понимание его работы на низком уровне, существенно повышает квалификацию разработчика, следовательно, качество разработки и отладки. Также стремительно увеличивается количество кода, переиспользование которого может существенно упростить жизнь разработчикам кросс-платформенных программ. Умение качественно проанализировать программу, выделить платформо-зависимые части и провести необходимые оптимизации, построить взаимодействие между различными уровнями исполнения (между Java и нативным C/C++ кодом), оценить преимущества и недостатки комбинирования нативного и байт-кода в конкретной задаче - то, что отличает высококлассного и востребованного разработчика современных, производительных и эффективных приложений. 

 
Представляемый курс предлагает погрузиться в особенности работы и взаимодействия с нативным кодом, исполняемым на микропроцессорах архитектуры ARM профиля “A”. Данные микропроцессоры широко используются в мобильных устройствах и одноплатных компьютерах. Практическое знакомство с аспектами и особенностями ARM проводится на дизассемблировании и исследовании программ, затрагивающих особенности архитектуры на уровне инструкций. Технологии профилирования, оптимизирующей компиляции, отладки, объединения нативного и ненативного кода в рамках одного проекта демонстрируются в сочетании с комментариями по реализации той или иной функциональности, а также уровня развития и поддержки демонстрируемых технологий в отрасли на текущий момент.


Автор рекомендует данный курс разработчикам производительных/мультимедийных мобильных/встраиваемых/кросс-платформенных приложений, а также всем желающим разобраться в особенностях целевой платформы, инженерам встраиваемых систем, студентам технических специальностей.
 
Курс будет крайне полезен, если у Вас есть необходимость:
  • Понимать работу программ на низком уровне, писать более эффективный и безопасный код, задавать верные опции сборки
  • Разрабатывать и поддерживать критическую по производительности алгоритмическую часть Ваших проектов - компьютерное зрение, машинное обучение, криптографию, мультимедиа: видео, голос, графику, игры
  • Использовать написанный ранее код (OpenCV, MBedTLS, FFMPEG и др.), громоздкие сторонние библиотеки
  • Более эффективно использовать один и тот же код высокого уровня на различных платформах
  • Исследовать скомпилированные программы
  • Искать уязвимости в ПО
 
В результате освоения программы слушатель должен:
 
знать:
  • особенности микропроцессорной ARM-архитектуры 
  • особенности GCC в области компиляции, генерации кода, оптимизации и профилировки;
  • специальные приемы отладки и дизассемблирования в gdb;
  • приёмы дизассемблирования ;
  • специфику вызова нативного кода из JVM и наоборот;
  • паттерны генерации машинного кода из исходного в GCC на ARM, отличия и функционально-эквивалентные участки на ARM и x86.
 
уметь:
  • работать с GCC, GDB, Binutils objdump, Gradle, Android NDK, Android Studio;
  • правильно применять оптимизационные флаги gcc, осуществлять профилировку программы;
  • итеративно отлаживаться на основе дизассемблерных листингов в gdb;
  • дизассемблировать ELF, исполняемые файлы;
  • осуществлять написание нативного кода для использования из Android-приложений;
  • понимать соответствие отдельных участков кода на Си и на Ассемблере.

Структура программы:


Наименование модулей

Объем, ак.часов

Из них - аудиторных

1

Обзор ARM-архитектуры микропроцессора и инструментов исследования программ

12

8

2

Особенности вычислений на ARM

10

6

3

Некоторые оптимизации и профилирование программ, использование кода

6

4

4

Подготовка к аттестации, аттестация

8

1

 

Итого

36

19


Итоговая аттестация проводится в форме контеста. 

По итогам обучения выдается удостоверение о повышении квалификации установленного образца.


Перейти к предварительной записи на курс

Если вы заметили в тексте ошибку, выделите её и нажмите Ctrl+Enter.

МФТИ в социальных сетях

soc-vk soc-fb soc-tw soc-li soc-li soc-yt
Яндекс.Метрика