Нам потребуется:
1) Открываем ваш блокнот в OllyDbg
2) Ищем пустое место, для добавления нашего кода (CodeCave DB 00)
3) Добавляем ASCII строку:
4) Если вы нажали на Binary => Edit или (CTRL + E), вы увидите следующее окно. Которое можете заполнить так же или как хотите.
5) Нажмите кнопку ОК, и вы увидите ваш модифицированный код, который выделен красным цветом:
6) Нажмите на Ctrl+A для того, что бы повторно проанализировать ваш код:
В итоге вот так у нас и вышло всё красиво и удобно, но для того, что бы ещё это завести нам нужно добавить ASM код.
7) Добавляем ASM код:
Данный код, реализуем посредством WinAPI Message Box:
Так как у нас "INJECTED NOTEPAD", находится на 1008751 поэтому мы и выполняем ASM команду PUSH 1008751. Для добавления ASM кода необходимо будет воспользоваться командой Ctrl + Shift + M.
8) Мы добавили данный код, но толку от него не будет т.к нужно сделать данный код выполняемым:
Правой кнопкой мыши нажимаем на CPU и выбираем Go To -> Origin. Это приведет вас к начальной точке исполняемого кода сборки. Для того, что бы у вас не возникло ошибок лучше это скопировать:
Двойным кликом добавляем JMP <adress of your first push>
9) Возращаемся обратно к вкладке Assemble и видим наш пропатченный код:
Обратите внимание на выделенное красным цветом. К данному адресу, нам нужно, перейти после нашего добавленного кода.
Если мы прыгнем здесь после инъекции программа будет выполняться так же как и раньше без нашей добавленного кода. Но нам не обходимо определить линии перезаписи, в данном случае это выглядит вот так:
Нажмите на первой линии (наш JMP) и нажмите кнопку ENTER. И вы попадаете на наш MessageBox. После того, как мы вызываем MessageBoxA нам нужно вставить перезаписанные строки и вернуться назад.
10) Для сохранения всех наших модификаций нам необходимо выполнить следующее действие:
11) Закрываем сохраняем всё и получаем наш прокаченный блокнот:
12) Нажимаем ОК и наш блокнот запускается .
- OllyDbg с установленным плагином Multiasm
- Приложение, над которым мы будем проводить эксперименты. Для примера в статье в качестве подопытного возьмём блокнот (Notepad.exe)
1) Открываем ваш блокнот в OllyDbg
2) Ищем пустое место, для добавления нашего кода (CodeCave DB 00)
3) Добавляем ASCII строку:
4) Если вы нажали на Binary => Edit или (CTRL + E), вы увидите следующее окно. Которое можете заполнить так же или как хотите.
5) Нажмите кнопку ОК, и вы увидите ваш модифицированный код, который выделен красным цветом:
6) Нажмите на Ctrl+A для того, что бы повторно проанализировать ваш код:
В итоге вот так у нас и вышло всё красиво и удобно, но для того, что бы ещё это завести нам нужно добавить 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.
Код:
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
);
8) Мы добавили данный код, но толку от него не будет т.к нужно сделать данный код выполняемым:
Правой кнопкой мыши нажимаем на CPU и выбираем Go To -> Origin. Это приведет вас к начальной точке исполняемого кода сборки. Для того, что бы у вас не возникло ошибок лучше это скопировать:
Двойным кликом добавляем JMP <adress of your first push>
9) Возращаемся обратно к вкладке Assemble и видим наш пропатченный код:
Обратите внимание на выделенное красным цветом. К данному адресу, нам нужно, перейти после нашего добавленного кода.
Если мы прыгнем здесь после инъекции программа будет выполняться так же как и раньше без нашей добавленного кода. Но нам не обходимо определить линии перезаписи, в данном случае это выглядит вот так:
Код:
PUSH 70
PUSH NOTEPAD.01001898
10) Для сохранения всех наших модификаций нам необходимо выполнить следующее действие:
11) Закрываем сохраняем всё и получаем наш прокаченный блокнот:
12) Нажимаем ОК и наш блокнот запускается .