andeserg
Гость
|
|
« : 22-05-2010 10:10 » |
|
Не подскажите, каким образом можно сопоставить временные каналы 70h и 71h и значения счетчика временных тиков процессора (посредством команды RDTSC выводимых на экран). Как появятся дельные советы, выложу еще пару вопросов по данной теме. Идея заключается в следующем : мы получаем показания счетчика, и имеем текущее время из cmos . В момент фиксации и , например, спустя 60 секунд мы должны просмотреть изменилось ли время или нет. А именно - показатели cmos и таймера. Есть ли расхождения. Так же интересен вопрос - возможно ли как-то вести подобие истории работы системы(процессов) имея шкалу времени (миллисекунды, секунды, минуты, дни, месяца) и как ее возможно организовать в ассемблер. Рассматриваю также помощь на платной основе... Уже отчаялся диплом стоит , преподаватель грызёт *facepalm* )
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #1 : 22-05-2010 22:11 » |
|
Вопрос сумбурный. Попробую на что-то ответить.
Команда процессора RDTSC никакого отношения к RTC не имеет.
Порт 70h используется для команд, а 71h - для данных. Там не только RTC, но и NVR.
Остальное - полный бред...
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
andeserg
Гость
|
|
« Ответ #2 : 25-05-2010 11:47 » |
|
Используя регистр RDTSC необходимо в программном варианте реализовать следующее: Всё довольно просто - суть задачи такова: если программу трассируют под отладчиком, то естественно количество тактов увеличивается. Поэтому необходимо поймать время которое без отладчика, сравниваем его с текущим и если больше, значит отладчик есть . То есть сравнение времени до попадания отладчика в работу системы, и текущего времени( допустим отладчик уже в системе). + реализовать необходимо так, чтобы шла своеобразная проверка - если есть отладчик в системе, писалось бы сообщение , нападобие * меня атакуют* , если же все тихо - то * система работает нормально*, или что-то в этом роде. В теории как будет все выглядеть мне понятно, а код никак не получается сваять. Вот и ищу помощи извне. Всё еще рассмотрю платный вариант работы под заказ.( имеется некая модель операционной системы и идеальным будет вариант вклинивания туда этого момента).
|
|
|
Записан
|
|
|
|
resource
Молодой специалист
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
|
|
« Ответ #5 : 25-05-2010 14:00 » |
|
IMHO слабоватая защита.
Кто мешает отладчику, зная скорость данного процессора и количество тактов, необходимое для выполнения команды, соответственно корректировать часы?
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
resource
Молодой специалист
Offline
Пол:
|
|
« Ответ #6 : 25-05-2010 14:35 » |
|
TSC (Time Stamp Counter) к часам отношения вроде бы не имеет.
Но то что защита никакая, это точно. Такое пропатчить можно на ход ноги. IMHO в наши дни не существует защиты от отладчиков, которая работала бы. Ну если только совсем от школоты.
|
|
« Последнее редактирование: 25-05-2010 14:38 от resource »
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #7 : 26-05-2010 02:36 » |
|
Если ещё учесть, что на этом же ядре могут выполняться потоки других задач...
|
|
|
Записан
|
while (8==8)
|
|
|
Dale
|
|
« Ответ #8 : 26-05-2010 05:34 » |
|
TSC (Time Stamp Counter) к часам отношения вроде бы не имеет.
Корректировать не часы реального времени, а значение, которое возвращается инструкцией RDTSC через eax. Отладчик вполне может подправить eax перед тем, как передать управление программе пользователя. Самая главная проблема здесь - суметь написать такой блестящий код, который действительно стоило бы подвергать реверс-инжинирингу.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
resource
Молодой специалист
Offline
Пол:
|
|
« Ответ #9 : 26-05-2010 07:47 » |
|
Дык я и говорю, пропатчить то можно что угодно, хоть eax поменять хоть.... да вообще что душа пожелает.
|
|
|
Записан
|
|
|
|
|