Ручная троянизация приложений под windows


Внедрение не во сне, а на яву


Вот и подошли вплотную к внедрению. Создадим бациллу, выводящую простое диалоговое окно перед запуском дрозофилы. Открываем FAR или любой другой редактор и пишем. А что мы, собственно, пишем?

Поскольку это не совсем обычный файл, транслятор должен знать с какого адреса начинать ассемблирование. Мы решили внедряться в дрозофилу со смещения 300h, так? Базовый адрес загрузки равен 1000000h, следовательно, первый байт бациллы соответствует адресу 1000300h. Так и запишем: "ORG1000300h". ORG – это директива, отвечающая за базирование файла.

Еще необходимо указать "USE32", чтобы FASM знал, что это 32-разрядный код. Вот, собственно, и все отличия от нормальных файлов. Дальше можно кодить как обычно. Ах да, чуть было не забыл. Ведь это notepad.exe под Windows NT и, следовательно, ASCII-функций в нем нет, а импортировать их вручную нам лениво. Поскольку, FASM не поддерживает уникода, перекодировку приходится осуществлять самостоятельно. В FAR'е для этого можно набросать следующий макрос: "' Right ' , 0 ," (одинарная кавычка, стрелка влево, одинарная кавычка, запятая, ноль, запятая), который будет преобразовывать ASCII строки в UNICODE. Правда, только на английском языке. Для русского все намного более заморочено. Проще всего взять notepad.exe, записать в нем строку, сохранить, как уникод, и вставить получившийся файл в исходный текст при помощи db.

Законченный текст программы может выглядеть например так:

 

org    1000300h             ; адрес начала бациллы в памяти

use32                      ; 32-разрядный код

       pushad               ; сохраняем все регистры

       xor eax,eax          ; EAX := 0

       push eax             ; uType

(диалог с кнопкой ОК)

       push caption         ; указатель на заголовок

       push text            ; указатель на текст в окне

       push eax             ; hWnd (нет владельца)

       call dword [1001204h]      ; MessageBoxW

       popad                ; восстанавливаем регистры




- Начало -  - Назад -  - Вперед -