10.08.2006, 20:27
общий
это ответ
Здравствуйте, Ilya_Ivanov!
Все равно вопрос не совсем понятен. Если реализация через Masm то в начале кода пишем invoke Sleep,100 Второй параметр задержка в милисек.
..............................
start:
invoke Sleep,100
invoke GetModuleHandle, NULL
mov mhInst, eax
..........................
Если необходимо работать прямо под асемблером то можно сделать следующее.
Грузимся в отладчике и оказываемся на EP (Entry Point -точка входа) (В качестве отладчика я юзаю OllyDbg)
Проматываем код вниз. Там всегда располагаются нули. Делаем туда JMP. И замещаем то, что стерли когда ставили JMP. В контекстном меню отладчика выбираем search for->All intermodular calls. Если там есть в списке Sleep то просто делаем двойной клик по нему. переходим к коду типа такого:
0040262A . 68 F4010000 PUSH 1F4 ; /Timeout = 500. ms
0040262F . E8 30A10000 CALL <JMP.&KERNEL32.Sleep> ; \Sleep
копируем этот кусок и вставляем куда надо. Заменяя Timeout на необходимый.
Приложение:
До:00401219 MOV EAX,DWORD PTR FS:[0] / /EP0040121F PUSH EBP00401220 MOV EBP,ESP00401222 PUSH -1............................................................................0040CD54 00 DB 000040CD55 00 DB 000040CD56 00 DB 000040CD57 00 DB 000040CD58 00 DB 000040CD59 00 DB 000040CD5A 00 DB 000040CD5B 00 DB 000040CD5C 00 DB 000040CD5D 00 DB 00после:00401219 JMP unpacked.0040CD54 //EP0040121E NOP0040121F PUSH EBP00401220 MOV EBP,ESP.............................................................................0040CD54 MOV EAX,DWORD PTR FS:[0]0040CD5A PUSH 1000040CD5F CALL <JMP.&KERNEL32.Sleep>0040CD64 JMP unpacked.0040121F //возвращаемся0040CD69 00 DB 000040CD6A 00 DB 000040CD6B 00 DB 00