Сейчас на форуме: YDS, _MBK_, user99, ManHunter (+4 невидимых)

 eXeL@B —› Основной форум —› Обход защиты HASP HL
Посл.ответ Сообщение

Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2005 09:59
· Личное сообщение · #1

Помогите пожалуйста новичку. Борюсь с защитой HASP HL для USB. Меня не интересует эмуляция. Я ломаю конкретную версию программы. Для профессионала, как мне кажется, случай элементарный. Ключ имеется. Программа не запакована. Точно известно, что проверка выполняется только при старте программы. Ранние версии ломались легко: закрывал глаза на все обращения к ключу, а в конце обрубал процедуру выхода из проги, и прога продолжала работать. В новой версии появилось что-то вроде многоуровневой защиты. Если перепрыгивать через проверку ключа, прога запускается, но заблокированы все пункты меню, связанные с работой документов. Трассировкой я выяснил, где находится код считывания с ключа, и участок кода, где происходит проверка данных. Взависимости от них несколько циклов работают по разному. Видимо в процессе их работы и инициализируются меню. Пробовал вырезать этот код. После этого меню блокировались даже с ключем. Значит, я прав. Все данные с ключа пишутся в сегмент данных. А во время проверки считываются некоторые переменные оттуда. В цикле проверки эти переменные сравниваюся и влияют на работу проги. Пробовал писать в эти переменные то, что прога хочет увидеть, но после пробегания цикла прооисходит Access Violation по какому-то запредельному адресу. Видимо, я нарушаю структуру сегмента данных, когда вручную меняю переменные. Я пользуюсь Olly и думаю для данной цели этого достаточно. Извините, что так долго объяснял. Очень нужна помощь. Что дальше делать? Заранее благодарен.



Ранг: 146.7 (ветеран), 1thx
Активность: 0.070
Статус: Участник

Создано: 06 декабря 2005 10:18
· Личное сообщение · #2

TVS
насколько я в курсе, то существут только табличные эмули hasp hl (и то не много и в привате)...
а вот если обращений к ключу не много, то можно отламать битхаком, тока внимательнее нуна быть...



Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2005 13:19
· Личное сообщение · #3

Меня не интересует работа с запросами к ключу, мне всего лишь необходимо мониторить изменения в сегменте данных после процедуры обращений к ключу. И можно ли как то определить, какие именно переменные влияют на работу программы. Похоже их не так уж много. Так как сам код проверки данных с ключа и инициализации менюшек не большой(относительно).



Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 06 декабря 2005 13:26
· Личное сообщение · #4

дык внедри дллку похукай вызовы к ключу и мониторь на здоровье

-----
power and the money money and the power




Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2005 13:32
· Личное сообщение · #5

Я же говорю я начинающий в этом деле. Можно попроще или поподробнее?



Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 06 декабря 2005 13:40
· Личное сообщение · #6

есть у меня тутор по этому делу с рабочим примером правда вот коментов там кот наплакал (времени нет) но если ты рубиш в асме то я думаю разберешся что к чему. если интересно кинь мне в приват свое мыло я тебе сброшу.

-----
power and the money money and the power




Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2005 13:54
· Личное сообщение · #7

А каким образом вообще могут блокироваться меню? Меню там собственное, поэтому такие проги как WinCrack для разблокировки не действуют.




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 06 декабря 2005 14:03
· Личное сообщение · #8

TVS пишет:
Ключ имеется.


1. Запустил с ключем, дамп секции данных.
2. Впихивай ее в свой ехе-шник вместо старой секции.
3. Делай джамп в обход кода который читает с ключа. Либо фикси все попытки записи в секцию данных.
Т.о. секция данных будет девственной, что тебе и нужно.




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 06 декабря 2005 14:06
· Личное сообщение · #9

TVS пишет:
А каким образом вообще могут блокироваться меню?


Не обрабатыват события типа WM_LBUTTONUP и тд.



Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2005 14:07
· Личное сообщение · #10

Именно об этом я и говорю, большое спасибо. Но не могли бы вы поподробнее объяснить как это реализовать, какой инструмент подойдет. Я предполагаю, что Olly здесь уже не поможет.




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 06 декабря 2005 14:17 · Поправил: TOG
· Личное сообщение · #11

Для ольки найди плагин например - IsDebuggerPresent, там есть ф-я Dumper. Вводиш оффсет и сайз
своей секции данных и дампишь ее в файл. Потом в WinHex или еще чем ты там пользуешься
вставляй ее на место старой секции. Если в твоем файле она неинициализирована, т.е. размер
равен 0, придется секции малость подвигать.

плагин тут на сайте есть - скачать - дополнения



Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2005 14:25
· Личное сообщение · #12

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



Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 06 декабря 2005 14:29
· Личное сообщение · #13

сравни до и после! и сохраняй только то что изменилось. потом смотри логи. все просто.

-----
power and the money money and the power





Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 06 декабря 2005 14:34
· Личное сообщение · #14

TVS пишет:
А какую секцию сохранять, неужели весь сегмент данных. Если бы я знал, куда именно пишутся данные с ключа, проблемы бы не было.


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



Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2005 14:35
· Личное сообщение · #15

Сравнивать весь сегмент данных? А как снять дамп со всего сегмента данных? Можно по пунктам? У меня регистр DS=0023. А какой указывать размер? Извините за тупизну? Но я совсем недавно начал этим заниматься, а спросить о таких вещах не у кого.



Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 06 декабря 2005 14:45
· Личное сообщение · #16

ага понял... самый простой пример без заморочек. береш перед процедурой проверки ключа дампиш всю память процесса и дампиш после сравниваеш дампы и видиш где изменения.

-----
power and the money money and the power




Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2005 15:05
· Личное сообщение · #17

Я воспользовался плагином OllyDump. Снял дамп всего процесса с ключом и без ключа. В результате у меня два exe'шника с абракадаброй. Различия я конечно нашел, но во-первых их очень много, а во-вторых не понятся по каким адресам эти различия. Можно ли как-нибудь снятый дамп во время работы с ключом, потом восстановить при работе без ключа. И как это сделать? Или объясните пожалуйста, как разобраться с самим дампом.



Ранг: 79.6 (постоянный)
Активность: 0.060
Статус: Участник

Создано: 06 декабря 2005 15:17
· Личное сообщение · #18

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

-----
power and the money money and the power





Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 06 декабря 2005 15:34
· Личное сообщение · #19

TVS пишет:
В результате у меня два exe'шника с абракадаброй. Различия я конечно нашел, но во-первых их очень много, а во-вторых не понятся по каким адресам эти различия.


Уважаемый TVS , я конечно могу ошибаться, но судя по твоим вопросам ..... даже если ты
и отломаешь проверку ключа, как ты патч-то делать собираешься ?



Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2005 15:38
· Личное сообщение · #20

Что посоветуешь?




Ранг: 84.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 06 декабря 2005 15:50
· Личное сообщение · #21

TVS пишет:
Что посоветуешь?


Почитай на этом сайте статьи про структуру исполняемых файлов. Чтобы они для тебя абракадаброй уже не казались.



Ранг: 146.7 (ветеран), 1thx
Активность: 0.070
Статус: Участник

Создано: 06 декабря 2005 16:04
· Личное сообщение · #22

TVS
давай начнем с того, запакована ли прога конвертом хаспа (наличие секции .protect в модуле)...?



Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 декабря 2005 16:08
· Личное сообщение · #23

нет



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

Создано: 06 декабря 2005 21:06
· Личное сообщение · #24

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



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

Создано: 06 декабря 2005 23:11
· Личное сообщение · #25

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



Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 декабря 2005 16:28
· Личное сообщение · #26

AlexBat
Можно поподробнее. У меня никаких нагов не выводится, а происходит выход из программы. Его я давно занопил, и прога продолжает работать, но без меню. Осталось разобраться с менюшками. Скажи, как подменять структуру hardlock...


 eXeL@B —› Основной форум —› Обход защиты HASP HL
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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