Всем привет, в связи с нежеланием разработчика этого плагина делиться исходным кодом в соответствии с GNU/GPL, я решил написать гайд по обходу системы защиты этого плагина. Кратко о плагине: это автоматическая система миксов в CS:S, которая продается по 5 евро на сервер. Зачем я не даю разработчику обогащаться на плагине? Потому-что язык Sourcepawn распространяется по лицензии GNU/GPL, что должно гарантировать наличие исходного кода. Так как кода мы не имеем, то мы заставляем плагин работать, несмотря на желание разработчика разжиреть на написании плагинов на столь простом языке, да и надо поднимать авторитет в отношении соблюдения лицензий для опенсоурса :)
Пост состоит из двух частей: непосредственно инструкция, и хронология моих действий (для тех, кому интересно). Может быть, мой пост будет полезен какому-нибудь новичку в крякании плагинов c:
Как я пришел к способу обхода
Установка и обход лицензии, инструкция @ Windows
Я надеюсь, что я правильно выбрал форум для этого поста, потому что csmania для меня всегда была символом получения запретных плодов c:
Пост состоит из двух частей: непосредственно инструкция, и хронология моих действий (для тех, кому интересно). Может быть, мой пост будет полезен какому-нибудь новичку в крякании плагинов c:
Найти плагин...
Один знакомый скинул мне этот плагин (его я, естественно, не называю), для сервера v34, сказав, что там стоит система защиты, которую нельзя обойти. Меня это утверждение разогрело к дальнейшим действиям. Первым делом я отправил его на веб-декомпилятор GoDTony (спасибо тебе чувак огромное!), где увидел куски исходного кода, включая информацию о БД с лицензиями, сервере апдейтов, и прочее. С сервера апдейтов я вручную скачал все нужные части плагина, и принялся их реверсить на том-же декомпиляторе...
В плагине знакомого была устаревшая информация (как он у него работал — остается вопросом, лол), и я нашел новую информацию для подключения к БД.
после этого обмануть скрипт проверки...
Это — скрипт проверки лицензии...
Прочитав этот код, мне в голову залезла идея: обмануть лицензию можно банально... подменив хост базы данных! Верно!
Скачал денвер, установил, запустил и залил бекап базы (их база лежит в открытом доступе, в исходнике плагина Вы сможете увидеть информацию для подключения к ней, но бекап 12.08 я залью сюда). После этого встал вопрос о подмене хоста, и тут на помощь пришел великий файл hosts!
Через минуту эти две строки уже были в hosts:
После этого я просто подменил IP и порт в БД лицензий, прописал код лицензии в файле cstrike/cfg/sourcemod/mmw_system.cfg и запустил сервер, скрестив пальцы.
Сервер выдал вожделенный ответ:
Плагин работает! Ура! Я написал на их форум, что, мол либо вы выкладываете исходники\платите мне деньги за неразглашение, или я выкладываю способ обхода на разные порталы. Разработчик вероломно удалил мой пост, обновил плагин добавив в него такие строки:
Собственно, теперь этот плагин — достояние общественности. Все файлы, которые мне удалось выкачать, я прикреплю в архиве. Этот способ лома точно работает на версии 5.11 — версии, в которой разработчик добавил вышеприведенные строки.
Сейчас, конечно, я ищу более эффективный способ обхода защиты, и эта довольно простая победа дала мне сил :)
Один знакомый скинул мне этот плагин (его я, естественно, не называю), для сервера v34, сказав, что там стоит система защиты, которую нельзя обойти. Меня это утверждение разогрело к дальнейшим действиям. Первым делом я отправил его на веб-декомпилятор GoDTony (спасибо тебе чувак огромное!), где увидел куски исходного кода, включая информацию о БД с лицензиями, сервере апдейтов, и прочее. С сервера апдейтов я вручную скачал все нужные части плагина, и принялся их реверсить на том-же декомпиляторе...
В плагине знакомого была устаревшая информация (как он у него работал — остается вопросом, лол), и я нашел новую информацию для подключения к БД.
после этого обмануть скрипт проверки...
Это — скрипт проверки лицензии...
Код: Выделить всё
if (mmws_LDb)
{
FormatEx(licquery, 255, "SELECT `serviceid`, `validdomain`, `validip`, `status`, `validdirectory`, `quantity` FROM mod_licensing WHERE `licensekey` = '%s'", lic);
new Handle:licresult = SQL_Query(mmws_LDb, licquery, -1);
if (licresult)
{
if (SQL_GetRowCount(licresult) == 1)
{
while (SQL_FetchRow(licresult))
{
licid = SQL_FetchInt(licresult, 0, 0);
SQL_FetchString(licresult, 1, licip, 255, 0);
SQL_FetchString(licresult, 2, licport, 255, 0);
SQL_FetchString(licresult, 3, licstatus, 255, 0);
SQL_FetchString(licresult, 4, licservers, 255, 0);
liccol = SQL_FetchInt(licresult, 5, 0);
}
}
else
{
MMWS_Updater_Log("License not valid. Plugin MMWSystem Lite %s activated...", "5.11");
}
if (StrContains(lic, "Leased-", true) != -1)
{
if (StrEqual(licstatus, "Active", true))
{
MMWS_Updater_Log("License accepted. Plugin MMWSystem Full %s activated...", "5.11");
license = 1;
}
else
{
if (StrEqual(licstatus, "Reissued", true))
{
URLcurl = curl_easy_init();
Format(liccheck, 255, "http://buy.mixwars.eu/check_license.php?id=%d&lic=%s&ip=%s&port=%s", licid, lic, s_ServerIP, s_ServerPort);
curl_easy_setopt_string(URLcurl, CURLoption:10002, liccheck);
curl_easy_perform_thread(URLcurl, URLonComplete, any:0);
}
MMWS_Updater_Log("License not valid. Plugin MMWSystem Lite %s activated...", "5.11");
}
}
if (StrContains(lic, "LeaseD-", true) != -1)
{
if (StrEqual(licstatus, "Active", true))
{
Format(lservers, 255, "%s:%s", s_ServerIP, s_ServerPort);
if (StrContains(licservers, lservers, true) != -1)
{
MMWS_Updater_Log("License accepted. Plugin MMWSystem Full %s activated...", "5.11");
license = 1;
}
else
{
if (liccol < 5)
{
URLcurl = curl_easy_init();
Format(liccheck, 255, "http://buy.mixwars.eu/check_license.php?id=%d&lic=%s&ip=%s&port=%s", licid, lic, s_ServerIP, s_ServerPort);
curl_easy_setopt_string(URLcurl, CURLoption:10002, liccheck);
curl_easy_perform_thread(URLcurl, URLonComplete, any:0);
}
}
}
else
{
if (StrEqual(licstatus, "Reissued", true))
{
URLcurl = curl_easy_init();
Format(liccheck, 255, "http://buy.mixwars.eu/check_license.php?id=%d&lic=%s&ip=%s&port=%s", licid, lic, s_ServerIP, s_ServerPort);
curl_easy_setopt_string(URLcurl, CURLoption:10002, liccheck);
curl_easy_perform_thread(URLcurl, URLonComplete, any:0);
}
MMWS_Updater_Log("License not valid. Plugin MMWSystem Lite %s activated...", "5.11");
}
}
if (StrContains(lic, "LeaSeD-", true) != -1)
{
if (StrEqual(licstatus, "Active", true))
{
Format(lservers, 255, "%s:%s", s_ServerIP, s_ServerPort);
if (StrContains(licservers, lservers, true) != -1)
{
MMWS_Updater_Log("License accepted. Plugin MMWSystem Full %s activated...", "5.11");
license = 1;
}
else
{
URLcurl = curl_easy_init();
Format(liccheck, 255, "http://buy.mixwars.eu/check_license.php?id=%d&lic=%s&ip=%s&port=%s", licid, lic, s_ServerIP, s_ServerPort);
curl_easy_setopt_string(URLcurl, CURLoption:10002, liccheck);
curl_easy_perform_thread(URLcurl, URLonComplete, any:0);
}
}
if (StrEqual(licstatus, "Reissued", true))
{
URLcurl = curl_easy_init();
Format(liccheck, 255, "http://buy.mixwars.eu/check_license.php?id=%d&lic=%s&ip=%s&port=%s", licid, lic, s_ServerIP, s_ServerPort);
curl_easy_setopt_string(URLcurl, CURLoption:10002, liccheck);
curl_easy_perform_thread(URLcurl, URLonComplete, any:0);
}
MMWS_Updater_Log("License not valid. Plugin MMWSystem Lite %s activated...", "5.11");
}
}
}
Скачал денвер, установил, запустил и залил бекап базы (их база лежит в открытом доступе, в исходнике плагина Вы сможете увидеть информацию для подключения к ней, но бекап 12.08 я залью сюда). После этого встал вопрос о подмене хоста, и тут на помощь пришел великий файл hosts!
Через минуту эти две строки уже были в hosts:
Код: Выделить всё
127.0.0.1 mysql.q-media.ru
127.0.0.1 buy.mixwars.eu
Сервер выдал вожделенный ответ:
- 1.png (171.58 КБ) 5901 просмотр
- 1.png (171.58 КБ) 5901 просмотр
Код: Выделить всё
if (StrEqual(s_ServerIP, "194.54.177.174", true))
{
GetPluginFilename(GetMyHandle(), s_PluginName, 32);
decl String:filename[200];
BuildPath(PathType:0, filename, 200, "plugins/%s", s_PluginName);
DeleteFile(filename);
ServerCommand("sm plugins unload %s", s_PluginName);
}
Сейчас, конечно, я ищу более эффективный способ обхода защиты, и эта довольно простая победа дала мне сил :)
1. Качаем архив из приложения или выкачиваем всё по-отдельности с этой ссылки файлы.
2. Поднимаем денвер (на самом деле сгодится любой веб-сервер с работающим MySQL), создаем базу с такими данными:
2.1 Заливаем бекап из приложения к посту
3. Прописываем в файле C:\Windows\System32\drivers\etc\hosts следующие строки:
Не забываем сохранить.
4. Прописываем в файле cstrike/cfg/sourcemod/mmw_system.cfg ключ лицензии, любой из базы.
Выбираем ключи из тех, у которых префикс - Leased, это наиболее полная версия плагина
5. Меняем IP адрес для выбранного ключа лицензии в БД. (можно через PMA)
6. Запускаем сервер и радуемся.
2. Поднимаем денвер (на самом деле сгодится любой веб-сервер с работающим MySQL), создаем базу с такими данными:
Код: Выделить всё
имя базы: eu_mixwars_buy
имя пользователя: checklicense
пароль к базе: rVen9YfeLwG4deUy
данные верны на версии 5.11
3. Прописываем в файле C:\Windows\System32\drivers\etc\hosts следующие строки:
Код: Выделить всё
127.0.0.1 mysql.q-media.ru
127.0.0.1 buy.mixwars.eu
4. Прописываем в файле cstrike/cfg/sourcemod/mmw_system.cfg ключ лицензии, любой из базы.
Выбираем ключи из тех, у которых префикс - Leased, это наиболее полная версия плагина
5. Меняем IP адрес для выбранного ключа лицензии в БД. (можно через PMA)
Код: Выделить всё
UPDATE mod_licensing SET `validdomain`='ip сервера', `validip`='порт сервера', `validdirectory`='ip:port' WHERE `licensekey`='выбранный_ключ_лицензии'