Сейчас на форуме: (+8 невидимых) |
eXeL@B —› Основной форум —› Вопрос по конвертации дампа и эмуляции HASP HL |
. 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >> |
Посл.ответ | Сообщение |
|
Создано: 07 ноября 2007 14:53 · Поправил: ToBad · Личное сообщение · #1 О ключах масса информации, читал много и везде, накачал много эмуляторов и дамперов. Голова кругом идёт. Чем больше информации, тем сложнее выделить правильный подход. Прошу подсказать правильный путь. Есть программа, вышла новая версия. Как я понял в предыдущей был HASP4. Делал всё так: Снимал дамп с помощью h4dmp, получал один файл, далее UniDumpToReg и эмулировал с помощью haspflt.sys идущего с Компасом 7. Новая версия говорит что не найден HASP HL. При подобном со старой версией способе эмулирования программа ключ находит, но ругается на крипто алгоритмы. Ошибку я понял, и стал использовать h5dmp для снятия дампа. Получил 2 файла. Теперь не очень пойму чем их оба hasp.dmp и hhl_mem.dmp конвертировать в reg и чем потом эмулировать. Смотрел эмуль на основе hardlock.sys для v_net который вроде работает только 20 минут, но с ним ключ вообще не найден… Посоветуйте пожалуйста конвертор и эмулятор. |
|
Создано: 07 ноября 2007 21:28 · Личное сообщение · #2 Понимаешь в чем дело... HASP4 он мулился УНИВЕРСАЛЬНО. Для него известны все алгоритмы. Поэтому достаточно с него снять дамп и скормить его правильному эмулятору. Теперь рассмотрим HASP HL. Ключу всего года 2. Алгоритмы этого ключа не вскрыты. Что дает h5dmp? Да просто содержимое памяти ключа (и только). Если прога юзает новые функции этого ключа, то выход один - табличный эмуль (собирается табличка вопросов/ответов, которые используются прогой и засовывается в муль). Встает резонный вопрос - как сделать эту табличку. Табличка формируется ручками с использованием логгера HASP HL, для надежности лучше распотрошить прогу в IDA - вытянуть из нее все возможные запросы и прогнать через ключ. Возникает еще один вопрос - а какой муль использовать. Ну тут совет один - нет ничего лучше самостоятельно написанного муля. И не будет возникать вопросов, как туда табличку запихнуть. |
|
Создано: 08 ноября 2007 18:38 · Личное сообщение · #3 Если делать примитивный логгер и эмуль самому, например программа с драйверами будет работать только одна, я не буду учитывать всех возможностей ключа, а буду сохранять значения и подменять только для hasp_read(), hasp_decrypt(), hasp_encrypt(), hasp_login(). Я не умею писать драйвера или ставить хуки. Например я захочу найти и модифицировать файл из официальных драйверов где и есть точки входа в эти функции, приаттачить свою длл и сделать переходники в официальных функциях на свои, далее писать лог и выполнять оригинальные функции и снова логгировать либо эмулировать по уже готовой табличке. В какую сторону рыть ? С HASP HL SDK ознакомился. В каком файле живут все функции хаспа ? Может есть какие то шаблоны мулей или логгеров hasp hl на дельфи ? Ну и вообще, наверное многие делали так может есть готовые логгеры/эмули для hasp hl ? Вполне возможно, что подойдут ? Посоветуйте пожалуйста ! |
|
Создано: 08 ноября 2007 19:55 · Личное сообщение · #4 Логгер-монитор раз http://www.dongla.net/storage/dongles/haspmon32.zip Логгер-монитор два (чуть лучше ИМХО) http://www.dongla.net/storage/dongles/hasploger.zip Табличный эмулятор http://www.exelab.ru/f/files/1900_06.11.2007_CRACKLAB.rU.tgz |
|
Создано: 09 ноября 2007 13:56 · Личное сообщение · #5 |
|
Создано: 09 ноября 2007 14:14 · Личное сообщение · #6 |
|
Создано: 09 ноября 2007 15:58 · Личное сообщение · #7 |
|
Создано: 09 ноября 2007 19:01 · Поправил: digger70 · Личное сообщение · #8 |
|
Создано: 09 ноября 2007 19:21 · Личное сообщение · #9 Итак по порядку. Qtable & ATable есестно таблицы для вопросов и ответов... Любым удобным логером собирается инфа с hasp_encode(decode) и т.д. далее запросы последовательно один за другим ложаться как показано в примере - аналогично 1:1 делается таблица ответов. Либо данная таблица выдирается из тела файла - жертвы как ранее сказал многоуважаемый AlexVel. Все остальные опции и параметры муля - аналогичны стандартным чинговым - кто сомневается - ИДА вам в зубы и вперет потрошите муль!. "QTable"=hex: 01,4F,99,CB,FE,33,DC,25,05,E6,73,60,ED,16,F2,36, 20,58,C8,37,AA,4C,54,CF,F7,34,60,10,5F,0B,A7,EB, C3,D0,F8,CD,18,9A,4F,CA,00,C5,B3,F4,DF,1F,81,02, ..... "ATable"=hex: B1,C7,FD,28,8F,57,56,7C,F2,0D,B3,5E,6C,8A,B3,49, 2B,55,61,EE,7E,1B,BF,11,EF,C3,D4,12,94,09,16,C6, 33,3E,14,F1,5E,FD,B6,31,90,59,D9,BE,A8,DC,4C,62, E1,B9,89,0A,4B,3E,F7,41,DB,34,FB,19,DD,61,17,4C, .... |
|
Создано: 09 ноября 2007 20:14 · Личное сообщение · #10 Немного вот что не понятно. Это работает в дополнение к другому эмулю или по этим Q/A я полностью всё эмулирую ? То что было в reg файлах для эмуляции HASP4: SN, SecTable, NetMemory, Option, Data, EDStruct – уже не нужно ? Ну и ещё такой вопрос. Как известно encrypt и decrypt работают с областью памяти разной длины, и если мне логгер выдал такие Q/A: Q 333333
То как будет выглядеть reg файл ? "QTable"=hex:
Наверное в виду разной длинны QA лучше было использовать так: "QTable1"=hex:
|
|
Создано: 09 ноября 2007 21:29 · Личное сообщение · #11 |
|
Создано: 09 ноября 2007 22:04 · Личное сообщение · #12 |
|
Создано: 10 ноября 2007 12:42 · Личное сообщение · #13 ToBad пишет: То как будет выглядеть reg файл ? "QTable"=hex: 33,33,33,44,77,77,77,77,77 ..... "ATable"=hex: 31,31,31,55,88,88,88,88,88 Истину глаголишь.... ToBad пишет: То что было в reg файлах для эмуляции HASP4: SN, SecTable, NetMemory, Option, Data, EDStruct – уже не нужно ? Как это не нужно - таблицы вопросов - ответов - всеголишь способ обойти пока неизвестную ф-ию шифрования Так что все остальные параметры - так же необходимы. ToBad пишет: Наверное в виду разной длинны QA лучше было использовать так: "QTable1"=hex: 33,33,33 "ATable1"=hex: 31,31,31 "QTable2"=hex: 44 "ATable2"=hex: 55 "QTable3"=hex: 77,77,77,77,77 "ATable3"=hex: 88,88,88,88,88 Ну может быть и так проще кому то но ... посему ж тогда я видел реализации данных мулец со встроенными таблицами - и там разделение было всего лишь по длине вопроса/ответа - т.е. 3 таблицы 16,32,48 байт. |
|
Создано: 10 ноября 2007 13:49 · Личное сообщение · #14 на счет таблиц вопросов-ответов. Специально ганял ключ под логгером(от Satarona), в итоге при декрипте-энкрипте идут только блоки длиной 16,32,48 байт, независимо от того насколько большой блок идет на декрипт с самой проги. Остальные данные декриптов формирует сам драйвер ключа. Еще на счет остального дампа непонятки, например памяти ключа. При обращении с проги мы можем обратится к основной или лицензионной памяти ключа. В логгере же видно, что адреса этих блоков перекрываются, т.е. при считывании с лицензионной памяти адрес идет такой же как и для основной. Как же их тогда разделить в дампе для эмуля? |
|
Создано: 10 ноября 2007 13:55 · Личное сообщение · #15 |
|
Создано: 10 ноября 2007 14:26 · Личное сообщение · #16 sataron пишет: "ATable"=hex: 31,31,31,55,88,88,88,88,88 Истину глаголишь.... Тогда я вообще не понимаю… Вопросов стало больше чем ответов. Нам известно, что encrypt и decrypt работают с произвольным размером буфера данных и используют несколько алгоритмов. Вполне возможно, что при снятии лога Q/A будут такими: Q 33,44,55 A 34,45,56 Q 44 A 55 Q 66,77 A 88,99 Тогда табличка будет выглядеть так: "QTable"=hex: 33,44,55,44,66,77 "ATable"=hex: 34,45,56,55,88,99 Но что произойдёт когда будет выдан Q 44 ? Ответ будет 45, хотя по логике должен быть 55. Или я чего-то не догоняю ? |
|
Создано: 10 ноября 2007 14:34 · Личное сообщение · #17 |
|
Создано: 10 ноября 2007 15:04 · Личное сообщение · #18 |
|
Создано: 10 ноября 2007 15:04 · Личное сообщение · #19 digger70 пишет: А вот на счет нескольких алгоритмов - поясни свою мысль Это меня проглючило. Провёл паралель с Guardant. Да, в HASP HL как я понял нет выбора алгоритма, а минимальная длина буфера должна быть 6 байт. В таком случае врядле получится так, как я сказал, к тому же алгоритм AES. digger70 пишет: С проблемой запросов разной длинны и одинаковым префиксом боротся отчасти можно - укладывать вопросы ответы по возрастанию длинны Точно ! Это решение ! |
|
Создано: 10 ноября 2007 15:14 · Личное сообщение · #20 и еще вопрос по декриптам. в таблицы подставлять только запросы типа : <== HaspHL_decrypt: Input Data = 75 19 2D 6F | AC A3 A9 8D | C4 74 09 90 | C7 3C 12 43 ==> HaspHL_decrypt: Output Data = 96 8E 49 00 | 00 00 00 00 | CE 05 67 00 | 00 00 00 00 а запросы типа : <== HaspDecodeData: Input Data = 34 B6 78 E2 70 D8 D7 9A ==> HaspDecodeData: Output Data = 69 12 5F B9 05 55 D7 AC писать, или они будут обрабатываться с помощью EDStruct ? |
|
Создано: 10 ноября 2007 15:16 · Поправил: Tolkin · Личное сообщение · #21 |
|
Создано: 10 ноября 2007 15:35 · Личное сообщение · #22 |
|
Создано: 10 ноября 2007 15:41 · Личное сообщение · #23 |
|
Создано: 10 ноября 2007 15:42 · Личное сообщение · #24 |
|
Создано: 10 ноября 2007 15:46 · Личное сообщение · #25 ToBad пишет: HASP_HL_Programmers_Guide_Rus: hasp_decrypt() - размер (в байтах) дешифруемого буфера – минимально 6 байт. hasp_encrypt() - размер (в байтах) шифруемого буфера – минимально 16 байт. Опечатка ? Скорее всего да, так как в проге toolbox для работы с HaspHl длины буферов для этих фунок можно выставить только минимум с 16 байт |
|
Создано: 10 ноября 2007 15:53 · Личное сообщение · #26 |
|
Создано: 10 ноября 2007 15:58 · Личное сообщение · #27 |
|
Создано: 10 ноября 2007 16:00 · Личное сообщение · #28 |
|
Создано: 10 ноября 2007 16:03 · Личное сообщение · #29 |
|
Создано: 10 ноября 2007 16:05 · Личное сообщение · #30 |
. 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . >> |
eXeL@B —› Основной форум —› Вопрос по конвертации дампа и эмуляции HASP HL |