Показано с 1 по 10 из 49
Комбинированный просмотр
-
05.12.2022, 14:36 #1
- Регистрация
- 18.04.2018
- Адрес
- HP-Compaq DX2300 microtower PC
- Сообщений
- 253
- Сказал(а) спасибо
- 69
- Поблагодарили 1815 раз(а) в 395 сообщениях
Re: уни-патч для линукса и для макоси
прочитать SN и всю память ключа (в дампе она "Data") можно на любой ОС, где работает клиент изделия. Необходим тока дебагер:
1) SN ключа возвращается в ответе на вызов "Service 6: HaspID" для локального ключа, и "Service 46: HaspID" для сетевого ключа
2) память ключа изделие читает вызывая "Service 50: ReadBlock" для локального ключа, и "Service 52: ReadBlock" для сетевого ключа;
ждать (недолго - секунды) когда случится вызов соответствующего HASP Service (50 или 52) и поменять в стэке параметры на свои
скачать HASP4 Programmers Guide"кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"
-
15 пользователя(ей) сказали cпасибо:
Alf500 (09.12.2022), dobuza (06.12.2022), ilya.sh (12.12.2022), kelt44 (05.12.2022), navisal (05.12.2022), Nekii (20.08.2023), olegtelec (05.12.2022), redhat2020 (05.12.2022), root7 (20.01.2024), Serg2008t (06.12.2022), ura188 (13.12.2022), vomad (13.12.2022), vovashulga (22.01.2023), _BigB_ (05.12.2022), Сергей Новик (23.05.2023)
-
08.12.2022, 00:03 #2
- Регистрация
- 18.04.2018
- Адрес
- HP-Compaq DX2300 microtower PC
- Сообщений
- 253
- Сказал(а) спасибо
- 69
- Поблагодарили 1815 раз(а) в 395 сообщениях
Re: уни-патч для линукса и для макоси
маленький лик.без. на примере изделия 18-1563-win32:
версия платформы может быть любая (даже любая последняя) т.к. код HASP API не меняется (и не будет меняться - проект закрыт аж в 2006 году) - я уже ранее писал об этом в теме про унипатч.
про про функцию hasp( ): унипатч лечит либу в точке входа в функцию HASP_API_EP, у неё один входной параметр - ссылка на структуру, в которой уложены все параметры функции hasp( ). Если подняться по иерархии вызовов на 2 уровня, то увидим функцию wrap_HASP_API_Level_2, которая по своим входным 9-ти параметрам похожа на hasp( ) - вот её вызовы (не тело!) удобно дебажить, все её аргументы кладутся в стэк.
wrap_HASP_API_Level_2 вызывает wrap_HASP_API_Level_1, она вызывает HASP_API_EP.
в 32 битных версиях оригинальный код HASP API содержит много затруднений для неопытного кулхацкера (например, код HASP_API_EP начинается с команды EB FF т.е. JMP -1). Но если не заниматься его отладкой, а ограничиться отладкой вызовов wrap_HASP_API_Level_2, то всё будет в точности как в книжке "HASP4 Programmers Guide"
левый столбец - адреса в памяти (не изменяются от сессии к сессии т.к. ASLR ещё не используется в этой версии изделия)
Код:1BFA816E: FF75 20 PUSH DWORD PTR SS:[EBP+20] 1BFA8171: FF75 1C PUSH DWORD PTR SS:[EBP+1C] 1BFA8174: FF75 18 PUSH DWORD PTR SS:[EBP+18] 1BFA8177: FF75 14 PUSH DWORD PTR SS:[EBP+14] 1BFA817A: FF75 10 PUSH DWORD PTR SS:[EBP+10] 1BFA817D: FF75 0C PUSH DWORD PTR SS:[EBP+C] 1BFA8180: FF75 08 PUSH DWORD PTR SS:[EBP+8] 1BFA8183: 56 PUSH ESI 1BFA8184: 57 PUSH EDI 1BFA8185: E8 F6960C00 CALL backbas.1C071880 ; это call wrap_HASP_API_Level_2 здесь точка останова при остановке на точке останова смотрим в стэк: 0012F400 00000032 Service ID =0x32=50 Service 50: ReadBlock 0012F404 00000000 SeedCode 0012F408 00000066 PortNum 0012F40C 00003B6D Password1 0012F410 000070CB Password2 0012F414 0012F480 Param1 \ 0012F418 0012F484 Param2 | они являются указателями, значение смотреть по адресам ниже 0012F41C 0012F48C Param3 | 0012F420 0012F488 Param4 / 0012F424 6BE0E632 0012F428 044B5138 0012F42C 00003B6D 0012F430 0012F4D8 Pointer to next SEH record 0012F434 1C354460 SE handler 0012F438 00000000 0012F43C /0012F4E4 0012F440 |1BFB6425 RETURN to backbas.1BFB6425 from backbas.1BFA8130 0012F444 |00000066 0012F448 |00003B6D 0012F44C |000070CB 0012F450 |0012F480 0012F454 |0012F484 0012F458 |0012F48C 0012F45C |0012F488 0012F460 |6BE0E6EA 0012F464 |0447E310 0012F468 |00000005 0012F46C |0440CB58 0012F470 |0012F50C 0012F474 |00000000 0012F478 |000070CB 0012F47C |00000066 0012F480 |00000038 значение Param1 (Start Address, in words - initial HASP memory address for reading the block) 0012F484 |00000002 значение Param2 (Block Length, in words - The block size) 0012F488 |04404F50 значение Param4 (Buffer Offset - address of a program buffer т.е. это указатель на buffer, куда будет прочитано 2 слова {38-e и 39-е} из памяти ключа) 0012F48C |00000000 значение Param3
Последний раз редактировалось HPDX2300; 08.12.2022 в 00:08.
"кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"
-
20 пользователя(ей) сказали cпасибо:
Alf500 (09.12.2022), andrmit (09.12.2022), bnmbnmbnm (17.12.2022), garik-kg (15.12.2022), ilya.sh (12.12.2022), kelt44 (08.12.2022), navisal (08.12.2022), olegtelec (08.12.2022), PaIIItet (08.12.2022), redhat2020 (12.02.2023), rednomads (11.12.2022), Renzes (13.12.2022), root7 (20.01.2024), Serg2008t (08.12.2022), ura188 (13.12.2022), vovashulga (22.01.2023), wlion (08.12.2022), zed_ds (13.12.2022), _BigB_ (08.12.2022), Сергей Новик (23.05.2023)
Похожие темы
-
как скачать файл с линукса на виртуальную машину
от dafniya в разделе LINUXОтветов: 1Последнее сообщение: 07.02.2012, 23:43 -
Патч для Warcraft III 1.26 rus
от GHoSt444 в разделе Игры (games)Ответов: 0Последнее сообщение: 30.06.2011, 18:18 -
Патч к AMS Enterprise 2.9
от kryak_er в разделе ПолезностиОтветов: 2Последнее сообщение: 09.06.2009, 23:06 -
Установка Линукса.
от Большой Брат в разделе LINUXОтветов: 18Последнее сообщение: 09.11.2007, 05:26
Социальные закладки