среда, 30 августа 2017 г.

Работа с памятью в SourcePawn

Вступление

Доброго времени суток всем. Не так давно я решил заняться собственным сервером Team Fortress 2, и для этого мне понадобилось написание плагинов с помощью SourcePawn. Я начал изучать этот язык относительно недавно и в целом он мне нравится, за исключением некоторых моментов, о которых я бы хотел поговорить сегодня, а также обсудить решения для них.

среда, 29 июня 2016 г.

Создаём нативный лаунчер для Half-Life 1

Вступление

Недавно мне поступил заказ на реализацию лаунчера для Counter-Strike 1.6. В некоторых уже существующих игровых сборках мне доводилось видеть лаунчеры, но это были отдельные исполняемые файлы, которые дополняли уже имеющийся функционал файла "hl.exe" своим (автообновление файлов, например). Приняв решение не идти по такой дорожке, я решил создать свой аналог "hl.exe", которым можно будет заменить оригинал и который будет совмещать в себе функции оригинала и мои собственные. Лаунчер был написан, поэтому хотелось бы поделиться опытом, а также написать ещё один самый простой лаунчер для Windows прямо в этой статье.

Предупрежу, что язык программирования - Delphi. Если вы уверены в своих знаниях языка C/C++, то преобразовать Delphi код в C/C++ вам не составит труда, в противном случае продолжайте на свой страх и риск.

четверг, 21 апреля 2016 г.

Уязвимости работы с файлами в Counter-Strike

Вступление

В данной статье мне бы очень хотелось рассмотреть с вами одну интересную заднюю дверь, которая существует в клиентах и серверах движка GoldSource ниже 5999 билда. Она позволяет серверам менять игрокам файлы, записывая в них свой мастерсервер или редактируя игровое меню, добавляя туда кнопку своего сервера. Клиентам же она позволяет загружать на сервера различные конфигурационные файлы (cfg), благодаря которым можно, например, установить свой rcon_password.
Проанализировав ссылки поисковой системы Google я пришел к выводу, что эта тема до сих пор не была полностью раскрыта. Всех, кто просил рассказать про это дело - гнали к шею. И есть за что, на самом деле, так как вряд ли сообщество захотело бы, чтобы в нём появился ещё один сервер, который навязывает свой мастерсервер и игровое меню. Но сейчас я всё же хочу рассказать, как это работает во всех деталях, так как я нахожу эту тему довольно интересной и загадочной, а в конце мы попробуем отредактировать себе файл MasterServer.vdf через motd_write. Наберитесь терпения, так как текста будет достаточно.
Чтобы понять, в чем проблема движка, который позволяет себе выполнять такие вещи с файловой системой, нужно поинтересоваться у него самого по этому поводу. Я это уже сделал сам и сейчас всё расскажу.