Показано с 41 по 48 из 48
Древовидный режим
-
07.11.2023, 20:21 #39
- Регистрация
- 18.04.2018
- Адрес
- HP-Compaq DX2300 microtower PC
- Сообщений
- 250
- Сказал(а) спасибо
- 69
- Поблагодарили 1812 раз(а) в 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.
"кинжал хорош для того, у кого он есть, и плохо тому у кого он не окажется в нужное время"
-
-
14 пользователя(ей) сказали cпасибо:
Похожие темы
-
как скачать файл с линукса на виртуальную машину
от dafniya в разделе LINUXОтветов: 1Последнее сообщение: 07.02.2012, 22:43 -
Патч для Warcraft III 1.26 rus
от GHoSt444 в разделе Игры (games)Ответов: 0Последнее сообщение: 30.06.2011, 17:18 -
Патч к AMS Enterprise 2.9
от kryak_er в разделе ПолезностиОтветов: 2Последнее сообщение: 09.06.2009, 22:06 -
Установка Линукса.
от Большой Брат в разделе LINUXОтветов: 18Последнее сообщение: 09.11.2007, 04:26
Социальные закладки