Цитата:
Не понял, о чём вы. Не могли бы вы ткнуть лицом в пример?
ТЫЦПоскольку под x32 WinAPI вызывается, насколько я помню, через stdcall, достаточно впихнуть в код
Код:
push 100500 ; задержка в миллисекундах
call [Sleep]
Да, эта задержка не точна, но вполне коррелирует с заявленным числом миллисекунд.
Впихнуть проще всего, пожалуй, на стадии формирования стекового фрейма функции. Конкретно - сделать там вместо первой-второй команды jmp на новый блок памяти, там вызвать sleep, выполнить эту замененную команду уже там и вернуться назад. Сохраняя регистры, разумеется.
Я очень удивлюсь, если в программе в импортах нету Sleep-а. В этом случае задача несколько усложнится - надо будет либо модифицировать секцию импорта, добавив туда Sleep, либо динамически получать его адрес, что создает не меньше геморроя.
Я не понимаю только одного -
зачем.
EDIT:
Поправочка. На MSDN написано, что Sleep работает, начиная с WinXP. Но в некоторых местах пишут, что и в Windows 2000 все в порядке. Стоит проверить прежде, чем пилить патчи.