|
|
От: | EreTIk | EreTIk's Box |
| Дата: | 05.10.16 11:23 | ||
| Оценка: | +2 | ||
Гуглом нашел оригинал тут:// Данная функция запускает в удаленном процессе поток // который стартует с инструкции JMP [EBX] // В EBX будет лежать адрес функции SelfUnload, // который будет выгружать библиотеку.
Здесь иcпользуется один недокументированный механизм, работающий в линейках от Windows 2000 до Windows 7 (на восьмерке не проверял, но по логике и там будет то же самое). Дело в том что значение, передаваемое в параметре lpParameter функции CreateRemoteThread всегда размещается в регистре EBX при старте нити в удаленном приложении. Задача данного кода разместить в удаленном процессе инструкцию JMP [EBX] с которой будет начинаться работа нити. Если в EBX будет находится адрес процедуры SelfUnload, произойдет передача управления на нее, ну а внутри данной процедуры уже реализован код выгрузки библиотеки и закрытия текущей нити.
Можно конечно стартовать механизм выгрузки сразу непосредственно с функции SelfUnload, но уж очень хотелось показать данный момент, поэтому не ругайте сильно