Как найти функцию сравнения варемени?

Тема в разделе "WASM.BEGINNERS", создана пользователем studiodv, 27 дек 2005.

  1. studiodv

    studiodv New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    10
    Адрес:
    Ukraine
    Есть триальная версия программы, в которой проверяется текущее время (на сервере в инете) с датой, установленной разработчиком. Подскажите, как найти место, в котором это происходит?
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Где хранится дата установленная разработчиком, в инете?
     
  3. studiodv

    studiodv New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    10
    Адрес:
    Ukraine
    ммм... я думаю (скорее всего) на сервере, к которому обращается программа
     
  4. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Т.е. скорее всего прога получает время твоего компа (строки типа GetLocalTime\GetSystemTime есть в проге?) и сверяет с серверным? Если переводить часы назад, то помагает? Имхо, думаю твоя прога отсылает текущее время на сервер, тот смотрит если оно не меньше настоящего и лицензия позволяет ещё работать - то дает добро, иначе сервер не возвращает нужных данных. Без сервера вообще польза есть от проги?
     
  5. studiodv

    studiodv New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    10
    Адрес:
    Ukraine
    Да есть GetLocalTime, но открутка времени не помогает. Ни в биосе, ни в виндовсе, ни после переустановки.

    Поэтому я и пришел к выводу, что программа сравнивает какое-то время, которое задано в самой программе с временем на сервере в инете
     
  6. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Она может дату установки один раз записать (в реестр например) и все, а потом просто сверять текущее время чтобы не выходило за trial-период. Надо узнать к чему привязывается и для чего сервер, по твоим словам не совсем понятно, обычно на сайте проге в саппорте такие вопросы в фак выносят (ака "поменял материнку, почему моя программа перестала работать?") и авторы сами рассказывают где хранится дата, подготовь более развернутый ответ (вернее вопрос), trial или demo, каков файл\формат лицензий и т.д., в самой проге дату обычно не хранят
     
  7. studiodv

    studiodv New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    10
    Адрес:
    Ukraine
    Это самописная прога, у нее нету даже сайта.

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

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    В принципе тогда автор может каждому клиенту вшивать конкретную дату в сам екзешник, а сверять её с серверной, так сразу сказать сложно. Если бы у тебя была рабочая лицензия, т.е. время ещё позволяло работать, то без сервера прога работала бы? или кричала бы что триальный период закончился?
     
  9. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    И чего это вы на сервере зациклились ?! ;)



    Кроме реестра дата установки может храниться: 1) в самом exe (записывается при установке самопальным инсталлятором), 2) во вспомогательных файлах ini,key,dat и т.п., 3) определяться по дате создания exe или вспомогательных файлов, 4) в экзотических "потаенных" местах (например, в разрядах миллисекунд времени создания файлов и т.п.)

    Для защиты от перевода часов контролируется последняя пройденная дата: либо 1) осуществляется запись в реестр, ini или в потаенные места, либо 2) контролируется время последнего изменения файлов (своего же ini или системных логов, датов и т.п.)



    Искать проверку можно по разному, а вот с чего начать - дело вкуса и "нюха". Если защита тупая и сосредоточена в одном месте, то можно по простому найти проверку или по вызову запроса текущего времени или по вызову сообщения (найти строку сообщения или сам вызов). Ну а если более хитрая, то придется повозиться и пробовать разные варианты. Например, прога может первым делом проверять не текущее время, а разницу между временем последнего изменения и временем создания ini-файла. Поэтому возможно лучше пытаться раскручивать с конца - с поиска строки и вывода сообщения.
     
  10. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    Если смысл проги заключается только в получении данных от сервера, то логично предположить вариант отсылки клиентом своего id (не обязательно время!), а сервер по нему смотрит: - если trial у этого id вышел, то писец (ничего не дам и не скажу)



    И ничего мы тут не сделаем! Т.е. да, это дело "нюха", надо сперва исключить этот вариант, тогда можно тратить время на разбор всех остальных
     
  11. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Во-первых, насколько я понял из путанных объяснений studiodv, идея с сервером это не более чем его предположение. Во-вторых, не понятно как ты собираешься исключать этот вариант. Я ж и предлагаю попробовать раскрутку с конца (с вывода сообщения) - тогда хоть что-то прояснится, т.к. кроме описанного тобой "писца" не исключены и варианты простых наивных проверок на стороне клиента - "у меня посылка для вашего мальчика, но я ее вам не дам.." ;)
     
  12. studiodv

    studiodv New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    10
    Адрес:
    Ukraine
    Проясняю ситуацию. Программа обращается на сервер в инетренете, на котором проверяет логин/пароль, заходит в аккаунт и проверяет внутри аккаунта наличие ссылок, за которые начисляются бонусы. Если ссылки есть, она их кликает и бонусы засчитываются.

    На компьютере информации о первой регистрации программы точно не хранится, поскольку даже после полной переустановки системы, она отказалась запускаться с сообщением о том, что ознакомительный период закончен.

    Программа однозначно лезет в инет для сверки даты.
     
  13. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69
    Если это действительно так, то нужно искать не GetLocalTime, а то что за этим следует (например, код выводящий сообщение о том, что триальный период закончен). Думаю она (программа) вызывает GetLocalTime, отсылает данные серверу, и ждёт дальнейших указаний. Вот этот момент и надо ловить.
     
  14. studiodv

    studiodv New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    10
    Адрес:
    Ukraine
    Нет, тут не сервер решает что делать программе. Тут сам программа сравнивает время и, в зависимости от проверки передает действие на выполнение программы либо на вывод сообщения, что ознакомительный период закончен.
     
  15. studiodv

    studiodv New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    10
    Адрес:
    Ukraine
  16. studiodv

    studiodv New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    10
    Адрес:
    Ukraine
    глюк
     
  17. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69
    Но решение-то она принимает после ответа сервера. Вообще невозможно что-то конкретное сказать не видя самой программы. Но в общем виде, думаю, нужно делать так:

    1. Ищем код, вызывающий окно с сообщением об истечении времени

    2. Ищем откуда он вызывается, по какому условию, и по какому условию программа благополучно запускается

    3. Исправляем
     
  18. studiodv

    studiodv New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    10
    Адрес:
    Ukraine
    Эххх, знать бы ГДЕ искать код, вызывающий окно.

    Задача усложняется тем, что само сообщение не хранится в исходном виде.
     
  19. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69
    А что, оно с сервера скачивается? В любом случае окно есть. А что за окно вообще? MessageBox, диалог из ресурсов, обычное окно, или "обычное окно из ресурсов аля Делфи"? Если второе или четвёртое - ищи какой у него идентификатор в ресурсах, и ищи где он в коде появляется. Если первое или третье - ищи соответствующие функции, и смотри, похожи они по параметрам на то что нужно или нет. Если текст на окне появляется динамически, то рядом должны быть SendMessage/SendDlgItemMessage параметром WM_SETTEXT (0Ch), или SetWindowText.
     
  20. studiodv

    studiodv New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    10
    Адрес:
    Ukraine
    Sl4v4

    Слишком часто повторяются эти функции.. тут, наверное нужен индивидуальный подход :dntknw:

    Я б выложил программу, но она занимает больше 50 кб. Поэтому, если интересно - могу кинуть на емыл.