Небольшое интро от Яши.
Я долго думал, стоит ли начинать мне мою задумку и все же решился попробовать сделать первую часть.
Надеюсь что всемиуважаемый admin и сообщейство примет это не как плагиат, перевод и рерайт, а как авторскую статью. Картинки и текст мой, по сути я взял шаблон с нового курса Нарвахи о чем нужно рассказывать, который уже очень давно хотел перевести на ру в текст. Помотреть что из этого получилось, можно ниже. А узнать плагиат это или нет можно посмотрев этот ролик -
. Кстати английский субтитры заканчиваются на третьем уроке. И если статья будет принята мы погрузимся в обновленный курс по отладе и набравшись опыта перейдем к ядру Виндовз.
Сейчас же вы должны решить достоин ли этот курс жизни.
===========
Всем приветы и добро пожаловать в первую часть нашего курса. Этот курс создан для того чтобы обновить курс "Введение в отладку с нуля с использованием OllyDBG", который создал Рикардо Нарваха. Мы пообщались вместе с Нарвахой и приняли решение, что неплохо бы его обновить, так как прошлый курс закончился в 2007 году и OllyDBG морально и физически устарел, и нужно повторить курс для всех новых людей, которые хотят начать изучать реверсинг, но уже с помощью обновленных инструментов и обновленных операционных систем. В этом случае мы будем использовать x64dbg и Windows 10 так что у нас будет все свежие фрукты так сказать. Вы можете начать непосредственно с этого курса, но можете пересмотреть и старый который уже закончен, но он будет работать нормально только для Windows XP, поэтому запускайте его на виртуальной машине (
). Нужно чтобы люди которые хотят начать изучать реверсинг имели достаточно материала, чтобы они могли развиваться самостоятельно и своими силами. Поэтому им нужно база. Но первую главу мы посвятим именно отладчику x64dbg. x64dbg это отладчик или дебаггер, а отладчик служит для просмотра поведения исполняемого файла в то время когда он работаем в памяти и то что делает наш отладчик я собираюсь сейчас показать. Сейчас мы откроем файл через пункт File→ Open или F3. Я открою файл первого упражнения. Мы сделали этот крекми специально для новичков. Внизу слева видно, что наш отладчик остановлен т.е. находится в состояние паузы. Также кроме состояния, мы видим небольшое окошко с подсказками. Советую туда иногда поглядывать, там бывает нужная информация.
В данный момент программа остановлена. Я не могу написать ничего в консоль хотя она уже появилась, потому что она заморожена ввиду того что программа остановлена. А остановлена наша программа на точке входа или Entry Point - EP и EP является первой инструкцией программы.
Справа после желтого цвета идет окно с комментариями и я могу писать в нем комментарии чтобы нам было проще перемещаться по коду. Я могу дважды щелкнуть по этой области и добавить нужный комментарий.
И тут я могу написать, что это EP и я могу внести это в комментарии, чтобы нам было легче понять что это первая инструкция, которую выполняет программа.
Но перед тем как начать давайте пройдемся по конфигурации нашего отладчика.
В пункте Preferences находятся основные настойки отладчика.
Пункт Shortcuts поможет посмотреть текущие и настроить свои горячие клавиши.
Пункт Customize menus поможет настроить верхнее меню под свои нужны. Здесь можно отключить ненужные пункты и включить нужные.
Пункт Topmost или С+F5 сделает окно отладчика неперекрываемым для других приложений.
Пункт Reload style.css перезагрузит стили для отладчика если что-то сбилось.
Пункт System breakpoint scripts поможет выбрать скрипт для глобальной настойки.
Пункт Import Settings поможет импортировать настройки для отладчика.
Пункт Theme поможет выбрать тему для отладчика. По умолчанию доступна — Default и Dark. Я буду использовать Default т.к. он содержит теплые цвета, а темный цвет пагубно влияет на глаза.
Ну и последний пункт это Languages, где можно выбрать предпочтительный язык для интерфейса. Я же буду использовать английский.
В пункте Appearance отладчик имеет опции и настройки для предпочтения внешнего вида. Вы можете изменить шрифты и цвета.
Единственное что я сделал здесь это увеличил текст чтобы было хорошо видно инструкции.
У нас есть много пунктов и в каждом много возможностей. Сейчас нас интересует пункт Preferences. Мы сразу попадаем на вкладку Events. Мы начали с Events и я рекомендую оставить пока только эту галочку галочки - Entry Breakpoint. Другие галочки мы будем разбираться в процессе обучения.
Это для того чтобы отладчик остановился в EP программы как это происходит у меня. Также кроме открытия файла, можно подключиться к процессу через соответсвующий пункт меню. Мы можем выбрать запущенный процесс и присоединиться к нему через File → Attach или A+A.
В меню File также доступен пункт Detach или C+A+F2 для отвязки от процесса.
Дополнительно доступны следующие пункты меню.
Recent Files – поможет увидеть файлы, которые недавно были загружены в отладчик.
Database – содержит базу данных обработки файла, например такие данные как комментарии.
Patch files – содержит список патчей.
Change Command Line – поможет указать дополнительные параметры аргументы к нашему файлу.
Restart As Admin – перезагрузит отладчик с повышенными административными привилегиями.
Но вернемся в Preferences откуда мы убежали и перейдем на вкладку Engine
На вкладке Engine у нас должна стоять галочка Enable Debug Privilege, чтобы иметь привилегии отладчика в системе и лучше отлаживать программы.
Также здесь есть вкладка Exceptions, но она сейчас пустая и мы пропускаем её и тоже забываем о ней на какое-то время.
На вкладке Disasm я ставлю две эти галочки, которые приходятся мне по вкусу.
Во вкладке GUI мне интересен пункт Show RVA address in graph mode который показывает виртуальные адреса в графическом блочном режиме как в IDA. Так что я выбираю его потому что мне это нравится больше, чем когда он отключен.
Сейчас также я расскажу один трюк, например про звездочку на цифровой клавиатуре (*). Если я нажму её она приведет меня по адресу который содержится в регистре EIP. Просто нажмите и попробуйте.
Также чуть ниже основного меня, мы видим куча вкладок.
CPU – это главное окно программы где находится наш дизассемблированный код.
Log – это вкладка показывает процесс загрузки нашего исполняемого файла.
Notes – здесь будут находиться наши заметки.
Breakpoints — или BP. Здесь будут находиться наши точки останова в программе.
Memory Map – здесь находиться наша карта памяти нашего загруженного процесса с его используемыми динамическими библиотека и виртуальными адресами.
Call Stack – покажет нам стек вызова функций.
SEH – Structured Exception Handler или Структурная Обработка Исключений. Сейчас это нам ничего не говорит, поэтому оставим это так. В дальнейшем мы конечно разберем этот пункт меню.
Script – окно для открытия файла со скриптами, который поможет автоматизировать отладку файла.
Symbols – Это список загруженных DLL, которые использует наш выполняемый файл. И если мы нажмем на любую DLL, мы увидим список всех её экспортируемых функций.
Source – этот пункт мы пропустим так как он нам не нужен.
References – ищет вхождение указанной константы и выводит его в это вкладке.
Threads – это список потоков нашем запущенного процесса.
Handles – это список открытых дескрипторов которые использует программа. В данный момент тут пусто, так как программа ещё не начала выполняться и не открыла никаких объектов.
Trace – история трассировки по программе.
Также у меня здесь есть плагин PE Viewer от моего друга Хорса, который можно скачать отсюда — https://github.com/horsicq/pex64dbg/releases/download/0.04/release.zip, который показывает заголовок PE. Его нужно просто распаковать и положить в папочку с плагинами.
Сейчас здесь пусто, но если я нажму кнопку Reload, сразу появятся поля заголовка PE файла. Что все это такое мы узнаем позже.
Сейчас вернемся в нашу главную вкладку CPU. Слева мы видим числа. Это виртуальные адреса по которым загружена программа.
Далее идет следующий столбец с цифрами и буквами. Это наши опкоды, т.е. команды процессора на нижним уровне электроники, которые приказывают ему что-то сделать.
Они образуют инструкции ассемблера, мнемоники. По сути никакой инструкции в виде букв в процессоре нет, а есть только напряжение на контактах микросхемы. Но чтобы мы не читал хекс байты были придуманы мнемоники для каждого опкода.
Все это нам показывается в шестнадцатеричном виде, потому что так все легче понять. Представьте адреса памяти если бы они были в виде 0000101001010101001010, мы бы не поняли что это значит и не запомнили это число.
В нашем случае E8 будет соответствовать инструкции CALL, а все что правее это его аргумент, а именно адрес памяти для переходов. Байт 55 соответствует инструкции PUSH EBP. И это будет справедливо для всех процессоров Интел. Нам не нужно все это запоминать, потому что это работа дизассемблера.
И если E8 это CALL, то С4030000 — это security cookie. Просто здесь дизассемблер добавил для нас подсказку в виде текста.
Как мы видим инструкции бывают однобайтные, двухбайтные, и т.д.
Справа у нас есть окно регистров. Что это и зачем это мы посмотрим в следующем уроке.
Ниже окна дизассемблера находится окно автоматических комментариев, которые добавляет сам отладчик, чтобы нам было легче работать. Он добавляет подсказки, например такие, как значение регистров в текущий момент времени или куда происходит переход.
Ниже окна с регистрами находится небольшое окно, в котором можно видеть адресацию относительно регистра ESP, прям как в IDA.
Также слева внизу у нас есть 5 вкладок с дампом памяти.
Если мы дважды щелкнем по вкладки мы сможем переименовать её и дать её новое имя. Это будет что-то вроде заметок.
Мы можем загрузить нужный нам адрес памяти во вкладку через соответствующий пункт меню.
И последнее окно о котором мы ещё не рассказали это окно стека, которое находится справа внизу.
В стеке в основном хранятся аргументы функций, их локальные переменные и адреса возвратов в предыдущие родительские функции.
Регистр ESP всегда указывает на вершину стека.
Пока Вы можете не переживать, что в этом уроке мы не объясняем инструкции и другие термины, мы объясним их в следующем уроке.
Сейчас же нам нужно рассказать про 4 важных детали нашего отладчика.
Если мы нажмем F9, то программа запустится и будут выполняться все инструкции по очереди.
Если мы нажмем F8 отладчик будет выполнять каждую инструкцию по очереди при каждом нажатии. Если нам попадется вызов CALL отладчик выполнит его, но не покажет нам внутренности этой функции. Т.е. отладчик будет выполнять, но не заходить в функцию для нас. Также при инструкциях перехода отладчик делает нам подсказки в виде стрелок. И если стрелка серая то переход не будет выполнен, а если красная то будет совершен переход.
Я понимаю, что Вы не знаете сейчас что такое CALL или JMP, но нужно немножко потерпеть.
С помощью клавиши F7 мы можем войти в функцию и увидеть её внутренности.
Также полезно знать, что при наведении на JMP или CALL у нас всплывает графическая подсказка. Т.е. нам не нужно заходить в функцию, чтобы увидеть ее код.
Т.е. с помощью F8 мы можем пройти всю функцию не заходя во встроенные функции и так дойти до конца функции которая завершается операндом RET.
Также полезно знать, что F7 это — Step into, А F8 — это Step over.
Ещё нам нужно разобраться с понятием бит и байт.
Бит это минимальная единица информации в компьютере. Байт состоит из 8 бит. Каждый бит может быть равен либо нулю (0) или единице (1), что соответствует высокому напряжению на контактах микросхемы или низкому (или наоборот в зависимости от микросхемы)
Т.е. 00000001 = 0x1 = 1
Символы 0x говорят нам, что тут мы уже используем 16-ную систему, которая намного проще для нашего восприятия. Видно, что нам легче написать 3 символа вместо 8-ми. Самое правое значение, это значение в десятичной системе.
Дальше идет так:
00000010 = 0x2 = 2
00000011 = 0x3 = 3
00000100 = 0x4 = 4
00000101 = 0x5 = 5
00000110 = 0x6 = 6
00000111 = 0x7 = 7
00001000 = 0x8 = 8
00001001 = 0x9 = 9
Как и у десятичной системы нет цифры для значения десять, так и у шестнадцатеричной системы нет символа для значения 16-ть. Поэтому далее мы будем использовать буквы, так как мы уже использовали все цифры. Далее будет так
00001010 = 0xA = 10
00001011 = 0xB = 11
00001100 = 0xC = 12
00001101 = 0xD = 13
00001110 = 0xE = 14
00001111 = 0xF = 15
0000000[1] - Правее находится самый младший бит.
[0]0001111 = А левее самый старший.
Самый просто способ быстро переводить числа в разные системы счисления это использовать Калькулятор в режиме Программиста.
Ещё одну вещь, про которую очень важно напомнить это то как информация хранится в памяти. Она может быть либо little-endian или big-endian.
little-endian– по младшему адресу хранится младший байт, присущ процессорам Интел.
big-endian - по младшему адресу хранится старший байт- присущ процессорам Мотороллы.
Дополнительно к байту также есть слово, которое содержит два байта, т.е. оно выглядит так
0000111100001111 = 0x0F0F
А также двойное слово, которое содержит 4 байта или 2 обычных слова. Оно выглядит так -
00001111000011110000111100001111 = 0x0F0F0F0F
Ниже на картинки выделено двойное слово.
До встрече во второй части.
Я долго думал, стоит ли начинать мне мою задумку и все же решился попробовать сделать первую часть.
Надеюсь что всемиуважаемый admin и сообщейство примет это не как плагиат, перевод и рерайт, а как авторскую статью. Картинки и текст мой, по сути я взял шаблон с нового курса Нарвахи о чем нужно рассказывать, который уже очень давно хотел перевести на ру в текст. Помотреть что из этого получилось, можно ниже. А узнать плагиат это или нет можно посмотрев этот ролик -
Сейчас же вы должны решить достоин ли этот курс жизни.
===========
Всем приветы и добро пожаловать в первую часть нашего курса. Этот курс создан для того чтобы обновить курс "Введение в отладку с нуля с использованием OllyDBG", который создал Рикардо Нарваха. Мы пообщались вместе с Нарвахой и приняли решение, что неплохо бы его обновить, так как прошлый курс закончился в 2007 году и OllyDBG морально и физически устарел, и нужно повторить курс для всех новых людей, которые хотят начать изучать реверсинг, но уже с помощью обновленных инструментов и обновленных операционных систем. В этом случае мы будем использовать x64dbg и Windows 10 так что у нас будет все свежие фрукты так сказать. Вы можете начать непосредственно с этого курса, но можете пересмотреть и старый который уже закончен, но он будет работать нормально только для Windows XP, поэтому запускайте его на виртуальной машине (
В данный момент программа остановлена. Я не могу написать ничего в консоль хотя она уже появилась, потому что она заморожена ввиду того что программа остановлена. А остановлена наша программа на точке входа или Entry Point - EP и EP является первой инструкцией программы.
Справа после желтого цвета идет окно с комментариями и я могу писать в нем комментарии чтобы нам было проще перемещаться по коду. Я могу дважды щелкнуть по этой области и добавить нужный комментарий.
И тут я могу написать, что это EP и я могу внести это в комментарии, чтобы нам было легче понять что это первая инструкция, которую выполняет программа.
Но перед тем как начать давайте пройдемся по конфигурации нашего отладчика.
В пункте Preferences находятся основные настойки отладчика.
Пункт Shortcuts поможет посмотреть текущие и настроить свои горячие клавиши.
Пункт Customize menus поможет настроить верхнее меню под свои нужны. Здесь можно отключить ненужные пункты и включить нужные.
Пункт Topmost или С+F5 сделает окно отладчика неперекрываемым для других приложений.
Пункт Reload style.css перезагрузит стили для отладчика если что-то сбилось.
Пункт System breakpoint scripts поможет выбрать скрипт для глобальной настойки.
Пункт Import Settings поможет импортировать настройки для отладчика.
Пункт Theme поможет выбрать тему для отладчика. По умолчанию доступна — Default и Dark. Я буду использовать Default т.к. он содержит теплые цвета, а темный цвет пагубно влияет на глаза.
Ну и последний пункт это Languages, где можно выбрать предпочтительный язык для интерфейса. Я же буду использовать английский.
В пункте Appearance отладчик имеет опции и настройки для предпочтения внешнего вида. Вы можете изменить шрифты и цвета.
Единственное что я сделал здесь это увеличил текст чтобы было хорошо видно инструкции.
У нас есть много пунктов и в каждом много возможностей. Сейчас нас интересует пункт Preferences. Мы сразу попадаем на вкладку Events. Мы начали с Events и я рекомендую оставить пока только эту галочку галочки - Entry Breakpoint. Другие галочки мы будем разбираться в процессе обучения.
Это для того чтобы отладчик остановился в EP программы как это происходит у меня. Также кроме открытия файла, можно подключиться к процессу через соответсвующий пункт меню. Мы можем выбрать запущенный процесс и присоединиться к нему через File → Attach или A+A.
В меню File также доступен пункт Detach или C+A+F2 для отвязки от процесса.
Дополнительно доступны следующие пункты меню.
Recent Files – поможет увидеть файлы, которые недавно были загружены в отладчик.
Database – содержит базу данных обработки файла, например такие данные как комментарии.
Patch files – содержит список патчей.
Change Command Line – поможет указать дополнительные параметры аргументы к нашему файлу.
Restart As Admin – перезагрузит отладчик с повышенными административными привилегиями.
Но вернемся в Preferences откуда мы убежали и перейдем на вкладку Engine
На вкладке Engine у нас должна стоять галочка Enable Debug Privilege, чтобы иметь привилегии отладчика в системе и лучше отлаживать программы.
Также здесь есть вкладка Exceptions, но она сейчас пустая и мы пропускаем её и тоже забываем о ней на какое-то время.
На вкладке Disasm я ставлю две эти галочки, которые приходятся мне по вкусу.
Во вкладке GUI мне интересен пункт Show RVA address in graph mode который показывает виртуальные адреса в графическом блочном режиме как в IDA. Так что я выбираю его потому что мне это нравится больше, чем когда он отключен.
Сейчас также я расскажу один трюк, например про звездочку на цифровой клавиатуре (*). Если я нажму её она приведет меня по адресу который содержится в регистре EIP. Просто нажмите и попробуйте.
Также чуть ниже основного меня, мы видим куча вкладок.
CPU – это главное окно программы где находится наш дизассемблированный код.
Log – это вкладка показывает процесс загрузки нашего исполняемого файла.
Notes – здесь будут находиться наши заметки.
Breakpoints — или BP. Здесь будут находиться наши точки останова в программе.
Memory Map – здесь находиться наша карта памяти нашего загруженного процесса с его используемыми динамическими библиотека и виртуальными адресами.
Call Stack – покажет нам стек вызова функций.
SEH – Structured Exception Handler или Структурная Обработка Исключений. Сейчас это нам ничего не говорит, поэтому оставим это так. В дальнейшем мы конечно разберем этот пункт меню.
Script – окно для открытия файла со скриптами, который поможет автоматизировать отладку файла.
Symbols – Это список загруженных DLL, которые использует наш выполняемый файл. И если мы нажмем на любую DLL, мы увидим список всех её экспортируемых функций.
Source – этот пункт мы пропустим так как он нам не нужен.
References – ищет вхождение указанной константы и выводит его в это вкладке.
Threads – это список потоков нашем запущенного процесса.
Handles – это список открытых дескрипторов которые использует программа. В данный момент тут пусто, так как программа ещё не начала выполняться и не открыла никаких объектов.
Trace – история трассировки по программе.
Также у меня здесь есть плагин PE Viewer от моего друга Хорса, который можно скачать отсюда — https://github.com/horsicq/pex64dbg/releases/download/0.04/release.zip, который показывает заголовок PE. Его нужно просто распаковать и положить в папочку с плагинами.
Сейчас здесь пусто, но если я нажму кнопку Reload, сразу появятся поля заголовка PE файла. Что все это такое мы узнаем позже.
Сейчас вернемся в нашу главную вкладку CPU. Слева мы видим числа. Это виртуальные адреса по которым загружена программа.
Далее идет следующий столбец с цифрами и буквами. Это наши опкоды, т.е. команды процессора на нижним уровне электроники, которые приказывают ему что-то сделать.
Они образуют инструкции ассемблера, мнемоники. По сути никакой инструкции в виде букв в процессоре нет, а есть только напряжение на контактах микросхемы. Но чтобы мы не читал хекс байты были придуманы мнемоники для каждого опкода.
Все это нам показывается в шестнадцатеричном виде, потому что так все легче понять. Представьте адреса памяти если бы они были в виде 0000101001010101001010, мы бы не поняли что это значит и не запомнили это число.
В нашем случае E8 будет соответствовать инструкции CALL, а все что правее это его аргумент, а именно адрес памяти для переходов. Байт 55 соответствует инструкции PUSH EBP. И это будет справедливо для всех процессоров Интел. Нам не нужно все это запоминать, потому что это работа дизассемблера.
И если E8 это CALL, то С4030000 — это security cookie. Просто здесь дизассемблер добавил для нас подсказку в виде текста.
Как мы видим инструкции бывают однобайтные, двухбайтные, и т.д.
Справа у нас есть окно регистров. Что это и зачем это мы посмотрим в следующем уроке.
Ниже окна дизассемблера находится окно автоматических комментариев, которые добавляет сам отладчик, чтобы нам было легче работать. Он добавляет подсказки, например такие, как значение регистров в текущий момент времени или куда происходит переход.
Ниже окна с регистрами находится небольшое окно, в котором можно видеть адресацию относительно регистра ESP, прям как в IDA.
Также слева внизу у нас есть 5 вкладок с дампом памяти.
Если мы дважды щелкнем по вкладки мы сможем переименовать её и дать её новое имя. Это будет что-то вроде заметок.
Мы можем загрузить нужный нам адрес памяти во вкладку через соответствующий пункт меню.
И последнее окно о котором мы ещё не рассказали это окно стека, которое находится справа внизу.
В стеке в основном хранятся аргументы функций, их локальные переменные и адреса возвратов в предыдущие родительские функции.
Регистр ESP всегда указывает на вершину стека.
Пока Вы можете не переживать, что в этом уроке мы не объясняем инструкции и другие термины, мы объясним их в следующем уроке.
Сейчас же нам нужно рассказать про 4 важных детали нашего отладчика.
Если мы нажмем F9, то программа запустится и будут выполняться все инструкции по очереди.
Если мы нажмем F8 отладчик будет выполнять каждую инструкцию по очереди при каждом нажатии. Если нам попадется вызов CALL отладчик выполнит его, но не покажет нам внутренности этой функции. Т.е. отладчик будет выполнять, но не заходить в функцию для нас. Также при инструкциях перехода отладчик делает нам подсказки в виде стрелок. И если стрелка серая то переход не будет выполнен, а если красная то будет совершен переход.
Я понимаю, что Вы не знаете сейчас что такое CALL или JMP, но нужно немножко потерпеть.
С помощью клавиши F7 мы можем войти в функцию и увидеть её внутренности.
Также полезно знать, что при наведении на JMP или CALL у нас всплывает графическая подсказка. Т.е. нам не нужно заходить в функцию, чтобы увидеть ее код.
Т.е. с помощью F8 мы можем пройти всю функцию не заходя во встроенные функции и так дойти до конца функции которая завершается операндом RET.
Также полезно знать, что F7 это — Step into, А F8 — это Step over.
Ещё нам нужно разобраться с понятием бит и байт.
Бит это минимальная единица информации в компьютере. Байт состоит из 8 бит. Каждый бит может быть равен либо нулю (0) или единице (1), что соответствует высокому напряжению на контактах микросхемы или низкому (или наоборот в зависимости от микросхемы)
Т.е. 00000001 = 0x1 = 1
Символы 0x говорят нам, что тут мы уже используем 16-ную систему, которая намного проще для нашего восприятия. Видно, что нам легче написать 3 символа вместо 8-ми. Самое правое значение, это значение в десятичной системе.
Дальше идет так:
00000010 = 0x2 = 2
00000011 = 0x3 = 3
00000100 = 0x4 = 4
00000101 = 0x5 = 5
00000110 = 0x6 = 6
00000111 = 0x7 = 7
00001000 = 0x8 = 8
00001001 = 0x9 = 9
Как и у десятичной системы нет цифры для значения десять, так и у шестнадцатеричной системы нет символа для значения 16-ть. Поэтому далее мы будем использовать буквы, так как мы уже использовали все цифры. Далее будет так
00001010 = 0xA = 10
00001011 = 0xB = 11
00001100 = 0xC = 12
00001101 = 0xD = 13
00001110 = 0xE = 14
00001111 = 0xF = 15
0000000[1] - Правее находится самый младший бит.
[0]0001111 = А левее самый старший.
Самый просто способ быстро переводить числа в разные системы счисления это использовать Калькулятор в режиме Программиста.
Ещё одну вещь, про которую очень важно напомнить это то как информация хранится в памяти. Она может быть либо little-endian или big-endian.
little-endian– по младшему адресу хранится младший байт, присущ процессорам Интел.
big-endian - по младшему адресу хранится старший байт- присущ процессорам Мотороллы.
Дополнительно к байту также есть слово, которое содержит два байта, т.е. оно выглядит так
0000111100001111 = 0x0F0F
А также двойное слово, которое содержит 4 байта или 2 обычных слова. Оно выглядит так -
00001111000011110000111100001111 = 0x0F0F0F0F
Ниже на картинки выделено двойное слово.
До встрече во второй части.
