1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Скрыть объявление

Привет посетитель! У нас на форуме тебе откроются дополнительные разделы, которые скрыты от гостей! А так же ты найдёшь много полезной информации.

Мануал Внедрение ASM кода в исполняемый файл

Тема в разделе "Реверс инжиниринг / Reverse Engineering", создана пользователем kick, 21 фев 2017.

  1. kick

    kick Магистр Йода Администратор

    Регистрация:
    20 янв 2015
    Сообщения:
    4.915
    Симпатии:
    3.455
    Баллы:
    6.235
    Нам потребуется:
    • OllyDbg с установленным плагином Multiasm
    • Приложение, над которым мы будем проводить эксперименты. Для примера в статье в качестве подопытного возьмём блокнот (Notepad.exe)
    Наша цель состоит в том, чтобы добавить некий код в notepad.exe. В данном примере мы покажем добавление простого MessageBox. В оригинале наш блокнот выглядит так:
    Внедрение ASM кода в исполняемый файл, kick,1, 1, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, PNG, Снимок.PNG
    1) Открываем ваш блокнот в OllyDbg
    Внедрение ASM кода в исполняемый файл, kick,2, 2, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, olly1.gif
    2) Ищем пустое место, для добавления нашего кода (CodeCave DB 00)
    Внедрение ASM кода в исполняемый файл, kick,3, 3, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, cave.gif
    3) Добавляем ASCII строку:
    Внедрение ASM кода в исполняемый файл, kick,4, 4, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, editcave.gif
    4) Если вы нажали на Binary => Edit или (CTRL + E), вы увидите следующее окно. Которое можете заполнить так же или как хотите.
    Внедрение ASM кода в исполняемый файл, kick,5, 5, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, binaryedit1.gif
    5) Нажмите кнопку ОК, и вы увидите ваш модифицированный код, который выделен красным цветом:
    Внедрение ASM кода в исполняемый файл, kick,6, 6, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, modcode.gif
    6) Нажмите на Ctrl+A для того, что бы повторно проанализировать ваш код:
    Внедрение ASM кода в исполняемый файл, kick,7, 7, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, reanalyzed.gif
    В итоге вот так у нас и вышло всё красиво и удобно, но для того, что бы ещё это завести нам нужно добавить ASM код.
    7) Добавляем ASM код:
    Код:
    PUSH 0                 ; BUTTONS = <OK ONLY>
       PUSH 1008751      ; CAPTION  = Our adress of the "INJECTED NOTEPAD"
       PUSH 1008751      ; MESSAGE  = Same like above.
       PUSH 0                 ; ICON        = <NO ICON>
       CALL MessageBoxA; Run MessageBoxA with the Params above.
    Данный код, реализуем посредством WinAPI Message Box:
    Код:
    int MessageBox(
                HWND hWnd,  // handle of owner window
                LPCTSTR lpText, // address of text in message box
                LPCTSTR lpCaption,  // address of title of message box 
                UINT uType  // style of message box
              );
    Так как у нас "INJECTED NOTEPAD", находится на 1008751 поэтому мы и выполняем ASM команду PUSH 1008751. Для добавления ASM кода необходимо будет воспользоваться командой Ctrl + Shift + M.
    8) Мы добавили данный код, но толку от него не будет т.к нужно сделать данный код выполняемым:
    Правой кнопкой мыши нажимаем на CPU и выбираем Go To -> Origin. Это приведет вас к начальной точке исполняемого кода сборки. Для того, что бы у вас не возникло ошибок лучше это скопировать:
    Внедрение ASM кода в исполняемый файл, kick,8, 8, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, copylines.gif
    Двойным кликом добавляем JMP <adress of your first push>
    Внедрение ASM кода в исполняемый файл, kick,9, 9, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, origin_edit.gif
    9) Возращаемся обратно к вкладке Assemble и видим наш пропатченный код:
    Внедрение ASM кода в исполняемый файл, kick,10, 10, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, edited_origin.gif
    Обратите внимание на выделенное красным цветом. К данному адресу, нам нужно, перейти после нашего добавленного кода.
    Если мы прыгнем здесь после инъекции программа будет выполняться так же как и раньше без нашей добавленного кода. Но нам не обходимо определить линии перезаписи, в данном случае это выглядит вот так:
    Код:
    PUSH 70
    PUSH NOTEPAD.01001898
    Нажмите на первой линии (наш JMP) и нажмите кнопку ENTER. И вы попадаете на наш MessageBox. После того, как мы вызываем MessageBoxA нам нужно вставить перезаписанные строки и вернуться назад.
    Внедрение ASM кода в исполняемый файл, kick,11, 11, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, lastfix.gif
    10) Для сохранения всех наших модификаций нам необходимо выполнить следующее действие:
    Внедрение ASM кода в исполняемый файл, kick,12, 12, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, save.gif
    11) Закрываем сохраняем всё и получаем наш прокаченный блокнот:
    Внедрение ASM кода в исполняемый файл, kick,13, 13, 21 фев 2017, 12:43, Форум администраторов игровых серверов, 59845, 4974, gif, done.gif
    12) Нажимаем ОК и наш блокнот запускается :-).
     
    Demort, webdes27, Influence и ещё 1-му нравится это.
  2. Angelika

    Angelika Заблокирован Местный

    Регистрация:
    20 авг 2016
    Сообщения:
    294
    Симпатии:
    95
    Баллы:
    178
    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.
    надо будет попробовать интересно написано кик )
     
  3. ღ Kate ღ

    ღ Kate ღ Недоразработчик Проверенный

    Регистрация:
    5 янв 2016
    Сообщения:
    1.116
    Симпатии:
    383
    Баллы:
    472
    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.
    Ты поняла, а я нет. Я дерево. :fffuuu:
     
Похожие темы
  1. Singer
    Ответов:
    4
    Просмотров:
    346
  2. Никита
    Ответов:
    1
    Просмотров:
    235
  3. xDarkDelux
    Ответов:
    15
    Просмотров:
    359
  4. webdes27
    Ответов:
    7
    Просмотров:
    481
  5. kick
    Ответов:
    0
    Просмотров:
    214
Загрузка...