Не подскажите, каким образом можно сопоставить временные каналы 70h и 71h и значения счетчика временных тиков процессора (посредством команды RDTSC выводимых на экран). Как появятся дельные советы, выложу еще пару вопросов по данной теме. Идея заключается в следующем : мы получаем показания счетчика, и имеем текущее время из cmos . В момент фиксации и , например, спустя 60 секунд мы должны просмотреть изменилось ли время или нет. А именно - показатели cmos и таймера. Есть ли расхождения. Так же интересен вопрос - возможно ли как то вести подобие истории работы системы(процессов) имея шкалу времени (миллисекунды, секунды, минуты, дни, месяца) и как ее возможно организовать в ассемблер.
Рассматриваю также помощь на платной основе... Уже отчаялся диплом стоит , преподаватель грызёт *facepalm*
Работа с CMOS и RDTSC
Модератор: Andy
Видимо ранее был неточен в формулировке задачи) вот несколько более точное описание проблемки.
Используя регистр RDTSC необходимо в программном варианте реализовать следующее:
Всё довольно просто - суть задачи такова: если программу трассируют под отладчиком, то естественно количество тактов увеличивается. Поэтому необходимо поймать время которое без отладчика, сравниваем его с текущим и если больше, значит отладчик есть .
То есть сравнение времени до попадания отладчика в работу системы, и текущего времени( допустим отладчик уже в системе).
+ реализовать необходимо так, чтобы шла своеобразная проверка - если есть отладчик в системе, писалось бы сообщение , нападобие * меня атакуют* , если же все тихо - то * система работает нормально*, или что-то в этом роде.
В теории как будет все выглядеть мне понятно, а код никак не получается сваять. Вот и ищу помощи извне. Всё еще рассмотрю платный вариант работы под заказ.( имеется некая модель операционной системы и идеальным будет вариант вклинивания туда этого момента).
Используя регистр RDTSC необходимо в программном варианте реализовать следующее:
Всё довольно просто - суть задачи такова: если программу трассируют под отладчиком, то естественно количество тактов увеличивается. Поэтому необходимо поймать время которое без отладчика, сравниваем его с текущим и если больше, значит отладчик есть .
То есть сравнение времени до попадания отладчика в работу системы, и текущего времени( допустим отладчик уже в системе).
+ реализовать необходимо так, чтобы шла своеобразная проверка - если есть отладчик в системе, писалось бы сообщение , нападобие * меня атакуют* , если же все тихо - то * система работает нормально*, или что-то в этом роде.
В теории как будет все выглядеть мне понятно, а код никак не получается сваять. Вот и ищу помощи извне. Всё еще рассмотрю платный вариант работы под заказ.( имеется некая модель операционной системы и идеальным будет вариант вклинивания туда этого момента).
RDTSC - это не регистр, это - команда. А сам метод, вероятно, должен основываться на предварительном замере времени выполнения конкретных процедур и сравнения затем в моменты их вызова с уже замерянным, в момент старта проги, значением. Очевидно, что процедуры должны вызываться на протяжении всего кода. Такими могут быть, например, функции выделения памяти или же распиханые по всей программе специальные Check-функции. Защитить весь код такими образом невозможно. Почему? Потому что невозможно предварительно узнать время выполнения всей очереди команд или какой то выборочной части, т.к. на разных процессорах число тактов будет разное и может отличатся от шаблона (не только шаблона, но и предварительного замера в начале) на сотни процентов. Даже без отладчика время выполнения одного и того же кода на одном и том же процессоре может варьироваться до 50-70%. То есть на первом проходе код выполнился за Х тактов, на следующем за 0.8Х, а на третьем может даже 1.7Х
It's a long way to the top if you wanna rock'n'roll