Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с CMOS и RDTSC  (Прочитано 12152 раз)
0 Пользователей и 1 Гость смотрят эту тему.
andeserg
Гость
« : 22-05-2010 10:10 » 

Не подскажите, каким образом можно сопоставить временные каналы 70h и 71h и значения счетчика временных тиков процессора (посредством команды RDTSC выводимых на экран). Как появятся дельные советы, выложу еще пару вопросов по данной теме. Идея заключается в следующем : мы получаем показания счетчика, и имеем текущее время из cmos . В момент фиксации и , например, спустя 60 секунд мы должны просмотреть изменилось ли время или нет. А именно - показатели cmos и таймера. Есть ли расхождения. Так же интересен вопрос - возможно ли как-то вести подобие истории работы системы(процессов) имея шкалу времени (миллисекунды, секунды, минуты, дни, месяца) и как ее возможно организовать в ассемблер.

Рассматриваю также помощь на платной основе... Уже отчаялся диплом стоит , преподаватель грызёт *facepalm*  Улыбаюсь)
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 22-05-2010 22:11 » 

Вопрос сумбурный.
Попробую на что-то ответить.

Команда процессора RDTSC никакого отношения к RTC не имеет.

Порт 70h используется для команд, а 71h - для данных. Там не только RTC, но и NVR.

Остальное - полный бред...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
andeserg
Гость
« Ответ #2 : 25-05-2010 11:47 » 

Используя регистр RDTSC необходимо в программном варианте реализовать следующее:
Всё довольно просто  -  суть задачи такова: если программу трассируют под отладчиком, то естественно количество тактов увеличивается. Поэтому необходимо поймать  время которое без отладчика, сравниваем его с текущим и если больше, значит отладчик есть .
То есть сравнение времени до попадания отладчика в работу системы, и текущего времени( допустим отладчик уже в системе).
+ реализовать необходимо так, чтобы шла своеобразная проверка - если есть отладчик в системе, писалось бы сообщение , нападобие * меня атакуют* , если же все тихо - то * система работает нормально*, или что-то в этом роде.
В теории как будет все выглядеть мне понятно, а код никак не получается сваять. Вот и ищу помощи извне.  Всё еще рассмотрю платный вариант работы под заказ.( имеется некая модель операционной системы и идеальным будет вариант вклинивания туда этого момента).
Записан
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 25-05-2010 13:19 » 

не очень представляю как это будет выглядеть. но а зачем это вообще? это защита от отладчика? отладят такую защиту )
Записан
andeserg
Гость
« Ответ #4 : 25-05-2010 13:24 » 

да защита от отладчика.  Нужен сам код) то что отладят это и так понятно) на хакер.ру копаясь наткнулся на следующий кусок кода:

;--------cначала читаем значение регистра времени, затем полученный результат перебрасываем в clock.
Далее снова читаем rdtsc, и полученный снова результат, вычитаем из того что было.
 И получим за сколько тактов выполняется этот код. -----;

int clock;

_asm

{

RDTSC

MOV clock, eax

RDTSC

SUB clock,eax

}

cout << abs(clock);



;---ловим время которое буз отладчика, сравниваем его с текущим и если больше, значит отладчик есть---;

int clock;

_asm

{

RDTSC

MOV clock, eax

RDTSC

SUB clock,eax

}

if(clock > 63)

MessageBox(NULL,"Отладчик есть","Попался!",MB_OK);

else

MessageBox(NULL,"Отладчика нет","всё норм",MB_OK);


а как бы выглядела программка по антиотладке данной ситуации с 0 например?
Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 25-05-2010 14:00 » 

IMHO слабоватая защита.

Кто мешает отладчику, зная скорость данного процессора и количество тактов, необходимое для выполнения команды, соответственно корректировать часы?
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 25-05-2010 14:35 » 

TSC (Time Stamp Counter) к часам отношения вроде бы не имеет.

Но то что защита никакая, это точно. Такое пропатчить можно на ход ноги. IMHO в наши дни не существует защиты от отладчиков, которая работала бы. Ну если только совсем от школоты.
« Последнее редактирование: 25-05-2010 14:38 от resource » Записан
sss
Специалист

ru
Offline Offline

« Ответ #7 : 26-05-2010 02:36 » 

Если ещё учесть, что на этом же ядре могут выполняться потоки других задач...
Записан

while (8==8)
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 26-05-2010 05:34 » 

TSC (Time Stamp Counter) к часам отношения вроде бы не имеет.

Корректировать не часы реального времени, а значение, которое возвращается инструкцией RDTSC через eax. Отладчик вполне может подправить eax перед тем, как передать управление программе пользователя.

Самая главная проблема здесь - суметь написать такой блестящий код, который действительно стоило бы подвергать реверс-инжинирингу.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
resource
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 26-05-2010 07:47 » 

Дык я и говорю, пропатчить то можно что угодно, хоть eax поменять хоть.... да вообще что душа пожелает.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines