Сейчас на форуме: zds, -Sanchez- (+9 невидимых)

 eXeL@B —› Протекторы —› Помогите понять работу триала (EXECryptor)
Посл.ответ Сообщение


Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 07 ноября 2008 04:31 · Поправил: Модератор
· Личное сообщение · #1

Столкнулся с тем, что программка отслеживает перевод календаря вперёд не используя драйвера...
Триал на 30 дней. Лицензия определяет дату окончания. Можно перевести безболезненно на день вперёд. Как только перевожу на два и более (в пределах рабочего периода), при запуске Clock manipulation detected!
Программа не использует GetSystemTime и GetLocalTime. Делает CreateFile на kernel32.dll к которому в системе всегда закрыт доступ на запись и изменение аттрибутов. Хотя он содержит именно дату открытия, тоесть момент запуска винды. Я перехватываю доступ к нему и подкидываю файл лежащий на другом диске, с нужными мне аттрибутами и датой. Не помогает... Что интересно, любой перевод даты вперёд (а в последствии и назад) отрабатывает без этого сообщения если компьютер был перезагружен. Пробывал вгонять комп в спячку - не помогает. В общем получается так, что где-то живёт дата запуска винды, которая не теряется при спящем режиме... Может это время последнего обращения к какой либо хитрой ветке реестра ? Вроде утилита была типа LastWrite (определяла время последнего обращения к ветке реестра). Или время открытия занятого системой файла... Ещё вспоминается, что где-то в винде была функция какая то определяющая время работы ? Или то сетевого подключения касалось ? В общем вопрос мой в том, какие есть возможности определения не только текущего времени не стандартными подходами, но и времени работы винды ?...




Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 07 ноября 2008 08:06 · Поправил: Spirit
· Личное сообщение · #2

ToBad пишет:
но и времени работы винды

Дык аптайм компа в реестре пишется, возможно оттуда и математика. А еще через GetTickCount

-----
iNTERNATiONAL CoDE CReW





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 07 ноября 2008 10:36
· Личное сообщение · #3

Все флудопосты поскипал

to Loco - лучше вообще ничего не пость, чем всякую чушь

-----
Yann Tiersen best and do not fuck





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 07 ноября 2008 12:30 · Поправил: MACKLIA
· Личное сообщение · #4

ToBad пишет:
В общем получается так, что где-то живёт дата запуска винды, которая не теряется при спящем режиме..


Когдато дату загрузки ,именно обычной загрузки я получал так:
Edit1.Text:=DateToStr(GetFileDateTime('C:\WINDOWS\system32\config\syst em'))
при последующем использовании спящего режима она тоже не теряется.

ToBad пишет:
Хотя он содержит именно дату открытия, тоесть момент запуска винды.


Только при переводе даты ,и его дата открытия автоматически изменяется .

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 441.3 (мудрец), 297thx
Активность: 0.410.04
Статус: Участник

Создано: 07 ноября 2008 12:56
· Личное сообщение · #5

ToBad пишет:
Может это время последнего обращения к какой либо хитрой ветке реестра ?

Посмотри RegQueryInfoKey. У неё в структуру PFILETIME передается время последней модификации ключа.




Ранг: 154.2 (ветеран), 66thx
Активность: 0.080
Статус: Участник
REVENGE Crew

Создано: 07 ноября 2008 13:33 · Поправил: kioresk
· Личное сообщение · #6

«Clock manipulation detected!» — это стандартное крипторовское сообщение о смене даты.

Если патч устраивает, то можешь просто отключить проверку изменения системной даты, об этом уже писал ранее в теме по криптору (EXECryptor 2.x – Отключение проверки системной даты).

Если патч не подходит, и интересует как именно криптор определяет смену даты, то в принципе могу чуть позже выложить код крипторовской API EXECryptor_GetDate, в которой и проверяется не намухлевал ли ты с датой.




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 07 ноября 2008 14:13 · Поправил: ToBad
· Личное сообщение · #7

Spirit пишет:
Дык аптайм компа в реестре пишется


Понял, погуглю.

Spirit пишет:
А еще через GetTickCount


Тут я делал перехват когда искал определение частоты работы процессора. Выдавал фанарные значения и это никак не отразилось.

MACKLIA пишет:
Когдато дату загрузки ,именно обычной загрузки я получал так:
Edit1.Text:=DateToStr(GetFileDateTime('C:\WINDOWS\system32\config\syst em'))


Я тоже подозревал, что может через обращение к системным файлам. Для этого перехватывал обращение к кернелу. Проблема в том, что никуда более программа не лезет. Я имею ввиду другие файлы и папки. Всё это я мониторю.

tihiy_grom пишет:
Посмотри RegQueryInfoKey. У неё в структуру PFILETIME передается время последней модификации ключа.


Это пригодится !

kioresk пишет:
«Clock manipulation detected!» — это стандартное крипторовское сообщение о смене даты.
Если патч устраивает, то можешь просто отключить проверку изменения системной даты, об этом уже писал ранее в теме по криптору (EXECryptor 2.x – Отключение проверки системной даты).
Если патч не подходит, и интересует как именно криптор определяет смену даты, то в принципе могу чуть позже выложить код крипторовской API EXECryptor_GetDate, в которой и проверяется не намухлевал ли ты с датой.


Да, скорее всего это именно оно ! На длл был екзекриптор который сняли и отключили проверки. Выходит не все. Патч вполне подходит, буду читать статью !
Конечно посмотреть код API EXECryptor_GetDate тоже очень хочется. Буду ждать !




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 07 ноября 2008 14:26
· Личное сообщение · #8

kioresk вопрос в догоночку, не сам ли криптор читает из реестра SystemBiosDate и SystemBiosVersion, а так же неоднократно вычитывает все возможные данные с помощью cpuid и всё это ксорит с волум сериалом полученным функцией ZwQueryVolumeInformationFile ?




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 07 ноября 2008 14:28
· Личное сообщение · #9

Можно еще попробовать сделать что бы всегда было 30 дней

Бряк на ZwQueryValueKey и отловить момент когда будет обращаться к ветке криптора
потом трейс до CMP DWORD PTR DS:[EAX+4],0 и замена CMP EAX, EAX

либо банально трашрег

-----
StarForce и Themida ацтой!





Ранг: 154.2 (ветеран), 66thx
Активность: 0.080
Статус: Участник
REVENGE Crew

Создано: 07 ноября 2008 15:31
· Личное сообщение · #10

ToBad пишет:
не сам ли криптор читает из реестра SystemBiosDate и SystemBiosVersion, а так же неоднократно вычитывает все возможные данные с помощью cpuid и всё это ксорит с волум сериалом полученным функцией ZwQueryVolumeInformationFile?


Сам. Криптор может расчитывать HWID по:

1. Bios (SystemBiosDate и SystemBiosVersion)
2. Hdd (GetFileInformationByHandle, GetVolumeInformationA)
3. Cpu (Cpuid)

Соответственно занимается этим API EXECryptor_GetHardwareID. В твоем случае хвид считается по всем трем параметрам.




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 07 ноября 2008 15:34
· Личное сообщение · #11

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

kioresk нашёл 3 места как описано в статье. Бряк работает только на одном. Пропатчил - работает !
Клок манипулейшин более не помеха ! Теперь становиться понятно как всё работает.
Программа расшифровывает свою лицензию и определяет дату до которой работать, затем получает текущую дату от екзекриптора, ну и естественно сравнивает где-то.
Буду реверсить после Check_NT что бы патчить непосредственно EXECryptor_GetDate. Думаю теперь дело за малым...

Большое спасибо всем кто участвовал в обсуждении моего топика !




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 07 ноября 2008 15:39 · Поправил: ToBad
· Личное сообщение · #12

kioresk да, через попу я всё сделал. Биос и hdd делал перехватом фунок, cpuid - патчем. А всего то нужно найти было вход, выход или просто вызов API EXECryptor_GetHardwareID и пропатчить там...

А есть где нибудь инфа по АПИ криптора ? Подозреваю, что в ветке про екзекриптор. Поищу...

p.s. Да, точно, куда мои глаза смотрели, в ветке EXECryptor и видео про смену hwid-а есть...




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 07 ноября 2008 20:36
· Личное сообщение · #13

ToBad пишет: cpuid - патчем
Интересно а как легко найти место получения cpuid, это ж не апи функция а ассемблерная.

-----
StarForce и Themida ацтой!





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 07 ноября 2008 21:46
· Личное сообщение · #14

Maximus пишет:
Интересно а как легко найти место получения cpuid, это ж не апи функция а ассемблерная.


Я искал хювом в файле все 0FA2, патчил по 3-4 штуки на 9090 и смотрел на hwid. Таким образом вычислил те 7 которые используются у меня. Благо было всего 30-60 подозрительных мест. Потом пропатчил всё согласно тому, что на моём компе попадает в регистры после cpuid. Когда всё сработало - протрейсил от первого вызова до 7-го. По ходу увидел куда сериал волум приплетается. В итоге запатчил всё заново байтами 10-ю... Это получился результат hdd+cpu... Вот теперь буду лезть ещё глубже, что бы прибавить сюда bios. Таким образом планирую выйти в хвост EXECryptor_GetHardwareID и запатчить там.

Пока остановился на GetDate. После патча по уроку kioresk клок манипулейшин отстал... Перехват
FileTimeToDosDateTime, GetSystemTimeAsFileTime, FileTimeToLocalFileTime, GetSystemTime и GetLocalTime - результата ожидаемого не принёс. Незнаю как выйти на конец EXECryptor_GetDate. Оно должно вернуть 2 dword в формате FileTime или 4 dword в формате SystemTime ?

Описание EXECryptor API нигде не нашёл, наверное мне показалось, что его тут выкладывали...




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 07 ноября 2008 23:30 · Поправил: ToBad
· Личное сообщение · #15

Нашёл вызов GetSystemTimeAsFileTime, запатчил - триал заморозил...
Теперь биос доделать осталось...

p.s. Просьба к модератору подправить ошибку в названии темы.




Ранг: 154.2 (ветеран), 66thx
Активность: 0.080
Статус: Участник
REVENGE Crew

Создано: 08 ноября 2008 01:10 · Поправил: kioresk
· Личное сообщение · #16

Описание крипторовских API (их назначение, передаваемые/возвращаемые параметры) есть в крипторовском хелпе, поэтому скачай дистрибутив версии 2.3.9 и посмотри что к чему.

Сразу оговорюсь, что в хелпе эта функция называется SafeGetDate, но в крипторовском SDK используется именно EXECryptor_GetDate, поэтому я ее так и называю.

А тип возвращаемого значения зависит от примененного компилятора. Наример, для Delphi эта функция возвращает дату в формате TDateTime, т.е. для 08.11.2008 в eax будет 0x00003968.

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


П.С.
Модераторы добавьте еще к концу темы (EXECryptor).




Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 08 ноября 2008 01:26
· Личное сообщение · #17

kioresk пишет:
В принципе могу посмотреть где начинается эта функция, если выложишь/скинешь файл.


Да я знаю, что ты можешь...
Файл (длл) ты распаковывал когда-то в ветке про екзекриптор.
Мне хочется самому уметь находить нужные функции. Мне бы отрыть информацию не только ту, что в СДК напишут, но и научится находить нужное с помощью сигнатур... Так как это ты в уроке с Check_NT делал...
Как я уже сказал выше - удалось найти и запатчить GetSystemTimeAsFileTime. Потрейсю завтра, может найду возврат из GetDate...
У меня ещё есть вопросик. В программе (смотрю по логу перехватываемых функций) группа из считывания инфы о биосе и сериал волума повторяется более 30 раз. Только потом идёт опрос даты. Зачем может понадобится программе столько раз получать hwid ?




Ранг: 118.1 (ветеран)
Активность: 0.140
Статус: Участник

Создано: 08 ноября 2008 01:29
· Личное сообщение · #18

ToBad пишет:
Нашёл вызов GetSystemTimeAsFileTime, запатчил - триал заморозил...
Теперь биос доделать осталось..

=) я о этой ф-ции в самом начале писал, но модератору не понравилось что я написал "что если программа на С то попробуй найти ф-цию....."

-----
PSP-Gamer.ru





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 08 ноября 2008 10:34
· Личное сообщение · #19

Loco пишет:
но модератору не понравилось что я написал "что если программа на С то попробуй найти ф-цию....."

Не надо гнать, модератору не понравилось то что ты написал после, что было полной чушью, поэтому модератор снес все посты.

-----
Yann Tiersen best and do not fuck





Ранг: 450.3 (мудрец), 13thx
Активность: 0.20
Статус: Участник

Создано: 08 ноября 2008 16:25 · Поправил: Модератор
· Личное сообщение · #20

Поменяйте пожалуйста в названии темы слово "Помогити" на "Помогите".

исправил



Ранг: 19.4 (новичок)
Активность: 0.010
Статус: Участник

Создано: 09 ноября 2008 20:54
· Личное сообщение · #21

Научился распаковывать программы, запакованные EXECryptor по вашим статьям, теперь
хочу научиться снимать триал. Все мои попытки разобраться с триалом EXECryptor’a, потерпели
не удачу. Я так понял, чтобы снять триал с программы, которая была запакована EXECryptor,
нужно найти начало функции EC_GetDate, как написано в статье от kioresk, с чем собственно у меня и проблема не как не получается её найти в коде программы.

Всё что у меня получилась найти это только, инструкцию setnz byte ptr [ebp-1] (0F 95 45 FF).
Пробовал также найти начало функции EC_GetDate, по ответу ToBad , железный бряк на API FileTimeToDosDateTime, который у меня не срабатывает, иле Trace into от инструкций setnz byte ptr [ebp-1], с этим у меня тоже не что не получилось, OLLYDBG не до конца трассирует код, появляется окно.

После чего OLLYDBG прекращает трассировку.
У меня вопрос, как найти начало функции EC_GetDate, если какой ни будь универсальный способ поиска начало функции EC_GetDate.

р.s Прошу проcщения у Модераторов данного форума, за создания рения мною темы в разделе для новичков. Пользуясь поискам по форуму он, меня, не привел, к этой теме.
Позже я в той теме, когда разберусь с триалом EXECryptor, выложу своё видео по распаковки EXECryptor.




Ранг: 154.2 (ветеран), 66thx
Активность: 0.080
Статус: Участник
REVENGE Crew

Создано: 10 ноября 2008 11:39
· Личное сообщение · #22

An_ton пишет:
У меня вопрос, как найти начало функции EC_GetDate, если какой ни будь универсальный способ поиска начало функции EC_GetDate.


Конечно есть, просто никто об этом не писал, хотя сложного ничего в этом нет.
Крипторовские API очень просто найти, для этого достаточно взять криптор, посмотреть SDK, защитить какой-нибудь пустой проект и посмотреть внимательно на то, что получится в итоге (периодически подглядывая в SDK).

А вот чтобы пойти дальше — понадобиться ДеВМ, который на паблике пока выкладывал только VolX (и то ограничив доступ к нему).

An_ton пишет:
Позже я в той теме, когда разберусь с триалом EXECryptor, выложу своё видео по распаковки EXECryptor.

Чтобы разобраться с криптором, надо изучать как он работает — иначе ты будешь просты долбиться непонятно куда. А от видео вообще нет никакого толка, и об этом уже сто раз писали на этом форуме.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 10 ноября 2008 12:25
· Личное сообщение · #23

Можно еще проще, Maximus писал в ветке по криптору на что поставить бряк в NTDLL и что пропатчить чтобы заморозить триал, даже искать ничего не надо, работы на 5 минут максимум.

-----
Yann Tiersen best and do not fuck



 eXeL@B —› Протекторы —› Помогите понять работу триала (EXECryptor)
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати