Results 1 to 1 of 1

Thread: Курс молодого исследователя (по мотивам "The Binary Auditor". Перевод: ARCHANGEL)

  1. #1
    root's Avatar

    Default Курс молодого исследователя (по мотивам "The Binary Auditor". Перевод: ARCHANGEL)


    С++ - широко применяемый в индустрии программирования язык, который на сегодня остаётся одним из самых популярных среди всех, когда-либо созданных. Его сферой применения является системное программирование, написание прикладных программ, драйверов устройств, программ-прошивок, высокопроизводительных серверных и клиентских программ, развлекательных программ (видеоигр) и т.д. Этот модуль включает 32 упражнения и 4 теста.


    Языки ассемблера представляют собой семейство низкоуровневых языков программирования компьютеров, микропроцессоров, микроконтроллеров и других (в основном) интегрированных устройств. Они осуществляют символьное представление числовых машинных кодов и других констант, требуемых для программирования определённой архитектуры центрального процессора. Это представление обычно определяется производителем аппаратного обеспечения. В его основе лежат сокращения (именуемые мнемоникой), которые помогают программисту запомнить конкретную инструкцию, регистр и т.д. Таким образом, язык ассемблера специфичен для каждой определённой архитектуры физического или виртуального компьютера (в отличие от большинства высокоуровневых языков программирования, которые отлично портируются). Этот модуль включает 17 упражнений и три теста.

    Анализ модулей, написанных на языках высокого уровня
    (HLL – High Level Language)

    Здесь мы сосредоточимся на упражнениях, связанных с анализом модулей, которые были написаны с применением высокоуровневых языков программирования. В этом модуле мы научимся идентифицировать специфические для высокоуровневых языков структуры данных и узнаем, как они выглядят на языке ассемблера в дизассемблере/отладчике. Модуль включает 96 упражнений.
    • Содержание: идентификация переменных, идентификация констант, операторы присваивания, арифметические операторы, модульная арифметика, сложные выражения, инкремент и декремент, реляционные операторы и операторы равенства, логические операторы, условные операторы, оператор «запятая», поразрядные операции, явное преобразование операторов, sizeof, очерёдность выполнения операторов, условная конструкция if … else, цикл while, цикл do-while, цикл for, выражение break, выражение continue, выражение goto, функция exit, структура выбора switch, локальные переменные, глобальные переменные, регистровые переменные, явная передача глобальных переменных, передача аргументов через регистры, передача аргументов с плавающей точкой в функцию, передача аргументов по значению, передача аргументов по ссылке, значения по умолчанию в качестве параметров, перегруженные функции, встроенные функции, вызов функции через указатель, инициализация массивов, доступ к элементам массива, многомерные массивы, массивы как параметры, последовательности символов, использование последовательностей символов с завершающим нулём, оператор ссылки, оператор разыменовывания, объявление типизированных указателей, указатели и массивы, инициализация указателей, арифметика указателей, указатели на указатели, указатели типа void, нулевые указатели, указатели на функции, оператор new, оператор delete, структуры, массивы структур, указатели на структуры, вложенные структуры, typedef, typedef2, объединения, множества, классы, конструктор, деструктор, перегруженные конструкторы, конструктор по умолчанию, указатели на классы, перегрузка операторов, указатель this, статические члены класса, дружественные функции, дружественные классы, наследование между классами, наследование, множественное наследование, указатели на базовый класс, виртуальные члены, абстрактные базовые классы, шаблоны функций, шаблоны классов, объявление шаблона, нетипизированные параметры шаблона, исключения, стандартные исключения, исключения выделения памяти, преобразования типов.


    Не всегда необходимо использовать специализированные утилиты для анализа кода. В большинстве случаев, всё, что вам нужно – это ваши мозги. Упражнения по ручной декомпиляции позволят выработать навыки по чтению и пониманию кода. Для повышения ваших навыков мы будем использовать методы Cognitive Debugging™. Вашей задачей будет анализ приведенных примеров и переписывание их на С++. Этот модуль включает 9 упражнений.

    Формат исполняемых файлов

    Одного лишь анализа кода недостаточно. Вы должны хорошо понимать, как устроены двоичные файлы, и как они используют ресурсы операционной системы. В этом модуле вы изучите внутреннюю работу двоичных файлов, их структуру и ещё много информации, связанной с ними. Данный модуль содержит 31 упражнение.

    Анализ алгоритмов

    Упражнения этого модуля научат вас понимать алгоритмы, располагающиеся внутри двоичных файлов. Задания данного модуля не содержат обфускации или шифрования, в них есть лишь немного математики. Целью этого модуля является понимание математических процессов, протекающих внутри исполняемого файла. Обычно эти процессы являются общими для многих участков программы. Этот модуль включает 9 упражнений.

    Анализ сбоев

    Не все программы спроектированы хорошо. В некоторых случаях они могут завершиться аварийно без каких-либо уведомлений, и вам нужно будет выяснить, почему это произошло. В ходе этого модуля вы узнаете, как локализовать место аварии и научитесь более эффективно это делать. Этот модуль включает 5 упражнений.

    Анализ защиты от копирования

    Одним из заданий данного курса является исследование защит от копирования. Это может быть достаточно трудным делом, поскольку вы должны понимать задачу также хорошо, как и защита. Так как исследование защиты от копирования приближено к исследованию стопроцентного «чёрного ящика», этот модуль даёт вам первое представление о том, как самому выполнять тесты механизмов, построенных по такому принципу. Основной упор в данном модуле сделан на анализ алгоритмов. Но, кроме того, вы узнаете, как самому разработать защиту от копирования. Этот модуль будет содержать (когда будет укомплектован до конца) 50 упражнений.
    • Необходимое программное обеспечение: IDA Pro 4.9 (Free Edition)
    • Рекомендуется к прочтению: нет рекомендаций по данному модулю.
    • Содержание: 01 – Patching a basic reverseme, 02 – Keyfiling a basic reverseme, 03 – Basic nag removal and header problems, 04 – File Format Exercise, 05 – Splish 1, 06 – Splish 2, 07 – Fixme, 08 – Google, 09 – Capture, 09.1 – CHALLENGE, 10 – Confuzed, 11 – Calc, 12 – Little Math, 13 – emesrever, 14 – FunnyKeyReg, 15 – Old Days, 16 – Easy Crackme Game, 17 – SecView, 18 – ImportExport, 19 – Harder Serial in VB, 20.1 – Exportme, 20.2 – Consolences, 21 – XORcise, 22 – Fsearch, 23 – Jumpy, 24 – mmfmaker, 25 – String, 26 – MakeMyDay, 27 – Anit, 28 – TheFlea, 29 – Kryptonite, 30 – EasyCrack, 31 – UnlockMe, 32 – Mad Bad Boy, 33 – Serial Killer, 34 – CronosHardCrackme, 35.1 – SmartCard, 35.2 – Flames, 36 – ProofMe, 37 – SETI, 38 – ChainFission, 39 – XorSehRE, 40 – PHP, 41 – flyAkite, 42 – DanceForMe, 43 – TheBug, 44 – Mission Impossible, 45 – ReversersStegoFriend, 46 – Limbada, 47 – LogonGenetic

    Анализ зловредного ПО

    Анализ зловредного ПО важен для каждого исследователя двоичного кода. Мы начнём с нескольких маленьких .com/.exe вирусов, а закончим достаточно сложными и защищёнными вредоносными программами, среди которых будут черви, боты и руткиты. Этот модуль содержит 15 упражнений.

    Анализ уязвимостей

    Важной работой для исследователя бинарников является анализ безопасности. В этом модуле мы разберёмся с многочисленными уязвимостями и узнаем, что такое эксплоиты и шеллкоды. Модуль включает 39 упражнений.

    Распаковка

    Важно уметь распаковывать программы, особенно если вы хотите научиться справляться с вредоносными программами или защитами от копирования. В этом модуле вы узнаете, что из себя представляет распаковка, познакомившись с её теоретическими основами и простыми примерами.
    • Необходимое программное обеспечение: IDA Pro 4.9 (Free Edition)
    • Рекомендуется к прочтению: нет рекомендаций по данному модулю.

    Оптимизация С++

    Данный модуль посвящён оптимизации программ, написанных на С++, и, в первую очередь, будет полезен продвинутым программистам, использующим этот язык программирования. Будут рассмотрены: выбор компилятора и среды разработки, поиск «узких» мест в алгоритмах, эффективность различных конструкций языка С++, многоядерные системы, распараллеливание и векторная оптимизация, процессорная диспетчеризация, эффективные шаблоны контейнеров классов. Модуль включает 20 упражнений.

    Оптимизация на ассемблере

    Данный модуль будет интересен профессиональным программистам-ассемблерщикам и разработчикам компиляторов. Обсуждаемые темы: ассемблерные вставки и ассемблирование отдельных модулей. Линковка оптимизированных ассемблерных процедур с программами, написанными на языке высокого уровня. Изготовление библиотек подпрограмм, совместимых с различными компиляторами и операционными системами. Оптимизация по скорости и размеру. Доступ к памяти. Циклы. Векторное программирование (XMM, SIMD). Процессорно-зависимая оптимизация и процессорная диспетчеризация.

    Расширение функциональности IDA Pro с помощью скриптов и плагинов

    IDA Pro объединяет в себе интерактивный, программируемый, мультипроцессорный дизассемблер и отладчик, позволяющий отлаживать программы как на локальной, так и на удалённой машинах. Более того – функциональность этого программного продукта может быть расширена с помощью среды разработки плагинов. Также IDA Pro содержит законченную среду разработки, состоящую из мощного макросоподобного языка программирования. Этот язык может использоваться для автоматизации повторяющихся задач низкого и среднего уровня сложности. Для более сложных задач можно использовать открытую архитектуру плагинов, практически ничем не ограничивающую деятельность стороннего разработчика. Модуль содержит 10 упражнений.
    Успех – это путь от провала до провала без потери энтузиазма. (В. Черчиль)

    Не бойся идти медленно, бойся остановиться. (Китайская пословица)

    When you lose fun and start doing things only for the payback, you're dead. (c) TCLH (Phrack 65, Intro)

  2. 2 пользователя(ей) сказали cпасибо:
    hexum (19-05-2011) ximera (19-12-2012)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
All times are GMT. The time now is 01:38
vBulletin® Copyright ©2000 - 2018
www.reverse4you.org