Впровадження троянської dll

wspnntfA (strchr (szBuf, 0), "\ n% 08X-% s", mbi.AllocationBase, szModName);

Інший спосіб впровадження полягає в заміні DLL, що завантажується процесом, на іншу DLL. Наприклад, знаючи, що процесу потрібна Xyz.dll, Ви можете створити свою DLL і присвоїти їй те ж ім'я. Звичайно, перед цим Ви повинні перейменувати вихідну Xyz.dll.

Якщо Ви хочете застосувати цей метод тільки для однієї програми, то можете привласнити своєї DLL унікальне ім'я і записати його в розділ імпорту виконуваного модуля програми. Справа в тому, що розділ імпорту містить імена всіх DLL, потрібних ЕХЕ-модулю. Ви можете "покопатися" в цьому розділі і змінити його так, щоб завантажувач операційної системи завантажував Вашу DLL. Цей прийом зовсім непоганий, але вимагає глибоких знань про формат EXE- і DLL-файлів.

Впровадження DLL як відладчика

Цей метод вимагає маніпуляцій зі структурою CONTEXT потоку отлаживаемого процесу, а значить, Ваш код буде залежний оттіпа процесора, і його доведеться модифікувати при перенесенні на іншу процессорную платформу Крім того, Вам майже напевно доведеться вручну коригувати машинний код, який повинен бути виконаний налагоджувати процесом. Не забудьте і про жорстку зв'язку між отладчиком і налагоджують програмою як тільки відладчик закривається, Windows негайно закриває і отлаживаемую програму. Уникнути цього можна.

Впровадження коду в середовищі Windows 98 через проектується в пам'ять файл

Даний метод теж досить важкий, тому що Вам потрібно буде змусити потокдругого процесу виконувати код в проекції файлу. Для цього знадобляться якісь кошти управління віддаленим потоком. Тут в нагоді б функція CreateRemoteThread, але Windows 98 її не підтримує. На жаль, готового рішення цієї проблеми у мсня немає.

Впровадження коду через функцію CreateProcess

Якщо Ваш процес породжує дочірній, в який треба впровадити якийсь код, то задача значно спрощується. Батьківський процес може створити новий процес і відразу ж припинити його. Це дозволить змінити стан дочірнього процесу до початку його виконання. У той же час батьківський процес отримує описатель первинного потоку дочірнього процесу. Знаючи його, Ви можете модифікувати код, який буде виконуватися цим потоком. Тим самим Ви вирішите проблему, згадану в попередньому розділі: в даному випадку неважко встановити регістр покажчика команд, що належить потоку, на код в проекції файлу.

Ось один із способів контролю за тим, який код виконується первинним потоком дочірнього процесу:

Схожі статті