Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.10.2013, 00:45
UFO 007 UFO 007 вне форума
Новичок
 
Регистрация: 28.11.2010
Сообщения: 54
Репутация: 10
Вопрос Удушение (НЕ убиение) процесса

Цитата:
Сообщение от Thrasher
SuspendThread(hThread) - остановить процесс
ResumeThread(hThread) - дальше пустить его
http://www.delphisources.ru/forum/showthread.php?t=5469
Доброго всем времени суток!!!

Есть жгучее желание следить за каждым шагом "чужого" процесса - приблизительно так:
Код:
l:SuspendThread(hThread)...
MoveProcMemToStream(PID, MS, str);//str -  ReturnStringIfError
CheckStream(MS);
... 
...и вот тут (забрав у процесса 100% ресурсов машины) сделать ResumeThread, но только на один такт/машинный цикл/прерывание(ИОРКу) и по новой: ГоТо L (естесно проверяя внутри "цикла" Абортед:булеан - труе ор фальш) - такое замутить реально?
Если "Да", то огромное спасибо за то, что хто-чё подскажет...
З.Ы. MoveProcMemToStream в оригинале было MoveProcessMemoryToFile (авторы: ЧеловекБорща, mss и GunSmoker - Огр Спс им)
__________________
...И был сначала ZX-Spectrum, а потом его T(urbo)ASS(e)M(bler)... И только на 7-й день (когда Интел купила Пентковского [из КБ Бабаяна]) - появился Pentium-I... А в Союзе P-II был ещё в 1978 году (точнее: Эльбрус [мультискалярный проц] только не рапространялся спекулянтами, а управлял ракетами и спутниками)... А лет с пяток назад Эльбрус-II ПЁР (но никак не ГНАЛСЯ как Селероны) на F(recuency):= 400 GHz... А самое парадоксальное - презентация состоялась в Минске...
Ответить с цитированием
  #2  
Старый 26.10.2013, 09:09
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Т.е. просто надо приостановить выполнение процесса?
Ну как вариант - запоминать начальные состояния потоков и суспендить все, при разморозке восстанавливать состояние.

А цель то какая? Сделать дампер?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #3  
Старый 26.10.2013, 17:14
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
такт/машинный цикл/прерывание(ИОРКу) ... ГоТо L... Абортед:булеан - труе ор фальш
Не надо пользоваться терминами, если даже не знаешь, как их написать. Минуты две расшифровывал весь этот наркоманский бред.
По теме - это называется отладка. Есть аппаратные отладочные регистры, есть флаг Trace, генерирующий исключение после каждой команды.
Трассировать из третьего кольца прерывания невозможно, т.к. прерывание отправляется в ядро системы, на нулевое кольцо, и там системе уже не до всяких левых отладчиков. Также нельзя трассировать SysCall'ы.
Против отладки есть антиотладочные приемы. Так что полностью автоматически некоторые приложения не отладить.
Ежели надо трассировать вообще всё - можно смотреть в сторону эмуляторов, там теоретически это возможно. Но если отладчик на уровне эмулятора - придется как-то фильтровать поток исполнения, т.к. через отладчик будут проходить все процессы и система.
Также можно попробовать Syser - ядерный отладчик. У меня он к сожалению не заводится. Пытаться писать такое самому не советую - 147% угробишь систему.
И еще - сильно сомневаюсь, что даже не зная толком про прерывания получится сделать вменяемый отладчик и уж тем более уделать уже существующие. OllyDbg неплох, в IDA Pro есть еще и IDC/Pyton скрипты, через которые можно делать все что угодно непосредственно во время отладки (правда несколько медлительны эти скрипты).
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 26.10.2013 в 17:23.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter