![]() |
eXeL@B —› Основной форум —› Обход защиты HASP HL |
Посл.ответ | Сообщение |
|
Создано: 06 декабря 2005 09:59 · Личное сообщение · #1 Помогите пожалуйста новичку. Борюсь с защитой HASP HL для USB. Меня не интересует эмуляция. Я ломаю конкретную версию программы. Для профессионала, как мне кажется, случай элементарный. Ключ имеется. Программа не запакована. Точно известно, что проверка выполняется только при старте программы. Ранние версии ломались легко: закрывал глаза на все обращения к ключу, а в конце обрубал процедуру выхода из проги, и прога продолжала работать. В новой версии появилось что-то вроде многоуровневой защиты. Если перепрыгивать через проверку ключа, прога запускается, но заблокированы все пункты меню, связанные с работой документов. Трассировкой я выяснил, где находится код считывания с ключа, и участок кода, где происходит проверка данных. Взависимости от них несколько циклов работают по разному. Видимо в процессе их работы и инициализируются меню. Пробовал вырезать этот код. После этого меню блокировались даже с ключем. Значит, я прав. Все данные с ключа пишутся в сегмент данных. А во время проверки считываются некоторые переменные оттуда. В цикле проверки эти переменные сравниваюся и влияют на работу проги. Пробовал писать в эти переменные то, что прога хочет увидеть, но после пробегания цикла прооисходит Access Violation по какому-то запредельному адресу. Видимо, я нарушаю структуру сегмента данных, когда вручную меняю переменные. Я пользуюсь Olly и думаю для данной цели этого достаточно. Извините, что так долго объяснял. Очень нужна помощь. Что дальше делать? Заранее благодарен. ![]() |
|
Создано: 06 декабря 2005 10:18 · Личное сообщение · #2 |
|
Создано: 06 декабря 2005 13:19 · Личное сообщение · #3 Меня не интересует работа с запросами к ключу, мне всего лишь необходимо мониторить изменения в сегменте данных после процедуры обращений к ключу. И можно ли как то определить, какие именно переменные влияют на работу программы. Похоже их не так уж много. Так как сам код проверки данных с ключа и инициализации менюшек не большой(относительно). ![]() |
|
Создано: 06 декабря 2005 13:26 · Личное сообщение · #4 |
|
Создано: 06 декабря 2005 13:32 · Личное сообщение · #5 |
|
Создано: 06 декабря 2005 13:40 · Личное сообщение · #6 |
|
Создано: 06 декабря 2005 13:54 · Личное сообщение · #7 |
|
Создано: 06 декабря 2005 14:03 · Личное сообщение · #8 |
|
Создано: 06 декабря 2005 14:06 · Личное сообщение · #9 |
|
Создано: 06 декабря 2005 14:07 · Личное сообщение · #10 |
|
Создано: 06 декабря 2005 14:17 · Поправил: TOG · Личное сообщение · #11 Для ольки найди плагин например - IsDebuggerPresent, там есть ф-я Dumper. Вводиш оффсет и сайз своей секции данных и дампишь ее в файл. Потом в WinHex или еще чем ты там пользуешься вставляй ее на место старой секции. Если в твоем файле она неинициализирована, т.е. размер равен 0, придется секции малость подвигать. плагин тут на сайте есть - скачать - дополнения ![]() |
|
Создано: 06 декабря 2005 14:25 · Личное сообщение · #12 |
|
Создано: 06 декабря 2005 14:29 · Личное сообщение · #13 |
|
Создано: 06 декабря 2005 14:34 · Личное сообщение · #14 |
|
Создано: 06 декабря 2005 14:35 · Личное сообщение · #15 |
|
Создано: 06 декабря 2005 14:45 · Личное сообщение · #16 |
|
Создано: 06 декабря 2005 15:05 · Личное сообщение · #17 Я воспользовался плагином OllyDump. Снял дамп всего процесса с ключом и без ключа. В результате у меня два exe'шника с абракадаброй. Различия я конечно нашел, но во-первых их очень много, а во-вторых не понятся по каким адресам эти различия. Можно ли как-нибудь снятый дамп во время работы с ключом, потом восстановить при работе без ключа. И как это сделать? Или объясните пожалуйста, как разобраться с самим дампом. ![]() |
|
Создано: 06 декабря 2005 15:17 · Личное сообщение · #18 дамп с ключом и без не лучшее решение... рекомендую поставить пару бряков до и после проверки ключа тоесть получить дамп до проверки ключа и после. далее далее определяеш где именно произошли изменения потом можеш делать эмуль на базе того кода что я выслал. все что тебе нужно будеть это перенаравить вызов проверки на свою длл и оттуда пропатчить все так как с ключом однако это сработает только если нет циклического обращения к ключу а только на этапе инициализации. по поводу выявления адресов различия используй любую утилитку сравнения файлов и х-вьюв там ты сможеш указывать смещение относительно начала файла а он тебе покажет где это будет в памяти. ----- power and the money money and the power ![]() |
|
Создано: 06 декабря 2005 15:34 · Личное сообщение · #19 TVS пишет: В результате у меня два exe'шника с абракадаброй. Различия я конечно нашел, но во-первых их очень много, а во-вторых не понятся по каким адресам эти различия. Уважаемый TVS , я конечно могу ошибаться, но судя по твоим вопросам ..... даже если ты и отломаешь проверку ключа, как ты патч-то делать собираешься ? ![]() |
|
Создано: 06 декабря 2005 15:38 · Личное сообщение · #20 |
|
Создано: 06 декабря 2005 15:50 · Личное сообщение · #21 |
|
Создано: 06 декабря 2005 16:04 · Личное сообщение · #22 |
|
Создано: 06 декабря 2005 16:08 · Личное сообщение · #23 |
|
Создано: 06 декабря 2005 21:06 · Личное сообщение · #24 У меня таже проблема, прога с hardlock ключом, тоже блокировка меню, когда запускаешь прогу без ключа в обход всех проверок, только я нашел место в проге где программа передает данные драйверу защиты, через функцию deviceiocontrol перед вызовом функции прога генерит структуру с даными, после вызова функция читает из этой структуры, туда кстати заносятся данные с ключа, только вот ручной возврат нужных значений приводит тоже к вылету проги в аут, таких буферов куда заносятся данные может и несколько я нашел уже три и все разных размеров. Месяц уже ковыряю, а прога тоже тупая использует только три функции основных, хотя была конвертом защищена. ![]() |
|
Создано: 06 декабря 2005 23:11 · Личное сообщение · #25 Кстати, забыл сказать, у меня проблема решилась вроде, достаточно занопить все выводы нагов и отключить вызовы процедуры обмена данными с ключом, да еще подменить структуру hardlock которая служила буфером для обмена данными проги с ключом. После этого разблокировались все меню, теперь осталось потестить прогу на наличие скрытых глюков, то есть просто плотно с ней по работать. ![]() |
|
Создано: 07 декабря 2005 16:28 · Личное сообщение · #26 |
![]() |
eXeL@B —› Основной форум —› Обход защиты HASP HL |