• Добро Пожаловать к нам на Форум Гость! Если вы еще не зарегистрировались просим вас зарегистрироваться!

  • Для того что бы скачивать с нашего форума, нужно зарегистрироватся!

  • Скачати Counter-Strike 1.6 by Five STARS
  • Цены на серверах: Админка 100 грн/мес Випка 50 грн/мес.

Иконка ресурса

Resources Checker 2.5

Нет прав для скачивания
  • Автор Автор qpi3ik
  • Дата создания Дата создания
Установка
  • Распаковываем rechecker_X_X.zip в папку <gamedir> вашей игры.
  • Добавляем библиотеку rechecker_mm_i386.so или rechecker_mm.dll в зависимости от используемой ОС в конфиг MetaMod.
    Для этого открываем <gamedir>/addons/metamod/plugins.ini (если его нет, создаем сами) и пишем:
    Linux:
    linux addons/rechecker/rechecker_mm_i386.so
    Windows:
    win32 addons\rechecker\rechecker_mm.dll
  • Из извлеченного архива rechecker_X_X.zip будет присутствовать файл resources.ini который должен лежать рядом с библиотекой rechecker_mm.dll или rechecker_mm_i386.so

  • Запускаем сервер и командой meta list проверяем статус
    Linux:
    Currently loaded plugins:
    description stat pend file vers src load unlod
    [ 1] Rechecker RUN - rechecker_mm_i386.so vX.X ini Chlvl Any
    Windows
    Currently loaded plugins:
    description stat pend file vers src load unlod
    [ 1] Rechecker RUN - rechecker_mm.dll vX.X ini Chlvl Any
  • Установка Rechecker завершена
Настройка
Описание флагов:
  • UNKNOWN - Если вам неизвестен хэш, при таком флаге будет искать файл с любым хэшем.
  • IGNORE - Это флаг который помечает данный файл с хэшем в игнорируемый список.
  • MISSING - Обнаружение отсутствие файла у клиента.

    Если 2 файла с указанным хэшем и с флагом IGNORE были обнаружены,
    то для UNKNOWN они будут проигнорированы

    "../qwerty.dll" 099b3b06 IGNORE
    "../qwerty.dll" f284f878 IGNORE
    "../qwerty.dll" UNKNOWN "addip 1440 [ip]"



  • BREAK - Этот флаг выходит из всех проверок если файл был обнаружен или наоборот отсутствует.

    Ниже предоставлен пример, при обнаружении файла antichet.dll будет выход из цикла,
    дальнейшие проверки выполняться не будут.

    "../anticheat.dll" bdc52384 BREAK
    "../opengl32.dll" 0ee4e274 "addip 1440 [ip]"
Разбор лога:
  • exphash - `expected hash` хэш который ожидает получить
  • got - хэш который пришел от клиента
  • typeFind- тип обнаружения
    • exists - сравнение хэша `exphash == got`
    • missing - проверка на отсутствие файла `prevhash == got`
    • ignore - файлы помеченные в игнор
    • hash_any - проверка на любой хэш `prevhash != got`


  • prevhash - хэш предыдущего файла prevfile
  • prevfile - предыдущий файл
  • md5hex - хэш как указан в resources.ini, тоже самое что и exphash - разница только в порядке байтов от младшего к старшему
  • findathash - встречался ли ранее такой хэш во всех проверяемых файлов
Форматирование строк:
  • [name] - Имя игрока
  • [ip] - IP Адрес игрока
  • [userid] - идентификатор игрока
  • [steamid] - Steamid игрока

  • [file_name] - имя проверяемого файла
  • [file_hash] - хэш проверяемого файла который вернул клиент
    (Внимание: этот хэш big-endian, если вы хотите получить хеш для последующего применения в resources.ini то используйте file_md5hash)
  • [file_md5hash] - хэш проверяемого файла который вернул клиент

Полезные примечания:
  • Причину наказания или оповещения можно заключать в одинарные кавычки. "amx_kick [userid] 'Opengl32 Detected'"
  • md5 хэш c8005c526355d8015d462dc7f4ddb159 достаточно иметь первые 4 байта (c8005c52)
API
Код:
Расширять Коллапс Копировать
#if defined _reapi_rechecker_included
    #endinput
#endif
#define _reapi_rechecker_included

enum ResourceType
{
    RES_TYPE_NONE = 0,
    RES_TYPE_EXISTS,    // to comparison with the specified hash value
    RES_TYPE_MISSING,   // check it missing file on client
    RES_TYPE_IGNORE,    // ignore the specified hash value
    RES_TYPE_HASH_ANY,  // any file with any the hash value
};

enum ReCheckerFunc
{
    /*
    * Description:   -
    * Params:        (const client, const filename[], const cmd[], const ResourceType:type, const responseHash, bool:isBreak)
    */
    RC_FileConsistencyProcess = BEGIN_FUNC_REGION(rechecker),

    /*
    * Description:   -
    * Params:        (const client)
    */
    RC_FileConsistencyFinal,

    /*
    * Description:   -
    * Params:        (const client, const filename[], const cmd[], const responseHash)
    */
    RC_CmdExec,

    // [...]
};

/*
* Send request the file for the client to get hash
*
* @param file           The file (Can contain a relative path to the file)
* @param function       The forward to call
* @param type           The request type, can be only RES_TYPE_EXISTS, RES_TYPE_MISSING or RES_TYPE_HASH_ANY
* @param hash           Hash of file to request.
*
* @return               Returns a hook handle. Use UnRegisterQueryFile to remove the forward
*
*/
native QueryFileHook:RegisterQueryFile(const file[], const function[], const ResourceType:type, const hash = -1);

/*
* Unregister the forward.
* Use the return value from RegisterQueryFile as the parameter here!
*
* @param hook           The hook to remove
*
* @return               Returns true if the hook is successfully removed, otherwise false
*
*/
native bool:UnRegisterQueryFile(QueryFileHook:hook);
Назад
Сверху