уни-патч для линукса и для макоси
X

Привет дорогой друг

Наш сайт существует и развиваетется за счет рекламы. Пожалуйста, отключите блокировку рекламы AdBlock или подобное, для нашего сайта. Спасибо!
Показано с 1 по 10 из 48

Древовидный режим

  1. #28
    Спец PRO
    Аватар для HPDX2300
    Регистрация
    18.04.2018
    Адрес
    HP-Compaq DX2300 microtower PC
    Сообщений
    249
    Сказал(а) спасибо
    69
    Поблагодарили 1811 раз(а) в 395 сообщениях

    По умолчанию Re: уни-патч для линукса и для макоси

    Цитата Сообщение от HPDX2300 Посмотреть сообщение
    прочитать SN и всю память ключа (в дампе она "Data") можно на любой ОС, где работает клиент изделия. Необходим тока дебагер:
    1) SN ключа возвращается в ответе на вызов "Service 6: HaspID" для локального ключа, и "Service 46: HaspID" для сетевого ключа
    2) память ключа изделие читает вызывая "Service 50: ReadBlock" для локального ключа, и "Service 52: ReadBlock" для сетевого ключа;
    ждать (недолго - секунды) когда случится вызов соответствующего HASP Service (50 или 52) и поменять в стэке параметры на свои
    скачать HASP4 Programmers Guide
    маленький лик.без. на примере изделия 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; 07.12.2022 в 23:08.
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  2. 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)

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 07.02.2012, 22:43
  2. Патч для Warcraft III 1.26 rus
    от GHoSt444 в разделе Игры (games)
    Ответов: 0
    Последнее сообщение: 30.06.2011, 17:18
  3. Патч к AMS Enterprise 2.9
    от kryak_er в разделе Полезности
    Ответов: 2
    Последнее сообщение: 09.06.2009, 22:06
  4. Установка Линукса.
    от Большой Брат в разделе LINUX
    Ответов: 18
    Последнее сообщение: 09.11.2007, 04:26

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •