Revemu API

Madness aka null138

Участник
Сообщения
713
Реакции
734
Приветствую всех.
Необходим API файл от Revemu(bir3yk). Кто нибудь может скинуть или подсказать где найти и как им пользоваться ?
Несколько лет назад видел такое и на архивах некоторых сайтов тоже вижу обсуждают, но самого API файла и про то как ее использовать ничего не нахожу.
Сообщения автоматически склеены:

Интересует именно проверка игрока на наличие эмулятора. Если можно без APİ такое делать то так же принимается.
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
По итогу данная штука оказалась нерабочим. По какой то причине вызов функции Rev_BGetPlayerInfoBySteamID крашит сервер.
Я даже создал свой код вызова данной функции эмулятора через расширение, но по итогу то же самое.

Самое интересное это то, что саму функцию удается найти, но вызвать его не получается.
В разобранном коде steamclient.so от эмулятора у используемой функции отсутствуют аргументы, не ясно что именно нужно передать, что и скорее всего является причиной краша.

Есть другие способы ?
Пытался реализовать через функцию движка OnValidateAuthTicketResponse а там оно в любом случае возвращает что игрок якобы с лицензией. Видимо автор эмулятора кое что и там пошаманил...
 

Planes

Потерявшиеся точка с запятой
Сообщения
356
Реакции
97
OnValidateAuthTicketResponse
Могу ошибаться, но когда эта функция стала возвращать проверку лицензии? Она возвращает, авторизировал ли сервер клиента и разрешать ли ему дальнейший заход. В большинстве случаев, NonSteam игроки не имеют лицензии игры (но это как повезет) и тут использовать можно SteamWorks функцию
SteamWorks_HasLicenseForAppId
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
Могу ошибаться, но когда эта функция стала возвращать проверку лицензии? Она возвращает, авторизировал ли сервер клиента и разрешать ли ему дальнейший заход. В большинстве случаев, NonSteam игроки не имеют лицензии игры (но это как повезет) и тут использовать можно SteamWorks функцию
SteamWorks_HasLicenseForAppId
в параметре передается.
C-подобный:
ValidateAuthTicketResponse_t pResponse

if(pResponse->m_eAuthSessionResponse == k_EAuthSessionResponseOK)
{
    // steam
}
 

Reg1oxeN

Участник
Сообщения
399
Реакции
314
В разобранном коде steamclient.so от эмулятора у используемой функции отсутствуют аргументы
как это отсутствуют? всегда были и вдруг исчезли?
C++:
char __cdecl Rev_BGetPlayerInfoBySteamID(char a1, int a2, _DWORD *a3)
{
  GameServer::Users::CUser *UserBySteamID; // eax
  GameServer::Users::CUser *v4; // esi
  int UserType; // eax
  _DWORD *v7; // ecx
  int v8; // eax
  int IPAddr; // eax
  int UserID; // eax
  int v11[8]; // [esp+0h] [ebp-20h] BYREF

  UserBySteamID = (GameServer::Users::CUser *)GameServer::Users::CUserManager::GetUserBySteamID(
                                                (GameServer::Users::CUserManager *)&GameServer::Users::cUserManager,
                                                (CSteamID *)&a1);
  v4 = UserBySteamID;
  if ( UserBySteamID )
  {
    UserType = GameServer::Users::CUser::GetUserType(UserBySteamID);
    a3[3] = UserType;
    GameServer::Users::CUser::GetSteamID((GameServer::Users::CUser *)v11);
    v7 = a3;
    v8 = v11[0];
    a3[2] = v11[1];
    v7[1] = v8;
    IPAddr = GameServer::Users::CUser::GetIPAddr(v4);
    a3[4] = IPAddr;
    UserID = GameServer::Users::CUser::GetUserID(v4);
    *a3 = UserID;
    return 1;
  }
  else
  {
    memset(a3, 0, 0x14u);
    return 0;
  }
}

не ясно что именно нужно передать


покажи что ты делаешь, покажи стек краша
 

Madness aka null138

Участник
Сообщения
713
Реакции
734
d
как это отсутствуют? всегда были и вдруг исчезли?
C++:
char __cdecl Rev_BGetPlayerInfoBySteamID(char a1, int a2, _DWORD *a3)
{
  GameServer::Users::CUser *UserBySteamID; // eax
  GameServer::Users::CUser *v4; // esi
  int UserType; // eax
  _DWORD *v7; // ecx
  int v8; // eax
  int IPAddr; // eax
  int UserID; // eax
  int v11[8]; // [esp+0h] [ebp-20h] BYREF

  UserBySteamID = (GameServer::Users::CUser *)GameServer::Users::CUserManager::GetUserBySteamID(
                                                (GameServer::Users::CUserManager *)&GameServer::Users::cUserManager,
                                                (CSteamID *)&a1);
  v4 = UserBySteamID;
  if ( UserBySteamID )
  {
    UserType = GameServer::Users::CUser::GetUserType(UserBySteamID);
    a3[3] = UserType;
    GameServer::Users::CUser::GetSteamID((GameServer::Users::CUser *)v11);
    v7 = a3;
    v8 = v11[0];
    a3[2] = v11[1];
    v7[1] = v8;
    IPAddr = GameServer::Users::CUser::GetIPAddr(v4);
    a3[4] = IPAddr;
    UserID = GameServer::Users::CUser::GetUserID(v4);
    *a3 = UserID;
    return 1;
  }
  else
  {
    memset(a3, 0, 0x14u);
    return 0;
  }
}




покажи что ты делаешь, покажи стек краша
зависит от того чем разбираешь. в моем случае ida и там пусто а копаться по внутренному коду не моя сфера.

1679003458867.png




делаю тоже самое что и автор по ссылке. передаю заполненный класс CSteamID. с тем что передаю определенно проблем нет ибо вручную из него могу доставать то что записано.
а еще сама эта штука уже компиленная так же крашит если через его библиотеку плагином вызвать проверку по индексу игрока. это уже точно не проблема в том что лично я передаю.
по крашу данных нет. пока не поставил accelerator.
 

Vit_ amin

Добрая душа
Сообщения
1,504
Реакции
660
d

зависит от того чем разбираешь. в моем случае ida и там пусто а копаться по внутренному коду не моя сфера.

Посмотреть вложение 110440



делаю тоже самое что и автор по ссылке. передаю заполненный класс CSteamID. с тем что передаю определенно проблем нет ибо вручную из него могу доставать то что записано.
а еще сама эта штука уже компиленная так же крашит если через его библиотеку плагином вызвать проверку по индексу игрока. это уже точно не проблема в том что лично я передаю.
по крашу данных нет. пока не поставил accelerator.
Используйте GDB отладчик (unix), его функционала вполне достаточно, чтобы продебажить что-то даже без IDA
 
Сверху Снизу