вопрос такой: можно ли в винде остановить процесс (произвольный) на время а потом опять запустить, т.е. продолжить его работу с той же самой инструкции на которой мы его приостановили . (т.е. сделать "паузу";). аналогично и по другим операционкам.



как бы извтратно это не выглядело.

p.s.:может конечно глупый вопрос

Комментарии
24.01.2005 в 17:48

Не пробовал, но предполагаю, что дебагеры этим и занимаются. :shuffle:
24.01.2005 в 18:30

WAAAAAAAAAGH!!!!!!1111ONEONE
В принципе можно. Если используешь функции уровня ядра системы, то можно изменять области памяти занятые любым приложением. (.NET Framework во время отладки asp.net страниц изменяет процесс inetinfo, о чем грязно ругается outpost)
24.01.2005 в 18:41

Vj_o-oy

..Если используешь функции уровня ядра системы..

а ето как? ведь просто так не получится? хотя ясень пень если воспользоваться ядром то... но увы...



Sky Cry

Не пробовал, но предполагаю, что дебагеры этим и занимаются

а чтобы стать дебагером, какие права нужны?
24.01.2005 в 18:46

WAAAAAAAAAGH!!!!!!1111ONEONE
BrerRabbit я этим не занимался. только читал вкратце
24.01.2005 в 19:43

BrerRabbit, имеется ввиду программы-дебагеры (debugger). :tongue:



Как я уже сказал, я не пробовал никогда, так что ничего более точного сказать не могу. Попробуй поискать в интернете... :shuffle:
30.01.2005 в 18:29

Fixed.
Исходя из того, что мне известно, на y86 за это отвечает флаг TF где-то в EFLAGS. Тогда после каждой инструкции шлётся прерывание (не помню какое).

Болше не знаю, ибо не пробовал.
10.02.2005 в 03:47

В одном из последних "Хакеров" почитай статью про 0-level...
06.04.2005 в 11:40

Dimmy, полагаю, выполняется однобайтовая инструкция int 3, однако, в результате вызывается дебаггер, который на время останавливает ВСЕ треды; человеку же нужно остановить только один тред, остальные же должны продолжать работу.



BrerRabbit, вопрос чисто теоретический?
06.04.2005 в 11:52

Я тут удосужился подумать. Дебаггер, работающий на третьем уровне (например дебаггер msvc), не останавливает все текущие треды (как, например, softice), однако он прекращает выполнение определённого треда, а затем снова передаёт ему управление (т.е. выключает автоматическую циклическую передачу процессором управления оному треду). То есть - делает именно то, о чём Вы спрашивали (это и сказал Sky Cry).



Таким образом, прямой ответ на Ваш вопрос "можно ли в винде остановить процесс" - да, можно.