- 01, Dec 2014
- #1
И сегодня я расскажу - как сделать что бы админку на вашем сервере не взломали т.к многие люди качают мод с public, тем самым ставят себя под угрозу взлома.
Начнем с того что многие говорят: "У меня в моде можно выдать себе адм какой-то командой/функцией". Ну что-ж сейчас я немного расскажу вам про это.
Как же постараться найти эту дырку.
1. Находим переменную Admin.
В мое случае это
Код
Player[playerid][pAdmin]
2. Выделяем и копируем саму переменную а именно:
Код
pAdmin
3. Жмем Ctrl+F вписываем туда pAdmin. И листаем и ищем когда вам покажется код странным:
Например :
Код
CMD:vladhaker(playerid,params[]) return Player[playerid][pAdmin] = 6;
Рассматриваем эту команду видно что дается админ просто так, нету никаких проверок. И мы просто убираем эту команду.
P.S многие создают команду в include, так-что прошу если не нашли команду в моде поищите во всех include которых использует ваш мод.
Далее: "У меня в моде кто-то узнает мои id базы данных". Расскажу и про это.
1. Находим #define всех данных от БД.
В моем случае это:
Код
#define Sql_BD "Igoreshkamod"
2. Копируем и вставляем в поиск(в моем случае Sql_BD), повторюсь поиск CTRL+F. Вы должны скорей всего найти что-то типо.
Код
SendClientMessage(playerid,-1,""Sql_BD" и т.д");
Если нашли смело удаляем данную команду/функцию.
Далее: "Если у меня был дом, потом я вышел и кто-то зашел и у него тот-же дом как и у меня".
Это всемирная ошибка сам сталкивался с таким.
А проблема решается легко.
Просто нужно при Connect либо DisConnect задавать переменную на default значение.
Код
public OnPlayerConnect(playerid)
{
Player[playerid][pHouse] = 0;
Многие спрашивают "зачем?".
Объясню:
playerid-это какое-то число а точнее ваш порядковый номер на сервере.
Если я купил дом то в мою переменную Player[playerid][pHouse] = 32;
То есть если у меня id 1.
То человек который заходит на сервер и имеет id 1. Его переменной pHouse = 32.
Ну вот и всё. Всем удачи.
Начнем с того что многие говорят: "У меня в моде можно выдать себе адм какой-то командой/функцией". Ну что-ж сейчас я немного расскажу вам про это.
Как же постараться найти эту дырку.
1. Находим переменную Admin.
В мое случае это
Код
Player[playerid][pAdmin]
2. Выделяем и копируем саму переменную а именно:
Код
pAdmin
3. Жмем Ctrl+F вписываем туда pAdmin. И листаем и ищем когда вам покажется код странным:
Например :
Код
CMD:vladhaker(playerid,params[]) return Player[playerid][pAdmin] = 6;
Рассматриваем эту команду видно что дается админ просто так, нету никаких проверок. И мы просто убираем эту команду.
P.S многие создают команду в include, так-что прошу если не нашли команду в моде поищите во всех include которых использует ваш мод.
Далее: "У меня в моде кто-то узнает мои id базы данных". Расскажу и про это.
1. Находим #define всех данных от БД.
В моем случае это:
Код
#define Sql_BD "Igoreshkamod"
2. Копируем и вставляем в поиск(в моем случае Sql_BD), повторюсь поиск CTRL+F. Вы должны скорей всего найти что-то типо.
Код
SendClientMessage(playerid,-1,""Sql_BD" и т.д");
Если нашли смело удаляем данную команду/функцию.
Далее: "Если у меня был дом, потом я вышел и кто-то зашел и у него тот-же дом как и у меня".
Это всемирная ошибка сам сталкивался с таким.
А проблема решается легко.
Просто нужно при Connect либо DisConnect задавать переменную на default значение.
Код
public OnPlayerConnect(playerid)
{
Player[playerid][pHouse] = 0;
Многие спрашивают "зачем?".
Объясню:
playerid-это какое-то число а точнее ваш порядковый номер на сервере.
Если я купил дом то в мою переменную Player[playerid][pHouse] = 32;
То есть если у меня id 1.
То человек который заходит на сервер и имеет id 1. Его переменной pHouse = 32.
Ну вот и всё. Всем удачи.