Понимаю, вопрос очень нубский и сотню раз обсуждался, но. Есть программа на Дельфях, она проверяет дату при запуске и, если она за какой-то границей (граничной даты нет точной), то почти никакие функции программы не работают, если же откатить сис. дату - не работают только пара вещей, и те вылетают с ошибкой (программа работает с базой, видимо ошибка из-за несовпадения текущей даты и даты последних изменений в базе) вопрос - как обойти проверку при запуске? может, можно как-то подменить сисколл? читал статьи, читал мсдн на эту тему - не разобрался =( обидно бросать прогу, потому что многое уже обошел (проверка на имя машины, ключ в реестре, настройки окружения некоторые...) прогу саму могу выложить, если надо.
В самом наипростейшем случае, нужно пошерстить код на предмет обращения к АПИшкам типа GetLocalDate. И если где-то в окрестностях этого вызова будет код "для отключения всех функций" - то тупо заменить вызов на, скажем, присвоение результату некоего заведомо устраивающего значения (скажем, даты рождества Христова там, итп %-D).
Swat2k там действительно гуано, как это не прискорбно =( Clerk у тебя мыло в профиле закрыто, в любом случае на обменник лить... минут через 10-15 линк выложу
DEEP к сожалению, асм - не мой конек =( статьи по Олли читал, но не разобрался до такой степени. Прошерстить код на обращение к АПИ - чем? СофтАйс? В олли смотрел - не нашел, но плохо смотрел, наверное)
http://omploader.org/vbzJu md5: c5525ad95dab3090c6ecbf5612a341b0 SPlus.rar в архиве - полный комплект, вот прям так она и работала =) помимо этого есть базы на сервере. В них, кстати, был найден левый файл, который программа дергала, в нем ключи какие-то. Дергала она не каждый запуск (хотя запускали из архива без модификаций инишек и прочего и с разных машин) Да, в ИНИ есть дата текущая и ран-каунтер. Их тоже меняли, по отдельности - не спасает, с системной датой - привет глюки. Да, то, что екзешник сжатый - знаю, перед ковырянием расжимал ... Заранее спасибо =)
Повеселила string по адресу 004D7DDC ) , а так прога у меня не запускается Помоему прога чекает не только дату , но и время. Проверка начинается в 0040EA44 ?
004D7E7C=splus.004D7E7C (ASCII "WARNING! This program was compiled with an unregistered version of LMD-Tools and will only run in the Delphi-IDE. For further informations please contact LMD Innovative Auf den Huetten 18, 57076 Siegen, Germany Internet
Я скачать не могу, бряки ставь на все апи/нтапи получения даты. Аппаратную точку останова на чтение UsSharedData.SystemTime.
У меня даже до проверки даты не доходит , так что bp немогу поставить . В основном орентируюсь на дизасам , но он мало что даст...
arre В процедуре открытия главной формы Main нет ничего за исключением упоминания одного из флажков ZZZ2 (адрес = 0x5A78A4), который потом будет проверяться во многих местах (есть и еще один флажок ZZZ1 (адрес = 0x5A7A09)). Код (Text): Main.Create { Self.MarketUnCheckExecute; ExeName := ExtractFilePath(Application.ExeName); Self.Visible := false; try { Self.MainSession.PrivateDir := 'C:\Windows\Temp\'; try { if Self.MainSession.Active { Self.MainSession.Close; Self.MainSession.Open; } } except { Self.Close; } Self.MainSession.Active := true; AliasNames := TStringList.Create; Self.MainSession.AliasNames(AliasNames); SolarisPath = ''; AliasParams := TStringList.Create; if AliasNames.IndexOf('solaris') <> -1 { Self.MainSession.AliasParams('Solaris', AliasParams); SolarisPath := AliasParams.Values['path']; Self.MainSession.Close; Self.MainSession.NetFileDir := SolarisPath; NetFileDir := SolarisPath; Str := sub_445758(NetFileDir, 1); if Str <> '\' { NetFileDir += '\'; } Self.MainSession.Open; } AliasParams.Destroy; Self.MainTable.DatabaseName := ExeName; Self.MainTable2.DatabaseName := ExeName; } except { ZZZ2 := 0; Self.Close; } Self.Visible := true; } Похоже собака зарыта в процедуре открытия формы Settings (адрес = 0x582F24). В частности, по адресу 583BF0 стоит вызов динамического метода Main.VeryfyRegExecute (Чувствуется, специально исказили название, хочется написать VerifyReg). Этот метод находится по адресу 59b360, и там собственно выставляется значение флажка ZZZ1. ЗЫ О результатах скажу позднее.
Продолжение. Упомянутая Main.VeryfyRegExecute вызывает Main.LMDSysInfo1 (тип TLMDSysInfo, о котором косвенно речь шла в первых топиках). Вызовы TLMDSysInfo@GetCurrentUser(cmd: Integer) возвращают различную информацию, в частности, время и текущего пользователя. Время сравнивается со значением, которое вернула функция Date и в зависимости от результатов проверки флажок ZZZ1 обнуляется (а должен быть 1). ЗЫ Меня, правда, смутила строка (топики 10 и 12), но попробовать подпачить можно. И, кстати, естественно нужно править уже корректно распакованный файл.