Секреты покорения эльфов



         

Имплантация чужеродного кода в ELF-файл - часть 6


804830a              43                         inc    ebx

804830b              e9 92 00 00 00                    jmp    80483a2h

Листинг 9 заполняем первую цепочку NOP'ов (окончательный вариант)

Тогда следующая цепочка будет заполнена так:

80483a2              0404                        add    al, 4

80483a4              b9 ?? ?? ?? ??                     mov    ecx, offset begin_msg

80483a9              89ca                        mov    edx, ecx

80483ab              e9 b4 00 00 00                    jmp    8048464h

Листинг 10 заполняет вторую цепочку NOP'ов (предварительный вариант)

В третью, последнюю, цепочку NOP'ов остаток кода уже не вмещается, не хватает одного единственного байта! Что ж, попытаемся еще немного ужать наш код. Например, пары инструкций mov edx,ecx/add edx,sizeof(msg), которые занимают 5 байт, можно использовать lea edx,[ecx+sizeof(msg)]. Тогда все влезает! Ну а само сообщение можно разместить в сегменте данных… Поскольку, свободного места там не очень много, ограничимся строкой "hello". Завершающий нуль в конце ставить необязательно, поскольку системный вызов write выводит ровно столько символов, сколько ему приказано вывести и ни на какие знаки "останова" не реагирует.

Если все было сделано правильно (что маловероятно, в первый раз ошибки делают все), наш файл победоносно выведет строку "hello", а следом за ней, ту строку, которая выводит сама подопытная программа и экран будет выглядеть так:

Рисунок 9 результат работы программы после внедрения (строка hello, которую выводит имплантированный код, для наглядности выделена красным цветом и обведена овалом)




Содержание  Назад  Вперед