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

kick

Магистр Йода
Administrator
Сообщения
5.020
Розыгрыши
3
Реакции
3.577
Баллы
6.485
Нам потребуется:
  • OllyDbg с установленным плагином Multiasm
  • Приложение, над которым мы будем проводить эксперименты. Для примера в статье в качестве подопытного возьмём блокнот (Notepad.exe)
Наша цель состоит в том, чтобы добавить некий код в notepad.exe. В данном примере мы покажем добавление простого MessageBox. В оригинале наш блокнот выглядит так:
Снимок.PNG
1) Открываем ваш блокнот в OllyDbg
olly1.gif
2) Ищем пустое место, для добавления нашего кода (CodeCave DB 00)
cave.gif
3) Добавляем ASCII строку:
editcave.gif
4) Если вы нажали на Binary => Edit или (CTRL + E), вы увидите следующее окно. Которое можете заполнить так же или как хотите.
binaryedit1.gif
5) Нажмите кнопку ОК, и вы увидите ваш модифицированный код, который выделен красным цветом:
modcode.gif
6) Нажмите на Ctrl+A для того, что бы повторно проанализировать ваш код:
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. Это приведет вас к начальной точке исполняемого кода сборки. Для того, что бы у вас не возникло ошибок лучше это скопировать:
copylines.gif
Двойным кликом добавляем JMP <adress of your first push>
origin_edit.gif
9) Возращаемся обратно к вкладке Assemble и видим наш пропатченный код:
edited_origin.gif
Обратите внимание на выделенное красным цветом. К данному адресу, нам нужно, перейти после нашего добавленного кода.
Если мы прыгнем здесь после инъекции программа будет выполняться так же как и раньше без нашей добавленного кода. Но нам не обходимо определить линии перезаписи, в данном случае это выглядит вот так:
Код:
PUSH 70
PUSH NOTEPAD.01001898
Нажмите на первой линии (наш JMP) и нажмите кнопку ENTER. И вы попадаете на наш MessageBox. После того, как мы вызываем MessageBoxA нам нужно вставить перезаписанные строки и вернуться назад.
lastfix.gif
10) Для сохранения всех наших модификаций нам необходимо выполнить следующее действие:
save.gif
11) Закрываем сохраняем всё и получаем наш прокаченный блокнот:
done.gif
12) Нажимаем ОК и наш блокнот запускается :-).
 

Angelika

Заблокирован
Местный
Сообщения
297
Розыгрыши
0
Реакции
95
Баллы
178
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
надо будет попробовать интересно написано кик )
 
Сверху Снизу