Доступно

Приключения языка ассемблера: полный курс. Выучите язык своего компьютера [2020] [Udemy] [xor pd]

Тема в разделе "Курсы по программированию", создана пользователем Toxich, 23 дек 2020.

Цена: 4151р.
Взнос: 400р.
68%

Основной список: 15 участников

Резервный список: 2 участников

Статус обсуждения:
Комментирование ограничено.
  1. 23 дек 2020
    #1
    Toxich
    Toxich ЧКЧлен клуба
    Приключения языка ассемблера: полный курс. Выучите язык своего компьютера [2020]
    Assembly Language Adventures: Complete Course. Learn the language of your computer [2020]
    Udemy
    xor pd


    Изучить язык ассемблера.
    Серия x86 Adventures обучает вас языку вашего компьютера - ассемблеру x86, с нуля. Никаких предварительных знаний не предполагается.

    Это полный сборник x86 Assembly Adventures. Он охватывает все, от реальных основ до независимого (и жесткого) программиста на ассемблере x86.

    1. Абсолютные новички
    2. Опытные программисты
    3. Люди, которые действительно хотят знать, как все работает
    4. Программисты, которые хотят улучшить свои навыки
    5. Программисты, которые хотят писать более быстрый код
    6. Всем, кто хочет заняться реверс-инжинирингом или индустрией безопасности
    Курс состоит из видеолекций. Лекция может быть основана на презентации или на примере из реальной жизни, показывающем, как я что-то делаю за компьютером. Практически каждая видеолекция сопровождается каким-либо упражнением. Эти упражнения имеют открытый исходный код, и вы можете получить их на github.

    Очень важно, чтобы вы выполняли упражнения. Вы многому научитесь из лекций, но если вы не будете выполнять упражнения, это будет пустой тратой вашего времени и денег. (Или хотя бы убедитесь, что вы умеете их делать, если у вас больше опыта).

    Технологический стек курса
    В этом курсе не предполагается никаких предварительных знаний, но я предполагаю некоторые вещи, касающиеся вашей системы, поэтому убедитесь, что все здесь описывает вас:
    • Вы используете операционную систему Windows. (В видеороликах курса используется Windows 7). Рекомендуется использовать как минимум Windows XP. (Это означает, что он будет отлично работать в Windows 7 и Windows 10).
    • У вас процессор x86. Мы изучаем 32-битный x86, но этот курс также будет работать на 64-битных процессорах.
    Для технических специалистов, еще несколько подробностей об инструментах, которые мы собираемся использовать в этом курсе:
    • Вариант сборки: 32-битный защищенный режим x86.
    • Ассемблер: плоский ассемблер (FASM)
    • Отладчик: WinDbg.
    Используете Linux ? Большинство упражнений было перенесено на Linux, однако в видео показано, как я использую Windows 7. Если вы не уверены, свяжитесь со мной.
    Раздел 1 - Вступление
    1.1 Об этом курсе
    Общая информация о курсе: список основных предметов, которые будут рассмотрены в ходе этого курса, некоторые технические детали и некоторые требования к курсу.​
    1.2 Инструменты - Проводник
    Объяснение проводника файлов - программы, которую мы используем для просмотра файлов на нашем компьютере. Мы также обсуждаем Total Commander, который я собираюсь использовать на этом курсе.​
    1.3 Инструменты Hex Editor
    Объяснение Hex Editor - программы, которая позволяет нам просматривать внутреннюю структуру файлов внутри нашего компьютера. В частности, мы обсуждаем HxD Hex Editor.​
    1.4 Инструменты - Текстовый редактор
    Мы обсуждаем текстовые редакторы - программы, которые используются для просмотра и редактирования текстовых файлов на нашем компьютере. Мы представляем блокнот, блокнот ++ и немного vim.
    Раздел 2 - Двоичная система счисления
    2.1 Сложение и вычитание
    Мы обсуждаем идею числовых оснований, и, в частности, рассмотрим основание 10 и основание 2. Наконец, у нас есть несколько примеров сложения и вычитания в базе 2.​
    2.2 Базовое преобразование (часть 1)
    Мы представляем три способа преобразования чисел между различными числовыми представлениями: прямое вычисление, определение наибольшей степени и вычисление остатка.​
    2.3 Базовое преобразование (часть 2)
    Мы обсудим, как решить, какой метод преобразования использовать в разных случаях, а также покажем несколько примеров преобразования чисел между разными основаниями.​
    2.4 Шестнадцатеричное преобразование
    Мы обсуждаем шестнадцатеричное основание (основание 16) и показываем его особое отношение к основанию 2.​
    2.5 Шестнадцатеричное преобразование (бонус)
    Мы отвечаем на вопрос: почему каждая шестнадцатеричная цифра представлена ровно 4 двоичными цифрами?​
    2.6 Подписанные номера (часть 1)
    Мы обсуждаем операцию вычитания, а также отрицательные числа в представлении с основанием 10. Мы изучаем, как вызвать вычитание, используя только операцию сложения.​
    2.7 Подписанные номера (часть 2)
    Мы вводим представление дополнения до двух, которое позволяет нам иметь дело со знаковыми числами в базе 2, так же, как мы делали это ранее в базе 10.​
    2.8 Подписанные номера (часть 3)
    Мы рассмотрим примеры сложения со знаком, мы имеем дело с некоторыми исключениями, касающимися представления двух дополнений, затем мы рассмотрим графическое представление
    положительных и отрицательных чисел в двух дополнениях и, наконец, обсудим некоторую философию представления.
    Раздел 3 - Архитектура x86
    3.1 Основы истории
    Базовая история архитектуры x86: первые процессоры в семействе, идея обратной совместимости в архитектуре x86 и различные режимы внутри процессоров x86.​
    3.2 Базовая структура
    Мы объясняем, как программы хранятся в памяти и как они выполняются процессором. Далее мы изучаем 32-битные регистры x86.​
    3.3 Первые инструкции (часть 1)
    Мы узнаем об общей структуре инструкций x86 и обсуждаем инструкцию MOV.​
    3.4 Первые инструкции (часть 2)
    Мы представляем инструкции ADD и SUB.​
    3.5 Основы арифметики (часть 1)
    Мы представляем инструкции INC, DEC и MUL.​
    3.6 Основы арифметики (часть 2)
    Мы представляем инструкцию DIV.​
    3.7 Основы арифметики (часть 3)
    Мы показываем примеры исключений, сгенерированных с помощью инструкции DIV.​
    3.8 Основы арифметики (часть 4)
    Мы рассмотрим несколько примеров использования инструкции DIV (с числовыми примерами). Наконец, мы подводим итоги серии уроков по базовой арифметике.
    Раздел 4 - введение в FASM
    4.1 fasm intro
    Представляем FASM - Flat Assembler.
    Мы обсуждаем несколько различных распространенных ассемблеров и, наконец, описываем FASM и несколько разных причин для использования FASM. Мы закончим кратким описанием того, как установить FASM. Мы подробно остановимся на этом в следующих уроках.​
    4.2 установка fasm
    Установка Fasm. Мы заглянем на веб-сайт Fasm и объясним, как загрузить и установить Fasm.​
    4.3 Первые программы - голые
    Собираем нашу первую программу - bare.asm и просматриваем сгенерированный файл в шестнадцатеричном редакторе.​
    4.4 Первые программы - консоль (часть 1)
    Мы посмотрим на программу console.asm, которая является нашей первой консольной программой. Обсуждаем исходный код console.asm​
    4.5 Первые программы - консоль (часть 2)
    Мы пытаемся собрать программу console.asm, и нам нужно исправить переменную окружения INCLUDE, чтобы это произошло. Наконец-то нам удалось собрать и запустить программу. Затем мы анализируем выходной файл с помощью шестнадцатеричного редактора.​
    4.6 Первые программы - первая программа (Часть 1)
    Мы представляем first_program.asm. Это наша первая программа, у которой есть ввод и вывод. Мы смотрим на исходный код и сравниваем его с console.asm, предыдущей программой. Позже попробуем собрать программу. Для этой задачи мы должны обновить переменную среды INCLUDE. Наконец, мы запускаем программу и анализируем вывод программы.​
    4.7 Первые программы - первая программа (Часть 2)
    Создаем собственную программу, основанную на first_program.asm. Наша программа считывает два числа от пользователя, складывает эти два числа и затем выводит результат обратно на консоль.​
    4.8 Основные ошибки сборки (часть 1)
    Мы представляем различные примеры ошибок времени сборки и способы их устранения.
    Начнем с ошибки записи.​
    4.9 Основные ошибки сборки (часть 2)
    Мы представляем больше примеров ошибок времени сборки и способы их устранения: ошибка файла не найдена, ошибка неопределенного символа, ошибка недопустимой инструкции, ошибка размера не соответствует, ошибка другого неопределенного символа и, наконец, ошибка недопустимого операнда.
    Раздел 5 - Разветвления
    5.1 Введение в ветвление (часть 1)
    Мы представляем идею ветвления: выполнение нашей программы нелинейным
    образом. Затем мы обсуждаем регистр EIP.​
    5.2 Введение в ветвление (часть 2)
    Мы представляем инструкцию JMP, обсуждаем метки и рассматриваем простой
    пример использования инструкции JMP.​
    5.3 Примеры JMP
    Мы рассмотрим два примера с использованием инструкции JMP: бесконечный цикл и пример пропуска инструкций с использованием инструкции JMP.​
    5.4 Регистр флагов (часть 1)
    Мы представляем регистр флагов и обсуждаем нулевой флаг.​
    5.5 Регистр флагов (часть 2)
    Мы обсуждаем флаг Sign и флаг Carry. Затем мы рассмотрим несколько примеров флага переноски.​
    5.6 Регистр флагов (часть 3)
    Мы обсуждаем флаг переполнения и рассмотрим различные примеры, касающиеся флага переполнения.​
    5.7 Регистр флагов (часть 4)
    Мы сравниваем поведение флагов Overflow и Carry. Мы также рассматриваем различные способы использования флага переполнения и флага переноса для чисел со знаком и без знака .​
    5.8 Базовое условное ветвление
    Мы описываем идею условного перехода и видим несколько примеров использования инструкций условного перехода JZ и JNZ. Затем мы кратко упомянем некоторые другие инструкции условного перехода.​
    5.9 Более условное ветвление (часть 1)
    Мы представляем инструкцию CMP и идею сравнения чисел. Затем мы обсуждаем сравнение без знака и со знаком и вводим специальные инструкции для сравнения без знака и со знаком.​
    5.10 Более условное ветвление (часть 2)
    Мы описываем сравнение со знаком более подробно и добавляем небольшое примечание о написании читаемого кода со специализированными инструкциями перехода.​
    5.11 Структурированное ветвление (часть 1)
    Мы знакомим с идеей структурированного ветвления и его преимуществами для написания хорошего кода. Затем мы обсудим схему условного исполнения.​
    5.12 Структурированное ветвление (часть 2)
    Обсуждаем выкройку петель и отрыв от петель.​
    5.13 Структурированное ветвление (часть 3)
    Мы вводим некоторые практические правила ветвления. Затем мы показываем пример упрощения кода спагетти с использованием идеи структурированного ветвления.
    Раздел 6 - Подписанные операции
    6.1 Подписанные операции (часть 1)
    Мы узнаем об инструкции NEG и обсуждаем концепцию расширения знака . Мы вводим инструкции MOVZX и MOVSX.​
    6.2 Подписанные операции (часть 2)
    Мы обсуждаем различия между инструкциями MOVZX и MOVSX. Затем изучаем инструкции CBW, CWDE, CWD, CDQ.​
    6.3 Подписанные операции (часть 3)
    Мы представляем инструкции IMUL и IDIV, подписанные версии инструкций MUL и DIV. Мы объясняем, как они работают, и, наконец, показываем пример использования этих инструкций.
    Раздел 7 - Побитовые операции
    7.1 Введение в булеву алгебру (часть 1)
    Мы представляем идею основных операторов и основных операторов НЕ, И и ИЛИ.​
    7.2 Введение в булеву алгебру (часть 2)
    Мы обсуждаем таблицы истинности и диаграммы Венна основных операторов (НЕ, И,
    ИЛИ). Затем мы рассмотрим несколько примеров с использованием основных операторов.​
    7.3 Введение в булеву алгебру (часть 3)
    Основные свойства операторов НЕ, И и ИЛИ: двойное отрицание, законы коммутативности, ассоциативные законы, законы распределения. Наконец, мы показываем пример использования диаграммы Венна для проверки истинности уравнения.​
    7.4 Введение в булеву алгебру (часть 4)
    Мы вводим законы Де Моргана, а затем приводим несколько примеров упрощающих утверждений. Затем мы обсудим оператор XOR. Наконец, упоминаются дальнейшие объекты исследования.​
    7.5 Побитовые инструкции (часть 1)
    Мы вводим инструкции NOT, AND, OR и XOR. Затем мы обсудим битовый сдвиг с использованием инструкций SHL и SHR.​
    7.6 Побитовые инструкции (часть 2)
    Мы обсуждаем арифметический сдвиг (сдвиг, который понимает знак), используя инструкции SAL и SAR. Наконец, мы представляем инструкции ROL и ROR, используемые для вращения битов.​
    7.7 Практические битовые игры
    Мы изучаем некоторые базовые методы манипулирования битами: извлечение одного определенного бита из числа, подсчет количества единиц в двоичном числе, вычисление степеней двойки по модулю с использованием битовых операций и, наконец, сжатие нескольких небольших чисел в один и тот же контейнер.
    Раздел 8 - объем памяти
    8.1 Введение в память (часть 1)
    Сначала мы обсудим причины, по которым нам нужно больше данных в наших программах. Затем мы описываем базовую модель памяти компьютера и обсуждаем устройства памяти, которые находятся вне процессора.​
    8.2 Введение в память (часть 2)
    Мы обсуждаем механизмы абстракции памяти, поддерживаемые процессором x86. Мы упоминаем сегментацию и разбиение на страницы и показываем несколько иллюстраций механизма разбиения на страницы.​
    8.3 Примеры памяти - обратное (Часть 1)
    Мы представляем программу reverse.asm, которая использует память (RAM) для переворота списка чисел. Запускаем программу и анализируем исходный код.​
    8.4 Примеры запоминания - обратная сторона (часть 2)
    Анализируем внутреннюю структуру выходного исполняемого файла reverse.asm с помощью шестнадцатеричного редактора.
    Затем мы продолжаем с reverse_constant.asm, который улучшает reverse.asm с помощью константы.​
    8.5 Примеры памяти - get_addr
    Мы представляем программу get_addr.asm, которая демонстрирует значение меток и возможный синтаксис при использовании меток.​
    8.6 Примеры памяти - повреждены
    Программа коррумпированный.asm демонстрирует, что происходит, когда мы пытаемся получить доступ к памяти, которой мы не владеем. fix_corrupt.asm демонстрирует, как исправить коррумпированный.asm, и, наконец, fix_corrupt_small.asm использует раздел bss, чтобы получить гораздо более эффективное решение.​
    8.7 Определение данных
    Мы обсуждаем различные способы определения данных и проверяем вывод каждого определения данных. Мы узнаем о байтах, словах, двойных словах, массивах и немного более сложных определениях данных.​
    8.8 Разделы данных
    Мы вводим разделы PE и показываем пример программы, которая содержит разные разделы: текст, данные, bss и idata. Наконец, мы проверяем полученный исполняемый файл с помощью шестнадцатеричного редактора.​
    8.9 Основные инструкции памяти
    Мы покажем, как получить доступ к памяти с помощью инструкций по сборке. В этой лекции мы изучаем, как правильно подсчитывать адреса, как хранить двойное слово в памяти (Endianity), расширенную адресацию с использованием синтаксиса скобок и некоторые ограничения при доступе к памяти в архитектуре x86.​
    8.10 th
    Представляем инструкцию LEA. Мы обсудим синтаксис этой инструкции, а затем покажем несколько примеров использования инструкции LEA.​
    8.11 Структуры (Часть 1)
    Мы объясняем необходимость способа организации наших данных и предлагаем синтаксис структуры в качестве решения. Затем мы обсудим различные способы определения и объявления структур.​
    8.12 Структуры (Часть 2)
    Мы показываем различные примеры использования структур, а затем обсуждаем возможность вложенных структур.​
    8.13 Структуры (Часть 3)
    Мы обсуждаем объединения, и мы рассматриваем пример использования объединений (пример объединения IPV4).​
    8.14 Идеи памяти (часть 1)
    Мы рассмотрим несколько примеров конструкций памяти: массив структур и двумерная таблица. Мы уделяем особое внимание методам хранения этих конструкций в линейной памяти нашей программы.​
    8.15 Идеи памяти (часть 2)
    Мы показываем пример сохранения таблицы умножения в двумерный массив. Затем мы обсуждаем возможность хранения массивов более высокой размерности в памяти программы.​
    8.16 Идеи памяти (часть 3)
    Мы обсуждаем конструкцию памяти двоичного дерева и показываем пример представления двоичного дерева в памяти.​
    8.17 Правила обращения
    Мы опишем несколько практических правил относительно адресной арифметики. Эти правила помогают различать адреса и смещения.
    Раздел 9 - Потоки
    9.2 ASCII
    Мы вводим стандарт ASCII для кодирования текста в виде чисел внутри компьютера. Мы также упоминаем стандарт Unicode.​
    9.2 Карта персонажей
    Мы представляем программу Windows Character Map, которая представляет собой инструмент для просмотра различных символов и соответствующих им кодов ASCII или Unicode.​
    9.3 Строковое представление
    В этом видео мы объясняем, как представлять текстовые строки в наших собственных программах сборки. Мы также представляем две школы строк: префикс длины и строки с завершающим нулем.​
    9.4 Пример UTF8
    Мы показываем пример использования символов Unicode в программе сборки Fasm. В этом примере мы хотим сохранить в памяти два китайских символа. В конце концов мы собираем программу и просматриваем выходной файл в шестнадцатеричном редакторе.​
    9.5 Инструкции на первой струне (часть 1)
    Мы представляем инструкцию STOS и показываем простой пример использования этой инструкции. Затем мы обсуждаем флаг направления и его значение.​
    9.6 Инструкции на первой струне (часть 2)
    Мы представляем инструкции LODS, MOVS и показываем простые примеры использования обеих этих инструкций.​
    9.7 Префиксы REP (Часть 1)
    Мы вводим префикс REP и используем его вместе с STOSB для очистки массива. Далее мы представляем инструкцию SCAS. Наконец, мы вводим префикс REPNZ и используем его вместе с инструкцией SCAS для поиска нулевого терминатора строки.​
    9.8 Префиксы REP (Часть 2)
    Обсуждаем префиксы REPZ и REPNZ. Затем мы представляем инструкцию CMPS и показываем пример использования CMPS с префиксом REPZ для проверки равенства двух буферов памяти.
    Раздел 10 - Подпрограммы и стек
    10.1 Подпрограммы Введение
    Подпрограммы - это независимые части кода. Мы объясняем необходимость подпрограмм, а затем попытаемся создать наши собственные подпрограммы, используя простую инструкцию JMP. Эта первая попытка не так успешна, но она подготавливает нас к более продвинутой идее реализации подпрограмм, которую мы увидим в следующих уроках.​
    10.2 Стек
    Изучаем структуру данных Stack. Затем изучаем реализацию стека x86 и инструкции (PUSH и POP). В конце концов мы видим несколько простых примеров использования стека.​
    10.3 Звонок и возвращение (часть 1)
    Мы показываем пример использования команд CALL и RET для реализации подпрограммы. Затем подробно изучаем ЗВОНОК и RET.​
    10.4 Звонок и возвращение (часть 2)
    Мы видим несколько примеров использования инструкций CALL и RET. Затем мы объясняем значение стека в отношении вызовов функций.​
    10.5 Соглашения о вызовах (часть 1)
    Мы исследуем различные методы взаимодействия с подпрограммами: регистры, глобальные данные и стек.​
    10.6 Соглашения о вызовах (часть 2)
    Мы обсуждаем идею соглашений о вызовах. Затем мы представляем соглашения о вызовах CDECL и STDCALL и сравниваем их.​
    10.7 Местное государство (Часть 1)
    Мы представляем регистр EBP и объясняем, как использовать его для хранения кадра стека в наших функциях. Затем мы обсудим локальные переменные и то, как использовать стек для хранения локальных переменных для текущей функции.​
    10.8 Местное государство (Часть 2)
    Мы представляем идею стека вызовов, а затем изучаем инструкции ENTER и LEAVE, которые являются ярлыками для создания и уничтожения кадра стека функции.
    Раздел 11 - Руководства
    11.1 Скачивание руководств
    Мы покажем, как получить руководства по набору инструкций Intel и AMD.​
    11.2 Руководство Intel (часть 1)
    Мы смотрим на руководство Intel Instruction Set и объясняем, как его использовать.​
    11.3 Руководство Intel (часть 2)
    Мы узнаем, как читать информацию о конкретных инструкциях в руководстве Intel Instruction Set. В частности, мы изучаем инструкцию ADD и инструкцию ADC.​
    11.4 AMD Руководство
    Мы ознакомимся с руководствами AMD Instruction Set и узнаем, как их использовать. Затем мы взглянем на инструкцию ADD, как описано в руководстве AMD Instruction Set.​
    11.5 Последние комментарии
    Некоторые комментарии относительно различий в руководствах Intel и AMD. Также несколько комментариев о важности уметь читать руководства, и о важности время от времени проверять руководства.
    Раздел 12 - Отладка
    12.1 Первый пример
    Мы показываем простой пример отладки программы сборки. Мы используем WinDbg для отладки программы mem_count.asm. Мы очень кратко увидим, как использовать точки останова, пошагово выполнять код и читать память программы. Все эти шаги будут подробно объяснены в следующих уроках. Это просто демонстрация того, что возможно с помощью отладчика.​
    12.2 Введение в отладчик
    Мы объясняем в общем, что такое отладчик. В этом уроке мы отвечаем на вопросы: что такое отладчик? Зачем нужен отладчик? Мы также описываем несколько механизмов, используемых современными отладчиками.​
    12.3 WinDbg Intro
    Мы представляем отладчик WinDbg. Мы кратко обсуждаем возможности отладчика WinDbg, объясняем интерфейс отладчика и упоминаем о существовании меню справки WinDbg.​
    12.4 Установка WinDbg
    В этом уроке мы загружаем и устанавливаем WinDbg. Это делается путем установки пакета SDK для Windows 8.1 и выбора только инструментов отладки.​
    12.5 Примеры - базовое управление
    Мы демонстрируем базовое управление с помощью WinDbg: загрузка исполняемых файлов, использование окна дизассемблирования, перезапуск программы, присоединение к программе, использование команды g, пошаговое выполнение, использование команды bp $ exentry.​
    12.6 Примеры - Состояние - Основы (Часть 1)
    Мы просматриваем программу Increaser.asm и проверяем ее исходный код. Мы открываем эту программу с помощью WinDbg и демонстрируем основные команды для обработки состояния целевой программы во время ее приостановки. Мы начинаем с команды r, используемой для проверки или изменения содержимого регистров.​
    12.7 Примеры - Состояние - Основы (Часть 2)
    Мы показываем больше команд для обработки состояния целевой программы, пока она приостановлена. Мы представляем команды db, dw, dd для чтения данных программы. Мы также представляем окно памяти и команду lm для отображения карты памяти программы. Затем мы обсудим команду u, которая распаковывает данные из памяти программы.​
    12.8 Примеры - Состояние - Основы (Часть 3)
    Мы демонстрируем, как изменить значение регистра с помощью команды r и как записать несколько инструкций в память с помощью команды a (Assemble). Мы представляем команды eb, ew, ed, которые позволяют изменять память программы.​
    12.9 Примеры - Состояние - Вопросительный знак
    Мы представляем команду Evaluate Expression, также известную как команда вопросительного знака («?»). Мы покажем несколько примеров использования этой команды для вычисления нескольких простых выражений, а затем перейдем к нескольким более сложным выражениям. Мы также упоминаем оператор poi для обращения к памяти с помощью команды Question Mark.​
    12.10 Примеры - Состояние - Поиск
    Мы представляем команду s, используемую для поиска данных в памяти программы. Мы используем эту команду как альтернативный способ найти точку входа в нашу программу.​
    12.11 Примеры - Состояние - Стек
    Мы демонстрируем, как проверить содержимое стека программы с помощью команды «dd esp» в случае, когда функции в программах не имеют фреймов стека на основе EBP. В случае фреймов стека на основе EBP мы покажем, как использовать команду k для красивой печати содержимого стека вызовов. Наконец, мы смотрим на связанный список EBP в кадре стека, используя команду «Знак вопроса».​
    12.12 Примеры - Программные точки останова (Часть 1)
    Мы представляем программу specials.asm и проверяем ее исходный код. Далее собираем и запускаем. Наконец, мы открываем его с помощью WinDbg. В этом примере мы покажем, как использовать программные точки останова с WinDbg. Сначала мы объясним команду bp и символ $ exentry. Мы представляем команды: bl (Список всех точек останова), be (Включить точку останова), bd (Отключить точку останова), bc (Очистить точку останова).​
    12.13 Примеры - Программные точки останова (Часть 2)
    Мы используем наши знания о программных точках останова, чтобы получить внутреннюю информацию о запуске specials.asm: мы находим все «специальные» числа.​
    12. 14 Примеры - Аппаратные точки останова (Часть 1)
    Мы вводим аппаратные точки останова. Мы представляем команду ba с различными атрибутами r, w, e. Мы рассмотрим пример, в котором аппаратная точка останова используется для достижения чего-то, чего очень трудно достичь с помощью программных точек останова.​
    12.15 Примеры - Аппаратные точки останова (Часть 2)
    Мы рассмотрим простую программу, которая выводит строку на консоль. Затем мы используем аппаратные точки останова, чтобы найти фрагмент кода, который имеет дело с чтением этой строки.​
    12.16 Примеры - исключения
    Мы показываем, как различные исключения: деление по нулю, нарушение прав доступа и INT3 отображаются в WinDbg. Мы также представляем команду анализировать -v, которая показывает дополнительную информацию о последнем возникшем исключении.
    Раздел 13 - базовый Windows API
    13.1 API Введение
    Мы описываем отношения между операционной системой и запущенными в системе программами. Далее мы описываем функции API как канал связи между программой и операционной системой. Наконец, мы упоминаем несколько распространенных DLL API и веб-сайт msdn.​
    13.2 Примеры - ExitProcess
    Мы представляем функцию ExitProcess API. Мы покажем пример программы, которая содержит эту функцию, а также ознакомимся с документацией по этой функции в MSDN.​
    13.3 Примеры - console_echo (Часть 1)
    Посмотрим на программу console_echo.asm. Анализируем исходный код этой программы. Мы также собираем и запускаем эту программу и проверяем ее вывод для различных типов входных данных. Эта программа содержит вызовы функций API GetStdHandle, ReadFile и WriteFile.​
    13.4 Примеры - console_echo (Часть 2)
    Изучаем функции API GetStdHandle, ReadFile и WriteFile из программы console_echo.asm. Мы используем MSDN, чтобы лучше понять, как работают эти функции , а также проверяем их работу с помощью отладчика.​
    13.5 Примеры - CreateFile
    Мы рассмотрим create_file.asm, программу, которая демонстрирует создание файла в файловой системе и запись в этот файл. Примечательные функции API в этом примере: CreateFileA, WriteFile, CloseHandle.​
    13.6 Примеры - Информация о строке
    Посмотрим на программу string_info.asm. Эта программа использует вспомогательные функции strlen и printf из библиотеки msvcrt для вычисления длины строки и для вывода отформатированной строки на консоль.​
    13.7 Примеры - Next Num
    Наблюдаем next_num.asm. Эта программа считывает строку с консоли, преобразует ее в число с помощью вспомогательной функции strtoul, увеличивает ее на единицу и выводит обратно на консоль с помощью функции printf. Функции printf и strtoul - это вспомогательные функции из библиотеки msvcrt.​
    13.8 Примеры - Next Num Short
    Мы используем макросы invoke и cinvoke fasm для более короткой формулировки вызовов функций в next_num.asm. Программа next_num_short.asm эквивалентна next_num.asm. Просто у него более короткий синтаксис.​
    13.9 Примеры - Дата
    Программа date.asm использует функцию API GetSystemTime из kernel32.dll, чтобы получить текущее системное время и распечатать его для пользователя в удобной форме.​
    13.10 Примеры - бананы
    bananas.asm - это наш первый пример программы с графическим интерфейсом пользователя. Он демонстрирует использование функции API MessageBox из user32.dll.​
    13.11 Примеры - Bananas Short
    Мы используем макросы invoke и cinvoke fasm для более короткой формулировки bananas.asm. В результате мы получаем bananas_short.asm, в котором меньше строк кода. В bananas_short.asm вызовы функций выполняются в одной строке с использованием макросов fasm invoke и cinvoke.
    Раздел 14 - Разное
    14.1 Разное
    Заключение и последние слова о курсе.​
    14.2 - Следующие шаги

    Язык курса: Английский
    Перевод текста: translate.google
    Стоимость курса: 44,99 EUR


    Продажник
     
  2. Последние события

    1. skladchik.com
      Складчина доступна.
      26 янв 2021
    2. Freyja00
      Freyja00 участвует.
      26 янв 2021
    3. Dimon0014
      Dimon0014 участвует.
      19 янв 2021
    4. skladchik.com
      Взнос составляет 200р.
      19 янв 2021

    Последние важные события

    1. skladchik.com
      Складчина доступна.
      26 янв 2021
    2. skladchik.com
      Взнос составляет 200р.
      19 янв 2021
    3. skladchik.com
      Складчина активна.
      19 янв 2021
    4. skladchik.com
      Сбор взносов начинается 19.01.2021.
      17 янв 2021
  3. Обсуждение
  4. 23 дек 2020
    #2
    Hattori Hanzo
    Hattori Hanzo ОргОрганизатор
    Классный базовый курс (судя по описанию) по забытому всеми ассемблеру, вот только если не понимаешь английского, то через автоперевод googletranslate лучше не пытаться смотреть
     
  5. 24 дек 2020
    #3
    bizonnnnn
    bizonnnnn БанЗабанен
    Есть повод английский повторить. Главное, что бы у лектора речь внятная была.
     
Статус обсуждения:
Комментирование ограничено.

Поделиться этой страницей