Posted: 2007-12-27 22:35:08
Исходный код первого поста:
Grin, внеси поправки, а? А я тогда отредактирую первый пост и сотру отсюда всё, ибо нефиг..
Code: Select all
Injection - это программа, которая встраивается между вашим графическим клиентом и непосредственно сервером с целью модификации/создания новых пакетов.
[i]Примечание: Пакет - это такая штука с некоторой информацией, которой обменивается клиент и сервер. Только не вздумайте давать такое объяснение в ВУЗ'е :)[/i]
Клиент Ultima Online использует шифрование трафика с целью защитить информацию которой обменивается графический клиент с сервером. Injection настроен на получение [b]не[/b] зашифрованных пакетов, для чего нужно снять шифрование с клиента. Сделать это можно двумя способами:
1. Изменить непосредственно исполняемый файл.
2. Указать корректные данные в файле ilpatch.cfg
Я не буду углубляться в способы снятия шифрования, как непосредственно и в само шифрование, я лишь отмечу структуру файла ilpatch.cfg:
[code]"строка" checksum length : bytes[/code]
Строка - непосредственно описание которое вы хотите связать с этой инструкцией по снятию шифрования.
checksum - контрольная сумма crc32 - 8 символов, получить можно используя сторонние программы в том числе - ilaunch и ylaunch.
length - размер файла клиента в байтах. Можно посмотреть в свойствах файла или опять-таки через те же сторонние программы
bytes - непосредственно байты которые нужно заменить, через запятую. Конкретный формат:
[code]address = bytes, address = bytes[/code]
Адреса и байты указываются непосредственно в их 16ом виде, можно указывать несколько байт - тогда будет произведена замена нескольких байт подряд.
Следует отметить то, что необходимо указывать виртуальный адрес, а не физический (поправьте меня, если я вдруг в словах запутался) - т.е. непосредственно физический адрес + Image Base, для исполняемых файлов он по умолчанию равен 400000H.
[i]Примечание: checksum и length используется для идентификации клиента, а заданная строка отображается непосредственно в логе - полезно при отладке заданной конфигурации. Кстати, можно править не только байтики отвечающие за снятие шифрования но и любые другие, например написать какую-нибудь гадость в графе Version.[/i]
Идём дальше - мы ввели логин/пароль (или это за нас сделал Injection) - мы жмём на кнопочку - клиент передаёт [b]не шифрованный[/b] пакет Injection - инжа его непосредственно шифрует и передаёт на сервер.
Логичный вопрос - откуда Injection узнает какое у вас на сервере шифрование? - Для этого служит файл UOKeys.cfg, информация из которого отображается в Injection Main в графе Encryption (шифрование), формат файла:
[code]"строка" ключ1 ключ2 тип_шифрования[/code]
Вообще - формат файла описан внутри этого файла, отмечу лишь про то, откуда берутся ключи шифрования.
На самом деле - для шифрования пакетов Injection необходимо знать три ключа, но третий выясняется по ходу дела, поэтому его указывать не нужно. Чтобы выяснить ключи шифрования для конкретной версии клиента - особым талантом обладать не нужно - достаточно заглянуть на форум sphereserver.net - там эта информация давным давно выложена.
Администрация сервера может намеренно изменить алгоритм/ключи шифрования с целью закрыть возможность использования Injection и аналогичных программ. Чтобы запустить Injection в этом случае - нужно по крайней мере не иметь вопроса - а как это сделать, если вопрос возникает - ищите тех, кто сделает это за вас.
Ну и на последок отмечусь ещё про три файла.
1. replaces.cfg - крайне удобная штука, формат:
[code]строка1=строка2[/code]
При включенной соответствующей настройке - позволяет заменить сообщение "строка1" на сообщение "строка2". В случае с клилоками - нужно писать непосредственно #cliloc.. или как их там. Если на ошибаюсь, то на работу функций с журналом влияния не оказывает.
2. Ignition.cfg - грубо говоря - то же самое, что и ilpatch.cfg, но был составлен непосредственно людьми понимающими смысл написанных там цифр.
3. injection_log.txt - самый необходимый файл, если возникают какие-либо проблемы - в нём можно найти исчерпывающую информацию, при включенной настройке Verbose Logging (если всё работает нормально - включать не рекоммендуется). Например, если с клиента некорректно снято шифрование - вполне вероятно, что мы не увидим в этом файле пакета авторизации.. Не проверял, но теоретически это именно так.
На этом всё. Кто не понял - я не виноват.
PS: Для корректной работы двух Injection - я бы рекомендовал запускать их из разных папок и большим плюсом был бы запуск под разными пользователями. Тем не менее, можно и так запустить несколько копий программы и не иметь при этом никаких проблем.
Grin, внеси поправки, а? А я тогда отредактирую первый пост и сотру отсюда всё, ибо нефиг..