_ __________ _ ______ __________ _ __________ __/ _______________ _ __/ ___ \/ ________ _ ---------. _ ___ _/__/ _____) __________ \ / \zACK | / ___/_________ __/ _______/_______\/ \ | / / / /_____ / \___ / .......... ........... /______ / __ _ /_________/ /___.::::::::::: ::::::::::::: /_________/ /_________/ __::::::_____ :::' | ::::::...... .:::' : · T · E · A · M · 5 · 3 · `:::::::::::: ..:::::::: | ::: ::: `--------------------------->> >> >> .:::::: ::: .:::::: ::: TUTORiALS.PACK.NUMBER.ELEVEN ::::::: ::: ::::::: ::: ::::::::::::: ::::::::::::: `::::::::::' `::::::::::' TOAD for SQL Server v1.09f Автор......: ManSun Перевод....: NightCat / TEAM-53 Инструменты: Hex-редактор, UnPECompact 1.32 by yoda Инфа.......: Лучше б вам понимать SQL :) "TOAD for SQL Server" - это очень хороший и мощный менеджер баз данных и написания запросов в SQL Server. Программа вообще-то Freeware, но только в течение 60 дней, затем нужно снова идти на страничку разработчиков и качать новую версию, которая будет работать следующие 60 дней. Я так понимаю, что это сделано для того, чтобы люди почаще обновляли версию программы. Но зачем нам качать новую версию, если можно обойти это ограничение с помощью hex-редактора? За дело! Мы видим сообщение "Product has expired. Please return to www.toadsoft.com for an update". Как показывает "PEiD", программа запакована PE Compact, который без проблем распаковывает 'UnPECompact 1.32 by yoda'. После распаковки открываем екзешник в hex-редакторе и ищем вот такой запрос: select DATEDIFF(day, CONVERT(datetime, '1900-01-01', 110), getdate()).......E... Product has expired. Please return to www.toadsoft.com for an update Если кто-то не знает SQL, то в хелпе SQL Server'a вы без проблем узнаете, что означает этот короткий запрос. Функция DATEDIFF возвращает разницу (в днях) вычитания даты 1900-01-01 от даты настоящей. Как обойти это ограничение? Ну, есть несколько способов, можно, например, вместо 1900-01-01 вписать другую дату, но для того, чтобы всё было универсально нужно модифицировать всё так, чтоб в любой ситуации разность между датами была равна нулю. Или чтобы сравнивались одинаковые даты. :) Внизу оригинал и модифицированный вариант ;). Оставшееся свободное место надо забить пробелами в Hex-редакторе (20 hex). Оригинальное: select DATEDIFF(day, CONVERT(datetime, '1900-01-01', 110), getdate()) Модифицированное: select DATEDIFF(day, getdate(), getdate()) Вот и всё, простой патч кода ;) >>>[Greets]<<< ALL I.C.T. mEmBeRz -what's up _TeStON_ -my love :-* cybult -hello genius YOU! - ;-> Если есть вопросы, замечания - пишите на mansun[at]o2.pl -----------------------------------------------------------------------------EOF