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

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

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

Комбинированный просмотр

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

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

    Унипатч доработан так, чтобы можно было легко изменять в текстовом редакторе используемые им дампы.
    В первых строках скрипта меняете SERVER_KEY_HASPID и CLIENT_KEY_HASPID, SERVER_KEY_Data и CLIENT_KEY_Data будут поправлены автомагичесчки так, чтобы получились дампы, выдерживающие 2-х этапную проверку изделием памяти ключа. "Четыре палёных дампа для мультика воскресли из пепла!"
    Выхлоп скрипта в stdout будет содержать инфу о дампах SERVER_KEY и CLIENT_KEY.

    Унипатч теперь правильно эмулирует сетевой HASP-API, в диалоге "About" отображается число спартанцев сетевого ключа.
    Это на практике проявляется так: сперва вы запускали изделие с помощью парочки эмулятор+HASPLM, изделие запомнило в файле 1cv8conn.pfl последний успешный путь получения лицензии на запуск (от сетевого HASPLM), при следующем запуске читается файл 1cv8conn.pfl и выполняется попытка получить лицензию также как прошлый раз. Если теперь либа патчена унипатчем, то унипатч честно выполнит эмуляцию сетевого HASPLM, и в диалоге "О программе" --> "Лицензия:" будет написано "Текущая: Сетевой HASP4 ORGL8 100" (Сетевой, а не Локальный!)

    Порядок байтов в hex-дампах как в исполняемых модулях для процессора Intel - младший байт идет первым
    SERVER_KEY_HASPID и CLIENT_KEY_HASPID редактируются в тех местах, где подсказано подчёркиванием.

    Повторю для "чайников":
    это патчер изделия для линукса-x64
    код ниже сохранить в файл unipatch.py
    запускать так (либа бэкбейс должна быть рядом - в том же каталоге):
    python3 unipatch.py
    если предварительно выполнить:
    chmod +x unipatch.py
    , то запускать можно будеть так:
    ./unipatch.py

    Код:
    #!/usr/bin/env python3
    import sys, os, mmap
    
    SERVER_KEY_PASSWORD = bytearray.fromhex('7A 23 25 41')
    #   SERVER_KEY_SN=0x281DCF71=bytearray.fromhex('71 CF 1D 28') - it's been blocked, so modify it a bit (exactly 9-th bit): 0x281DCE71 => Data[9-10]: BC 07
    SERVER_KEY_HASPID=0x281DCE71
    #              here ^^^ ^^ you can modify
    #SERVER_KEY_SN=bytearray.fromhex('71 CE 1D 28')
    SERVER_KEY_SN=SERVER_KEY_HASPID.to_bytes(4, byteorder='little', signed=False)
    SERVER_KEY_HASPTYPE = bytearray.fromhex('01 00 00 00')
    SERVER_KEY_MEMORYSIZE=bytearray.fromhex('01 00 00 00')
    SERVER_KEY_SecTable  =bytearray.fromhex('15 EA 8F EA 73 EA EB EA')
    SERVER_KEY_Data=bytearray.fromhex('\
    01 00 00 00 00 00 00 D0 BC 07 3F 28 30 02 E5 6F\
    3E 39 D4 76 9F 6F D4 76 21 57 02 41 C3 CC D5 A7\
    4B 4C C2 81 64 84 55 76 41 E1 5E 2C 18 A7 6F F2\
    08 E1 40 A0 4E 94 A7 4A B5 41 53 6D 48 C3 6D E4\
    A4 EC C8 9C 27 7D E0 79 51 B1 25 C6 A1 69 14 FB\
    03 7B C5 1B E3 EF A3 1E 04 B5 A5 E1 4E C8 5D 28\
    99 30 10 39 2F 8D B3 E0 95 F0 36 91 56 46 C4 75')
    SERVER_KEY_LicNum = bytearray.fromhex('01 00')
    
    DATA=( (SERVER_KEY_HASPID+0xC2E44E49) + ((SERVER_KEY_HASPID+0xC2E44E49)>>16) ) & 0x0000FFFF
    DATA9=(DATA & 0xFF)
    DATA10=(DATA>>8)
    SERVER_KEY_Data[8]=DATA9.to_bytes(1, byteorder='little', signed=False)[0]
    SERVER_KEY_Data[9]=DATA10.to_bytes(1, byteorder='little', signed=False)[0]
    
    CLIENT_KEY_PASSWORD = bytearray.fromhex('CB 70 6D 3B')
    #   CLIENT_KEY_SN=0x1B93C5D6=bytearray.fromhex('D6 C5 93 1B') - it's been blocked, so modify it a bit (exactly 9-th bit): 0x1B93C4D6 => Data[9-10]: 97 F1
    CLIENT_KEY_HASPID=0x1B93C4D6
    #              here ^^^ ^^ you can modify
    #CLIENT_KEY_SN=bytearray.fromhex('D6 C4 93 1B')
    CLIENT_KEY_SN=CLIENT_KEY_HASPID.to_bytes(4, byteorder='little', signed=False)
    CLIENT_KEY_HASPTYPE = bytearray.fromhex('0A 00 00 00')
    CLIENT_KEY_MEMORYSIZE=bytearray.fromhex('04 00 00 00')
    CLIENT_KEY_SecTable  =bytearray.fromhex('9A 21 2C 25 DE 65 6C 65')
    CLIENT_KEY_Data=bytearray.fromhex('\
    01 00 00 00 00 00 00 08 97 F1 84 CF DC 4E 1E BB\
    55 6E 19 91 2D 4A 74 A3 33 7D 33 69 30 E3 5C 64\
    E5 D7 5B 51 C3 C4 9D 0F F7 D5 F6 A4 34 0E E5 E5\
    4B 63 44 2E 80 73 06 F8 6A D1 37 BA 0F 9A FD 74\
    7B 5C 89 AE 3B AC 18 BB 71 8A 9B 85 7C 13 1D 9F\
    BF 55 82 70 6D 87 DA 18 0A BD C4 22 05 A5 28 D4\
    54 B2 BC 38 F1 F2 E6 F4 54 09 42 4C B2 E1 1D AB')
    CLIENT_KEY_LicNum = bytearray.fromhex('64 00')
    
    DATA=( (CLIENT_KEY_HASPID+0xC2E44E49) + ((CLIENT_KEY_HASPID+0xC2E44E49)>>16) ) & 0x0000FFFF
    DATA9=(DATA & 0xFF)
    DATA10=(DATA>>8)
    CLIENT_KEY_Data[8]=DATA9.to_bytes(1, byteorder='little', signed=False)[0]
    CLIENT_KEY_Data[9]=DATA10.to_bytes(1, byteorder='little', signed=False)[0]
    
    pattern = bytearray.fromhex('41 81 78 08 6C 68 73 68')
    unipatch = bytearray.fromhex('51 53 52 57 56 E8 88 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A0 00 00 00 00 00 00 00 A4 00 00 00 00 00 00 00 A8 00 00 00 00 00 00 00 AC 00 00 00 00 00 00 00 B0 00 00 00 00 00 00 00 B1 00 00 00 00 00 00 00 B2 00 00 00 00 00 00 00 FA 00 00 00 00 00 00 00 FA 10 00 00 00 00 00 00 06 11 00 00 00 00 00 00 C4 10 00 00 00 00 00 00 C8 10 00 00 00 00 00 00 CC 10 00 00 00 00 00 00 D0 10 00 00 00 00 00 00 D4 10 00 00 00 00 00 00 D5 10 00 00 00 00 00 00 D6 10 00 00 00 00 00 00 1E 11 00 00 00 00 00 00 0E 13 00 00 00 00 00 00 1A 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FB 13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 57 42 50 54 01 00 00 00 70 00 00 00 00 00 21 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF 00 01 02 4A 1F 01 18 02 08 01 14 2C 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DB 30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 64 00 00 00 FE FF 00 01 02 4A 1F 01 04 07 08 01 10 34 07 00 5E 48 89 C9 48 31 C0 48 31 D2 8A 41 16 89 06 48 89 F3 48 83 C6 10 48 83 F8 01 75 0D C6 41 28 01 C6 41 30 00 E9 32 02 00 00 66 8B 51 20 C1 E2 10 66 8B 51 24 48 8B 3E 3B 14 3E 75 02 74 10 48 83 C6 50 48 8B 3E 3B 14 3E 0F 85 0D 02 00 00 89 53 04 48 89 73 08 48 83 F8 03 74 06 48 83 F8 2C 75 21 48 03 76 38 48 31 C0 8B 41 28 48 D1 E0 48 0F B7 04 06 89 41 2C C7 41 30 00 00 00 00 E9 D9 01 00 00 48 83 F8 68 75 27 48 03 76 38 B8 70 00 00 00 48 0F B7 04 06 C7 41 28 01 00 00 00 89 41 2C 89 41 30 C7 41 34 FF FF 00 00 E9 AC 01 00 00 48 83 F8 05 75 2A 48 31 C0 48 8B 56 18 8B 04 16 89 41 28 48 8B 56 10 8B 04 16 89 41 2C C7 41 30 DE 00 00 00 C7 41 34 3C 23 00 00 E9 7C 01 00 00 48 83 F8 06 74 05 83 F8 2E 75 22 48 03 76 08 48 31 C0 8B 06 48 0F B7 F8 C1 E8 10 89 79 28 89 41 2C C7 41 30 00 00 00 00 E9 4F 01 00 00 48 83 F8 28 75 1A C7 41 28 00 00 00 00 C7 41 2C 00 00 00 00 C7 41 30 00 00 00 00 E9 2F 01 00 00 48 83 F8 2A 75 0C C7 41 30 00 00 00 00 E9 1D 01 00 00 48 83 F8 2B 75 0C C7 41 30 00 00 00 00 E9 0B 01 00 00 48 83 F8 30 75 05 E9 00 01 00 00 48 83 F8 32 74 06 48 83 F8 34 75 32 48 03 76 38 48 31 C0 48 8B 79 40 8B 41 28 48 D1 E0 48 01 C6 48 89 C8 48 31 C9 8B 48 2C 9C FC F3 66 A5 9D 48 89 C1 C7 41 30 00 00 00 00 E9 C2 00 00 00 83 F8 33 74 06 48 83 F8 33 75 35 48 03 76 38 48 31 C0 48 8B 79 40 8B 41 28 48 D1 E0 48 01 C6 48 89 C8 48 31 C9 8B 48 2C 48 87 F7 9C FC F3 66 A5 9D 48 89 C1 C7 41 30 00 00 00 00 E9 82 00 00 00 83 F8 3C 74 05 83 F8 58 75 31 83 79 2C 08 72 72 51 48 81 EC 00 01 00 00 49 89 E0 48 31 D2 8B 51 2C 48 8B 49 40 E8 85 0B 00 00 48 81 C4 00 01 00 00 59 C7 41 30 00 00 00 00 EB 47 83 F8 3D 74 05 83 F8 59 75 31 83 79 2C 08 72 37 51 48 31 D2 8B 51 2C 48 8B 49 40 48 81 EC 00 01 00 00 49 89 E0 E8 34 10 00 00 48 81 C4 00 01 00 00 59 C7 41 30 00 00 00 00 EB 0C 83 F8 55 75 02 EB 05 B8 78 56 34 12 5E 5F 5A 5B 59 C3 56 57 48 89 D6 48 89 CF 31 C9 44 89 C1 F3 A4 5F 5E C3 48 89 54 24 10 89 4C 24 08 48 83 EC 18 8B 44 24 20 83 E0 1F 89 44 24 20 8B 44 24 20 C1 E8 02 25 FE 00 00 00 48 8B 4C 24 28 0F B6 44 01 02 B9 1F 00 00 00 2B 4C 24 20 83 E1 07 D3 F8 83 E0 01 88 44 24 04 0F B6 44 24 04 83 F0 01 8B 4C 24 20 C1 E9 03 21 C8 8B 4C 24 20 31 C1 89 C8 8B 4C 24 20 C1 E9 04 31 C8 89 04 24 48 8B 44 24 28 8B 40 0F C1 E8 0A 8B 0C 24 31 C1 89 C8 89 04 24 48 8B 44 24 28 8B 40 0F C1 E8 07 8B 0C 24 31 C1 89 C8 89 04 24 8B 44 24 20 83 E0 02 85 C0 74 15 48 8B 44 24 28 8B 40 0F C1 E8 05 8B 0C 24 31 C1 89 C8 89 04 24 8B 44 24 20 83 E0 04 85 C0 74 15 48 8B 44 24 28 8B 40 0F C1 E8 08 8B 0C 24 31 C1 89 C8 89 04 24 8B 04 24 83 E0 01 89 04 24 8B 44 24 20 83 E0 01 C1 E0 02 48 8B 4C 24 28 8B 49 0F 31 C1 89 C8 48 8B 4C 24 28 89 41 0F 48 8B 44 24 28 8B 40 0F D1 E0 48 8B 4C 24 28 89 41 0F 48 8B 44 24 28 8B 0C 24 8B 40 0F 09 C8 48 8B 4C 24 28 89 41 0F 48 8B 44 24 28 8B 40 0F C1 E8 0B 0F B6 4C 24 04 31 C8 83 E0 01 48 83 C4 18 C3 48 89 54 24 10 48 89 4C 24 08 48 83 EC 48 C7 44 24 30 1F 00 00 00 48 8B 44 24 58 8B 40 14 89 44 24 20 8B 44 24 20 35 89 19 08 01 89 44 24 20 8B 44 24 20 C1 E8 0C 89 44 24 20 C7 44 24 24 0A 00 00 00 EB 0A 8B 44 24 24 FF C8 89 44 24 24 83 7C 24 24 05 76 69 0F B6 44 24 20 83 E0 0F 89 44 24 2C 83 7C 24 2C 00 74 0A C7 44 24 38 01 00 00 00 EB 08 C7 44 24 38 00 00 00 00 83 7C 24 2C 0B 73 0A C7 44 24 3C 01 00 00 00 EB 08 C7 44 24 3C 00 00 00 00 8B 44 24 3C 8B 4C 24 38 21 C1 89 C8 8B 4C 24 24 D3 E0 8B 4C 24 30 09 C1 89 C8 89 44 24 30 8B 44 24 20 C1 E8 04 89 44 24 20 EB 86 8B 44 24 30 C1 E8 06 48 8B 4C 24 58 88 41 13 48 8B 44 24 58 0F B6 40 13 C1 E0 06 83 C8 1F 48 8B 4C 24 58 89 41 0F C7 44 24 24 01 00 00 00 C7 44 24 28 00 00 00 00 EB 0A 8B 44 24 24 FF C0 89 44 24 24 83 7C 24 24 27 77 6A 8B 44 24 28 48 8B 4C 24 50 0F B6 04 01 48 8B 54 24 58 89 C1 E8 A6 FD FF FF 89 44 24 34 48 8B 44 24 50 8B 00 83 E0 01 D1 E0 0B 44 24 34 89 44 24 28 48 8B 44 24 50 8B 00 83 E0 01 3B 44 24 34 75 12 48 8B 44 24 50 8B 00 D1 E8 48 8B 4C 24 50 89 01 EB 15 48 8B 44 24 50 8B 00 D1 E8 35 62 00 50 80 48 8B 4C 24 50 89 01 EB 85 48 83 C4 48 C3 48 89 4C 24 08 48 83 EC 48 48 8B 44 24 50 0F B6 40 01 C1 F8 05 83 E0 01 48 8B 4C 24 50 88 41 0A 48 8B 44 24 50 0F B6 40 02 C1 F8 07 83 E0 01 83 F0 01 88 44 24 24 0F B6 44 24 24 85 C0 74 0E 48 8B 44 24 50 0F B6 00 89 44 24 3C EB 0E 48 8B 44 24 50 0F B6 00 F7 D0 89 44 24 3C 0F B6 44 24 3C 88 44 24 26 C7 44 24 28 00 00 00 00 48 8B 44 24 50 0F B6 40 01 83 E0 1F 88 44 24 25 C7 44 24 2C 00 00 00 00 EB 0A 8B 44 24 2C FF C0 89 44 24 2C 83 7C 24 2C 04 7D 3D 0F B6 44 24 28 C0 E0 02 88 44 24 28 0F B6 44 24 25 83 E0 01 0F B6 4C 24 25 83 F1 01 83 E1 01 D1 E1 09 C8 0F B6 4C 24 28 09 C1 89 C8 88 44 24 28 0F B6 44 24 25 D0 E8 88 44 24 25 EB B2 0F B6 44 24 28 35 FF 00 00 00 88 44 24 2A 0F B6 44 24 28 88 44 24 29 0F B6 44 24 2A 88 44 24 2B C7 44 24 2C 00 00 00 00 EB 0A 8B 44 24 2C FF C0 89 44 24 2C 83 7C 24 2C 08 0F 8D 9F 00 00 00 8B 44 24 2C 83 C0 08 C1 F8 02 25 FE 00 00 00 48 98 48 8B 4C 24 50 0F B6 44 01 02 8B 4C 24 2C 83 C1 08 BA 1F 00 00 00 29 CA 89 D1 83 E1 07 D3 F8 83 E0 01 0F B6 4C 24 25 31 C8 8B 4C 24 2C D3 E0 0F B6 4C 24 29 31 C1 89 C8 88 44 24 29 8B 44 24 2C 83 C0 18 C1 F8 02 25 FE 00 00 00 48 98 48 8B 4C 24 50 0F B6 44 01 02 8B 4C 24 2C 83 C1 18 BA 1F 00 00 00 29 CA 89 D1 83 E1 07 D3 F8 83 E0 01 0F B6 4C 24 25 31 C8 8B 4C 24 2C D3 E0 0F B6 4C 24 2B 31 C1 89 C8 88 44 24 2B E9 4C FF FF FF 48 8B 44 24 50 C7 40 0B 00 00 00 00 C7 44 24 20 00 00 00 00 C7 44 24 30 1F 00 00 00 EB 0A 8B 44 24 30 FF C8 89 44 24 30 83 7C 24 30 00 0F 8C A4 00 00 00 0F B6 44 24 26 C1 E0 03 48 8B 4C 24 50 89 41 0F C7 44 24 38 00 00 00 00 EB 0A 8B 44 24 38 FF C0 89 44 24 38 83 7C 24 38 0C 7D 14 48 8B 54 24 50 8B 4C 24 30 E8 A6 00 00 00 88 44 24 34 EB DB 8B 44 24 20 D1 E0 89 44 24 20 8B 44 24 30 C1 F8 02 25 FE 00 00 00 48 98 48 8B 4C 24 50 0F B6 44 01 02 B9 1F 00 00 00 2B 4C 24 30 83 E1 07 D3 F8 83 E0 01 8B 4C 24 30 83 E1 01 31 C8 8B 4C 24 30 8B 54 24 28 D3 EA 89 D1 83 E1 01 31 C8 0F B6 4C 24 34 31 C8 8B 4C 24 20 09 C1 89 C8 89 44 24 20 E9 47 FF FF FF 48 8B 44 24 50 8B 4C 24 20 89 48 0B 0F B6 44 24 26 C1 E0 03 0F B6 4C 24 24 C1 E1 02 09 C8 0F B6 4C 24 24 D1 E1 09 C8 0F B6 4C 24 24 09 C8 48 8B 4C 24 50 89 41 0F 48 83 C4 48 C3 48 89 54 24 10 89 4C 24 08 48 83 EC 28 8B 44 24 30 83 E0 1F 89 44 24 30 8B 44 24 30 D1 E8 83 E0 03 E8 10 00 00 00 80 04 00 00 A0 04 00 00 80 05 00 00 A0 05 00 00 59 8B 04 81 89 44 24 04 C7 44 24 08 00 00 00 00 C7 44 24 0C 00 00 00 00 EB 0A 8B 44 24 0C FF C0 89 44 24 0C 83 7C 24 0C 0C 7D 3D 8B 44 24 0C 0F B6 C8 8B 44 24 04 D3 E8 83 E0 01 85 C0 74 27 8B 44 24 0C 48 8B 4C 24 38 48 89 4C 24 10 0F B6 C8 48 8B 44 24 10 8B 40 0F D3 E8 8B 4C 24 08 31 C1 89 C8 89 44 24 08 EB B2 8B 44 24 30 83 E0 01 C1 E0 02 48 8B 4C 24 38 8B 49 0F 31 C1 89 C8 48 8B 4C 24 38 89 41 0F 8B 44 24 30 C1 E8 02 25 FE 00 00 00 48 8B 4C 24 38 0F B6 44 01 02 B9 1F 00 00 00 2B 4C 24 30 83 E1 07 D3 F8 83 E0 01 48 8B 4C 24 38 0F B6 49 0A 31 C8 88 04 24 48 8B 44 24 38 8B 40 0F D1 E0 0F B6 0C 24 8B 54 24 08 31 CA 89 D1 83 E1 01 09 C8 48 8B 4C 24 38 89 41 0F 8B 44 24 30 48 8B 4C 24 38 48 89 4C 24 18 0F B6 C8 48 8B 44 24 18 8B 40 0B D3 E8 83 E0 01 48 8B 4C 24 38 8B 49 0F 31 C1 89 C8 48 8B 4C 24 38 89 41 0F 48 8B 44 24 38 8B 40 0F C1 E8 0B 0F B6 0C 24 31 C8 83 E0 01 48 83 C4 28 C3 48 89 54 24 10 48 89 4C 24 08 48 83 EC 38 48 8B 44 24 48 83 78 14 00 74 14 48 8B 54 24 48 48 8B 4C 24 40 E8 3F FA FF FF E9 97 00 00 00 48 8B 4C 24 48 E8 A6 FB FF FF C7 44 24 20 01 00 00 00 C7 44 24 24 00 00 00 00 EB 0A 8B 44 24 20 FF C0 89 44 24 20 83 7C 24 20 27 77 6A 8B 44 24 24 48 8B 4C 24 40 0F B6 04 01 48 8B 54 24 48 89 C1 E8 2E FE FF FF 89 44 24 28 48 8B 44 24 40 8B 00 83 E0 01 D1 E0 0B 44 24 28 89 44 24 24 48 8B 44 24 40 8B 00 83 E0 01 3B 44 24 28 75 12 48 8B 44 24 40 8B 00 D1 E8 48 8B 4C 24 40 89 01 EB 15 48 8B 44 24 40 8B 00 D1 E8 35 62 00 50 80 48 8B 4C 24 40 89 01 EB 85 48 83 C4 38 C3 49 89 E3 48 83 EC 68 45 85 C0 49 89 5B F8 49 89 6B F0 49 89 73 E8 49 89 7B E0 4D 89 63 D8 44 8B 61 04 44 89 C5 48 89 D6 48 89 CB 45 89 E1 45 89 63 C8 74 26 49 8D 4B C8 49 89 4B B8 E8 00 00 00 00 5A 48 81 EA D0 1D 00 00 48 8B 12 48 03 52 20 E8 E2 FE FF FF 44 8B 4C 24 30 8B 03 44 31 C8 89 C1 44 31 E0 35 C3 25 34 80 89 0B 89 C1 35 C3 25 34 80 C1 C0 02 33 03 89 0B 89 C1 35 C3 25 34 80 C1 C0 04 33 03 89 0B 89 C1 35 C3 25 34 80 C1 C0 06 33 03 89 0B 89 C1 35 C3 25 34 80 C1 C0 08 33 03 89 C2 35 C3 25 34 80 C1 C0 0A 89 13 31 C8 85 ED 48 8B 6C 24 58 89 43 04 41 89 C4 89 C2 89 44 24 34 74 27 48 8D 4C 24 34 E8 00 00 00 00 5A 48 81 EA 5D 1E 00 00 48 8B 12 48 03 52 20 E8 55 FE FF FF 8B 54 24 34 44 8B 4C 24 30 8B 03 48 8B 7C 24 48 31 D0 89 C1 44 31 E0 4C 8B 64 24 40 35 4A 00 2C 5B 89 0B 89 C1 35 4A 00 2C 5B C1 C0 05 33 03 89 0B 89 C1 35 4A 00 2C 5B C1 C0 0A 33 03 89 0B 89 C1 35 4A 00 2C 5B C1 C0 0F 33 03 89 0B 89 C1 35 4A 00 2C 5B C1 C0 14 33 03 89 0B 89 C1 35 4A 00 2C 5B C1 C0 19 33 03 48 85 F6 89 0B 89 43 04 48 8B 5C 24 60 74 06 44 89 0E 89 56 04 48 8B 74 24 50 48 83 C4 68 C3 48 83 EC 08 4C 8D 0C 24 41 B8 01 00 00 00 49 89 09 8B 41 5C 48 C1 E0 20 8B 49 12 48 09 C1 48 89 CA 48 83 C2 08 E8 6E FE FF FF 48 83 C4 08 C3 49 89 E3 48 83 EC 68 49 89 5B F8 48 89 CB 49 89 6B F0 49 89 73 E8 49 89 7B E0 4C 89 CF 44 8B 09 4D 89 63 D8 45 89 C4 44 89 C8 48 89 D6 35 4A 00 2C 5B C1 C0 19 33 41 04 44 89 49 04 89 01 89 C1 35 4A 00 2C 5B C1 C0 14 89 4B 04 44 31 C8 89 C1 35 4A 00 2C 5B C1 C0 0F 33 43 04 89 4B 04 89 C1 35 4A 00 2C 5B C1 C0 0A 33 43 04 89 4B 04 89 C1 35 4A 00 2C 5B C1 C0 05 33 43 04 89 4B 04 89 C1 8B 43 04 31 C8 89 4B 04 35 4A 00 2C 5B 45 85 E4 89 03 89 C5 41 89 C0 89 44 24 34 74 37 48 8B 07 49 8D 4B CC 44 0F B7 48 1E 44 0F B7 40 0C 0F B7 50 08 49 89 4B B8 E8 00 00 00 00 5A 48 81 EA E1 1F 00 00 48 8B 12 48 03 52 20 E8 D1 FC FF FF 44 8B 44 24 34 8B 43 04 44 31 C0 89 C1 35 C3 25 34 80 C1 C0 0A 89 4B 04 31 E8 89 C1 35 C3 25 34 80 C1 C0 08 33 43 04 89 4B 04 89 C1 35 C3 25 34 80 C1 C0 06 33 43 04 89 4B 04 89 C1 35 C3 25 34 80 C1 C0 04 33 43 04 89 4B 04 89 C1 35 C3 25 34 80 C1 C0 02 33 43 04 89 C2 89 C8 31 D0 89 53 04 35 C3 25 34 80 45 85 E4 4C 8B 64 24 40 89 03 89 C5 89 C1 89 44 24 30 74 3D 48 8B 07 48 8D 4C 24 30 44 0F B7 48 1E 44 0F B7 40 0C 0F B7 50 08 48 89 4C 24 20 E8 00 00 00 00 5A 48 81 EA 8E 20 00 00 48 8B 12 48 03 52 20 E8 24 FC FF FF 44 8B 44 24 34 8B 4C 24 30 8B 43 04 48 8B 7C 24 48 89 6B 04 48 8B 6C 24 58 31 C8 48 85 F6 89 03 48 8B 5C 24 60 74 06 89 0E 44 89 46 04 48 8B 74 24 50 48 83 C4 68 C3 48 83 EC 08 4C 8D 0C 24 41 B8 01 00 00 00 49 89 09 8B 41 5C 48 C1 E0 20 8B 49 12 48 09 C1 48 89 CA 48 83 C2 08 E8 23 FE FF FF 48 83 C4 08 C3 48 89 E0 48 81 EC E8 00 00 00 48 89 58 08 48 89 68 10 48 89 70 18 48 89 78 20 4C 89 60 F8 4C 89 68 F0 4C 89 70 E8 4C 89 78 E0 B8 08 00 00 00 44 8D 72 07 41 89 D7 4C 89 C5 41 C1 EE 03 41 83 E7 07 48 89 CB 44 0F 44 F8 45 31 C9 41 8D 46 FF 85 C0 44 89 7C 24 28 44 89 4C 24 24 45 89 C8 44 89 4C 24 20 45 89 CD 45 8D 51 02 0F 84 7A 02 00 00 48 8B 7C 24 30 44 8B 64 24 54 4D 89 D7 44 31 03 44 31 4B 04 45 85 ED 8B 0B 8B 53 04 0F 85 16 01 00 00 45 39 FE 0F 86 DB 00 00 00 66 44 89 6D 10 48 8B 03 48 89 E9 48 89 44 24 38 48 8D 44 24 38 48 89 7C 24 40 89 45 12 48 8D 44 24 38 66 44 89 7D 16 48 C1 E8 20 66 44 89 6D 3E 89 45 5C E8 1C FD FF FF 48 8B 7C 24 40 48 8B 44 24 38 48 89 7C 24 30 8B 74 24 34 48 89 03 89 7C 24 50 48 8D 54 24 54 66 44 89 6D 16 45 8D 45 05 8B 4A FC 48 83 C2 14 8D 04 31 83 E1 1F 89 42 EC 89 F8 D3 C8 31 44 24 54 8B 4A EC 8D 04 31 83 E1 1F 89 42 F0 89 F8 D3 C8 31 44 24 54 8B 4A F0 8D 04 31 83 E1 1F 89 42 F4 89 F8 D3 C8 31 44 24 54 8B 4A F4 8D 04 31 83 E1 1F 89 42 F8 89 F8 D3 C8 31 44 24 54 8B 4A F8 8D 04 31 83 E1 1F 89 42 FC 44 8B 64 24 54 89 F8 D3 C8 41 31 C4 49 FF C8 44 89 64 24 54 75 8A E9 42 01 00 00 48 89 D8 48 89 E9 66 C7 45 10 00 00 48 C1 E8 20 66 C7 45 16 01 00 66 C7 45 3E 00 00 89 45 5C 89 5D 12 E8 52 FC FF FF 66 C7 45 16 00 00 E9 10 01 00 00 8B 44 24 50 46 8D 04 21 4C 8D 4C 24 5C 8D 34 02 44 89 03 4D 89 FA 89 73 04 44 89 C1 44 89 C2 49 83 C1 30 C1 E9 04 31 F2 83 E1 1F D3 C2 41 2B 51 CC 41 31 D0 89 D1 C1 E9 07 83 E1 1F 41 D3 C0 45 03 41 D0 44 89 C1 44 89 C6 C1 E9 04 31 D6 83 E1 1F D3 C6 41 2B 71 D4 41 31 F0 89 F1 C1 E9 07 83 E1 1F 41 D3 C0 45 03 41 D8 44 89 C1 44 89 C2 C1 E9 04 31 F2 83 E1 1F D3 C2 41 2B 51 DC 41 31 D0 89 D1 C1 E9 07 83 E1 1F 41 D3 C0 45 03 41 E0 44 89 C1 44 89 C6 C1 E9 04 31 D6 83 E1 1F D3 C6 41 2B 71 E4 41 31 F0 89 F1 C1 E9 07 83 E1 1F 41 D3 C0 45 03 41 E8 44 89 C1 44 89 C2 C1 E9 04 31 F2 83 E1 1F D3 C2 41 2B 51 EC 41 31 D0 89 D1 C1 E9 07 83 E1 1F 41 D3 C0 45 03 41 F0 44 89 C1 44 89 C6 C1 E9 04 31 D6 83 E1 1F D3 C6 41 2B 71 F4 41 31 F0 89 F1 C1 E9 07 83 E1 1F 41 D3 C0 45 03 41 F8 49 FF CA 0F 85 0F FF FF FF 44 89 03 89 73 04 44 8B 03 44 8B 4B 04 41 8D 46 FF 41 FF C5 48 83 C3 08 44 89 44 24 20 41 39 C5 44 89 4C 24 24 0F 82 A0 FD FF FF 44 8B 7C 24 28 41 BA 02 00 00 00 EB 05 44 8B 64 24 54 45 85 FF 4C 8B AC 24 D8 00 00 00 74 2C 48 8D 44 24 20 48 89 DF 48 8D 4C 24 20 48 29 C7 44 89 FA 0F B6 04 0F 48 FF C1 30 41 FF 48 FF CA 75 F1 44 8B 4C 24 24 44 8B 44 24 20 41 83 FE 02 0F 86 FF 00 00 00 44 03 4C 24 50 48 8D 74 24 5C 45 01 E0 44 89 C1 44 89 C2 48 83 C6 30 C1 E9 04 44 31 CA 83 E1 1F D3 C2 2B 56 CC 41 31 D0 89 D1 C1 E9 07 83 E1 1F 41 D3 C0 44 03 46 D0 44 89 C1 44 89 C7 C1 E9 04 31 D7 83 E1 1F D3 C7 2B 7E D4 41 31 F8 89 F9 C1 E9 07 83 E1 1F 41 D3 C0 44 03 46 D8 44 89 C1 44 89 C2 C1 E9 04 31 FA 83 E1 1F D3 C2 2B 56 DC 41 31 D0 89 D1 C1 E9 07 83 E1 1F 41 D3 C0 44 03 46 E0 44 89 C1 44 89 C7 C1 E9 04 31 D7 83 E1 1F D3 C7 2B 7E E4 41 31 F8 89 F9 C1 E9 07 83 E1 1F 41 D3 C0 44 03 46 E8 44 89 C1 44 89 C2 C1 E9 04 31 FA 83 E1 1F D3 C2 2B 56 EC 41 31 D0 89 D1 C1 E9 07 83 E1 1F 41 D3 C0 44 03 46 F0 44 89 C1 45 89 C1 C1 E9 04 41 31 D1 83 E1 1F 41 D3 C1 44 2B 4E F4 45 31 C8 44 89 C9 C1 E9 07 83 E1 1F 41 D3 C0 44 03 46 F8 49 FF CA 0F 85 10 FF FF FF EB 51 41 83 FE 01 75 0D 8B 03 89 44 24 20 8B 43 04 89 44 24 24 48 8D 44 24 20 48 89 E9 66 C7 45 10 00 00 89 45 12 48 8D 44 24 20 66 C7 45 16 01 00 48 C1 E8 20 66 C7 45 3E 00 00 89 45 5C E8 7D F9 FF FF 44 8B 4C 24 24 44 8B 44 24 20 66 C7 45 16 00 00 4C 8B A4 24 E0 00 00 00 48 8B AC 24 F8 00 00 00 41 83 FE 01 4C 8B B4 24 D0 00 00 00 76 1B 45 85 FF 74 0C 48 8D 73 F8 44 89 F9 48 89 DF F3 A4 44 89 43 F8 44 89 4B FC EB 07 44 89 03 44 89 4B 04 4C 8B BC 24 C8 00 00 00 48 8B BC 24 08 01 00 00 48 8B B4 24 00 01 00 00 48 8B 9C 24 F0 00 00 00 48 81 C4 E8 00 00 00 C3 48 89 E0 48 81 EC F8 00 00 00 48 89 58 08 48 89 68 10 48 89 70 18 48 89 78 20 4C 89 60 F8 4C 89 68 F0 4C 89 70 E8 4C 89 78 E0 48 89 CB 8D 4A 07 89 D0 BA 08 00 00 00 C1 E9 03 83 E0 07 4C 89 C7 0F 44 C2 45 31 FF 83 F9 01 89 4C 24 30 44 8D 62 04 44 89 7C 24 2C 44 89 7C 24 34 44 89 7C 24 28 45 89 FE 89 44 24 38 0F 86 9F 01 00 00 83 C1 FE 44 89 FE 89 4C 24 20 0F 84 8F 01 00 00 48 8B 44 24 40 44 8B 6C 24 64 8B 6C 24 60 85 F6 44 8B 03 44 8B 73 04 45 89 C7 44 89 44 24 28 0F 85 EE 00 00 00 48 89 44 24 50 48 8D 44 24 48 66 89 77 10 48 8B 0B 89 47 12 48 8D 44 24 48 48 C1 E8 20 48 89 4C 24 48 48 89 F9 66 C7 47 16 02 00 66 89 77 3E 89 47 5C E8 0E FA FF FF 48 8B 44 24 48 4C 8D 44 24 64 48 89 03 48 8B 44 24 50 44 8D 56 05 48 89 44 24 40 44 8B 4C 24 44 66 89 77 16 89 44 24 60 41 8B 48 FC 49 83 C0 14 42 8D 14 09 83 E1 1F 41 89 50 EC 89 C2 D3 CA 31 54 24 64 41 8B 48 EC 42 8D 14 09 83 E1 1F 41 89 50 F0 89 C2 D3 CA 31 54 24 64 41 8B 48 F0 42 8D 14 09 83 E1 1F 41 89 50 F4 89 C2 D3 CA 31 54 24 64 41 8B 48 F4 42 8D 14 09 83 E1 1F 41 89 50 F8 89 C2 D3 CA 31 54 24 64 41 8B 48 F8 42 8D 14 09 83 E1 1F 41 89 50 FC 44 8B 6C 24 64 89 C2 D3 CA 41 31 D5 49 FF CA 44 89 6C 24 64 0F 85 77 FF FF FF 8B 6C 24 60 EB 4B 45 89 E3 45 89 F1 4C 8D 94 24 C0 00 00 00 45 2B 42 04 44 89 C9 49 83 EA 08 C1 E9 07 83 E1 1F 41 D3 C8 45 31 C8 45 03 4A 08 44 89 C1 C1 E9 04 83 E1 1F 41 D3 C9 45 31 C1 41 83 C3 FF 75 D0 45 29 E8 41 29 E9 44 89 4B 04 44 89 03 8B 4C 24 34 FF C6 48 83 C3 08 31 4B F8 8B 4C 24 2C 44 89 7C 24 34 31 4B FC 3B 74 24 20 44 89 74 24 2C 0F 82 88 FE FF FF 8B 44 24 38 45 31 FF EB 09 44 8B 6C 24 64 8B 6C 24 60 85 C0 44 89 7C 24 20 44 89 FE 44 89 7C 24 24 74 1A 48 8D 53 08 48 8D 4C 24 20 41 89 C0 E8 B8 ED FF FF 8B 74 24 24 44 8B 7C 24 20 44 8B 5C 24 30 41 83 FB 01 75 32 48 89 D8 48 89 F9 66 C7 47 10 00 00 48 C1 E8 20 66 C7 47 16 01 00 66 C7 47 3E 00 00 89 47 5C 89 5F 12 E8 75 F8 FF FF 66 C7 47 16 00 00 E9 29 01 00 00 41 83 FB 02 75 34 48 89 D8 48 89 F9 66 C7 47 10 00 00 48 C1 E8 20 66 C7 47 16 01 00 66 C7 47 3E 00 00 89 47 5C 89 5F 12 E8 3D F8 FF FF 44 8B 5C 24 30 66 C7 47 16 00 00 EB 55 8B 13 44 8B 43 04 45 89 E2 4C 8D 8C 24 C0 00 00 00 41 2B 51 04 44 89 C1 49 83 E9 08 C1 E9 07 83 E1 1F D3 CA 44 31 C2 45 03 41 08 89 D1 C1 E9 04 83 E1 1F 41 D3 C8 41 31 D0 41 83 C2 FF 75 D2 44 29 EA 41 29 E8 41 83 FB 01 89 13 44 89 43 04 0F 86 9A 00 00 00 44 33 3B 33 73 04 8B 44 24 38 85 C0 44 89 7C 24 20 89 74 24 24 74 31 4C 8D 44 24 20 49 89 D9 48 8D 4B 08 4D 29 C1 49 89 C0 48 8D 54 24 20 0F B6 01 48 FF C1 48 FF C2 49 FF C8 41 88 44 11 FF 0F B6 42 FF 88 41 FF 75 E6 41 83 FB 02 0F 84 ED FE FF FF 8B 13 44 8B 43 04 4C 8D 8C 24 C0 00 00 00 41 2B 51 04 44 89 C1 49 83 E9 08 C1 E9 07 83 E1 1F D3 CA 44 31 C2 45 03 41 08 89 D1 C1 E9 04 83 E1 1F 41 D3 C8 41 31 D0 41 83 C4 FF 75 D2 44 29 EA 41 29 E8 44 89 43 04 89 13 8B 44 24 28 4C 8B BC 24 D8 00 00 00 4C 8B AC 24 E8 00 00 00 31 03 44 31 73 04 4C 8B A4 24 F0 00 00 00 4C 8B B4 24 E0 00 00 00 48 8B 9C 24 00 01 00 00 48 8B BC 24 18 01 00 00 48 8B B4 24 10 01 00 00 48 8B AC 24 08 01 00 00 48 81 C4 F8 00 00 00 C3 CC CC CC CC 57 59 E9 F9 D5 FF FF')
    
    fullfname=os.getcwd()+'/backbas.so'
    
    
    a=0xBA
    unipatch[a:a+4]=SERVER_KEY_PASSWORD
    a=a+4
    unipatch[a:a+4]=SERVER_KEY_SN
    a=a+4
    unipatch[a:a+4]=SERVER_KEY_HASPTYPE
    a=a+4
    unipatch[a:a+4]=SERVER_KEY_MEMORYSIZE
    a=a+6
    unipatch[a:a+8]=SERVER_KEY_SecTable
    a=a+0x48
    unipatch[a:a+0x70]=SERVER_KEY_Data
    a=a+0x70
    unipatch[a:a+2]=SERVER_KEY_LicNum
    
    
    a=0x112E
    unipatch[a:a+4]=CLIENT_KEY_PASSWORD
    a=a+4
    unipatch[a:a+4]=CLIENT_KEY_SN
    a=a+4
    unipatch[a:a+4]=CLIENT_KEY_HASPTYPE
    a=a+4
    unipatch[a:a+4]=CLIENT_KEY_MEMORYSIZE
    a=a+6
    unipatch[a:a+8]=CLIENT_KEY_SecTable
    a=a+0x48
    unipatch[a:a+0x70]=CLIENT_KEY_Data
    a=a+0x70
    unipatch[a:a+2]=CLIENT_KEY_LicNum
    
    try:
      fp = open(fullfname, 'r+')
      if os.stat(fp.name).st_size > 0:
        mm = mmap.mmap(fp.fileno(), 0)
    
      # WTF? "to smoke": man 5 elf
      if mm[0]!=0x7f or mm[1]!=0x45 or mm[2]!=0x4C or mm[3]!=0x46 or mm[4]!=2 or mm[5]!=1 or mm[6]!=1 or mm[16]!=3 or mm[17]!=0 or mm[18]!=0x3E or mm[19]!=0:
        print ("what a fuck are you giving me?")
        sys.exit()
      e_phoff = mm[0x20]+(mm[0x21]+(mm[0x22]+(mm[0x23]<<8)<<8)<<8)
    #  print (f"e_phoff = {hex(e_phoff)}")
      e_phentsize = mm[0x36]+(mm[0x37]<<8)
    #  print (f"e_phentsize = {hex(e_phentsize)}")
      e_phnum = mm[0x38]+(mm[0x39]<<8)
    #  print (f"e_phnum = {hex(e_phnum)}")
      for i in range(e_phnum):
        p = e_phoff + i * e_phentsize
        p_type  = mm[p]+(mm[p+1]+(mm[p+2]+(mm[p+3]<<8)<<8)<<8)
        p_flags = mm[p+4]+(mm[p+5]+(mm[p+6]+(mm[p+7]<<8)<<8)<<8)
        if (p_type==1 and p_flags==5):
    #      print(f"p_type={hex(p_type)}, p_flags={hex(p_flags)}")
    #      print(f"mm[{hex(p+4)}] += PF_W")
          mm[p+4] = 7
          break
    #    else:
    #      print(f"p_type={hex(p_type)}, p_flags={hex(p_flags)}")
      pattern_addr = mm.find(pattern)
      if pattern_addr != -1:
        unipatch_addr=pattern_addr-0x2A75
        print (f"patching  {fullfname}  at offset={hex(unipatch_addr)}")
        mm[unipatch_addr:unipatch_addr+0x2A07] = unipatch
    
      mm.close()
    except IOError as e:
      print (f"I/O error({e.errno}): {e.strerror}, filename={fullfname}")
    
    
    
    print ('#############_SERVER_KEY_INFO_#################', sep='', end='')
    print ('')
    a=0xBA
    print ('SERVER_KEY_PASSWORD:', sep='', end=' ')
    for i in range(a,a+4):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print (f"=0x{format(int.from_bytes(unipatch[a:a+4], byteorder='little', signed=False),'08X')}")
    a=a+4
    print ('SERVER_KEY_SN:', sep='', end=' ')
    for i in range(a,a+4):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print (f"=0x{format(int.from_bytes(unipatch[a:a+4], byteorder='little', signed=False),'08X')}")
    a=a+4
    print ('SERVER_KEY_HASPTYPE:', sep='', end=' ')
    for i in range(a,a+4):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print (f"=0x{format(int.from_bytes(unipatch[a:a+4], byteorder='little', signed=False),'08X')}")
    a=a+4
    print ('SERVER_KEY_MEMORYSIZE:', sep='', end=' ')
    for i in range(a,a+4):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print (f"=0x{format(int.from_bytes(unipatch[a:a+4], byteorder='little', signed=False),'08X')}")
    a=a+6
    print ('SERVER_KEY_SecTable:', sep='', end=' ')
    for i in range(a,a+8):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print ('')
    a=a+0x48
    print ('SERVER_KEY_Data:', sep='', end='\n')
    for i in range(a,a+0x70,16):  
      for k in range(0,16):
        print (format(unipatch[i+k],'02X'), sep='', end=' ')
      print ('')
    a=a+0x70
    print ('SERVER_KEY_LicNum:', sep='', end=' ')
    for i in range(a,a+2):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print (f"=0x{format(int.from_bytes(unipatch[a:a+2], byteorder='little', signed=False),'04X')}")
    
    print ('#############_CLIENT_KEY_INFO_#################', sep='', end='')
    print ('')
    a=0x112E
    print ('CLIENT_KEY_PASSWORD:', sep='', end=' ')
    for i in range(a,a+4):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print (f"=0x{format(int.from_bytes(unipatch[a:a+4], byteorder='little', signed=False),'08X')}")
    a=a+4
    print ('CLIENT_KEY_SN:', sep='', end=' ')
    for i in range(a,a+4):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print (f"=0x{format(int.from_bytes(unipatch[a:a+4], byteorder='little', signed=False),'08X')}")
    a=a+4
    print ('CLIENT_KEY_HASPTYPE:', sep='', end=' ')
    for i in range(a,a+4):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print (f"=0x{format(int.from_bytes(unipatch[a:a+4], byteorder='little', signed=False),'08X')}")
    a=a+4
    print ('CLIENT_KEY_MEMORYSIZE:', sep='', end=' ')
    for i in range(a,a+4):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print (f"=0x{format(int.from_bytes(unipatch[a:a+4], byteorder='little', signed=False),'08X')}")
    a=a+6
    print ('CLIENT_KEY_SecTable:', sep='', end=' ')
    for i in range(a,a+8):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print ('')
    a=a+0x48
    print ('CLIENT_KEY_Data:', sep='', end='\n')
    for i in range(a,a+0x70,16):  
      for k in range(0,16):
        print (format(unipatch[i+k],'02X'), sep='', end=' ')
      print ('')
    
    a=a+0x70
    print ('CLIENT_KEY_LicNum:', sep='', end=' ')
    for i in range(a,a+2):
       print (format(unipatch[i],'02X'), sep='', end=' ')
    print (f"=0x{format(int.from_bytes(unipatch[a:a+2], byteorder='little', signed=False),'04X')}")
    Последний раз редактировалось HPDX2300; 07.11.2023 в 20:31.
    "кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"

  2. 14 пользователя(ей) сказали cпасибо:

    Andxs72 (10.11.2023), andydaw (08.11.2023), Den-1977 (08.11.2023), Evld (14.11.2023), g0ga (14.11.2023), ilya.sh (19.11.2023), kelt44 (08.11.2023), Megakiller (08.11.2023), olegtelec (27.11.2023), Renzes (10.11.2023), root7 (20.01.2024), Sova24 (24.11.2023), yurykk (16.11.2023), _BigB_ (08.11.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

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

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

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

Ваши права

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