Ir para conteúdo
Fórum Script Brasil

KevinDavid

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre KevinDavid

KevinDavid's Achievements

0

Reputação

  1. Olá pessoal ! Estou a tentar implantar um AntiCheat de nome Xtrap no meu primeiro jogo, porém, estou encontrando dificuldades na execução do mesmo sob o Xtrap. Tenho o projeto do meu primeiro jogo, onde haveria o GameClientLauncher e o GameClientMain principais para a implementação, sendo assim, incluo o arquivo com o código do XtrapLauncher no meu GameClientLauncher e o mesmo não é iniciado após a inicialização do meu primeiro jogo após compilação. Meu código está escrito em VS90. Ao iniciar o GameJoin.exe o jogo carrega normalmente, sem a atualização do Xtrap antes da execução real do GameJoin.exe Quem puder contribuir a nível de informação e complemento dos meus estudos ficarei grato. * Lembrando que os exemplos segue somente a linha do GameClientLauncher. Segue o código do meu GameClientLauncher.cpp #include "Xtrap4_Launcher.h" #include "GameClientMain.h" #include "GameClientPCH.h" #include "GameClientLauncher.h" #include "shlwapi.h" namespace NLauncher { #define TSTR_CMDARG_GIDX _T("/gidx:") #define TSTR_CMDARG_STRID _T("/strid:") #define TSTR_CMDARG_KEY _T("/key:") #define TSTR_CMDARG_CONNECT_IP _T("/connetip:") #define TSTR_CMDARG_CONNECT_PORT _T("/connetport:") #define TSTR_CMDARG_CHANNEL_INDEX _T("@") #define TSTR_LAUNCHER_SETUP _T("LauncherSetup.exe") #define TSTR_LAUNCHER_EXE _T("LaunchLinker.exe") #define TSTR_SETUP_TEST_SERVER _T("SetupTestServer.exe") #if defined( _DEBUG ) #define _TSTR_GAMEJOIN_EXE _T("GameJoin.exe") #else #define _TSTR_GAMEJOIN_EXE _T("GameJoin.exe") #endif void SetCmdLine( LPTSTR lpCmdLine ) { size_t nSize = 0; TCHAR szTemp[MAX_PATH] = _T(""); TCHAR* lpNextToken = NULL; TCHAR* lpNextToken1 = NULL; lpCmdLine = ::_tcstok_s( lpCmdLine, _T(" "), &lpNextToken ); do { std::tstring strCmd = lpCmdLine; if( strCmd.find( TSTR_CMDARG_GIDX ) != std::tstring::npos ) { nSize = _tcslen( TSTR_CMDARG_GIDX ); _tcscpy_s( szTemp, _countof( szTemp ), &lpCmdLine[nSize] ); m_stCmdArgs.nGameIdx = _ttoi( szTemp ); } else if( strCmd.find( TSTR_CMDARG_STRID ) != std::tstring::npos ) { nSize = _tcslen( TSTR_CMDARG_STRID ); _tcscpy_s( m_stCmdArgs.szUserID, _countof( m_stCmdArgs.szUserID ), &lpCmdLine[nSize] ); std::tstring strChannelIndex = m_stCmdArgs.szUserID; size_t nPos = strChannelIndex.find_first_of( TSTR_CMDARG_CHANNEL_INDEX ); if( nPos == std::tstring::npos ) { m_stCmdArgs.nChannelIdx = CT_GAMECLUB; } else { TCHAR szTemp[MAX_PATH] = _T(""); _tcscpy_s( szTemp, _countof( szTemp ), &strChannelIndex.c_str()[nPos+1] ); m_stCmdArgs.nChannelIdx = static_cast< EChannelType >( _ttoi( szTemp ) ); } } else if( strCmd.find( TSTR_CMDARG_KEY ) != std::tstring::npos ) { nSize = _tcslen( TSTR_CMDARG_KEY ); _tcscpy_s( m_stCmdArgs.szKey, _countof( m_stCmdArgs.szKey ), &lpCmdLine[nSize] ); } else if( strCmd.find( TSTR_CMDARG_CONNECT_IP ) != std::tstring::npos ) { nSize = _tcslen( TSTR_CMDARG_CONNECT_IP ); _tcscpy_s( m_stCmdArgs.szServerIp, _countof( m_stCmdArgs.szServerIp ), &lpCmdLine[nSize] ); } else if( strCmd.find( TSTR_CMDARG_CONNECT_PORT ) != std::tstring::npos ) { nSize = _tcslen( TSTR_CMDARG_CONNECT_PORT ); _tcscpy_s( szTemp, _countof( szTemp ), &lpCmdLine[nSize] ); m_stCmdArgs.nServerPort = _ttoi( szTemp ); } } while ( ( lpCmdLine = ::_tcstok_s( NULL, _T(" "), &lpNextToken ) ) != NULL ); m_eConnectType = _tcslen( m_stCmdArgs.szKey ) > 0 ? CT_WEB : CT_LAUNCHER; } WORD GetGameIdx() { return m_stCmdArgs.nGameIdx; } WORD GetServerPort() { return m_stCmdArgs.nServerPort; } LPCTSTR GetKey() { return m_stCmdArgs.szKey; } LPCTSTR GetUserID() { return m_stCmdArgs.szUserID; } LPCTSTR GetServerIp() { return m_stCmdArgs.szServerIp; } EConnectType GetConnectType() { return m_eConnectType; } EChannelType GetChannelType() { return m_stCmdArgs.nChannelIdx; } void CheckGUITextureOfLowLevelUse() { m_bUseGUITextureOfLowLevel = NUtil::CheckGUITextureOfLowLevelUse(); } bool GetGUITextureOfLowLevelUseFlag() { return false;} bool IsGameClientLaunching( LPTSTR lpCmdLine ) { if ( lpCmdLine ) { std::tstring strCmdLine = lpCmdLine; if ( strCmdLine.find( TSTR_CMDARG_GIDX ) == std::tstring::npos ) return false; if ( strCmdLine.find( TSTR_CMDARG_STRID) == std::tstring::npos ) return false; if ( strCmdLine.find( TSTR_CMDARG_KEY ) == std::tstring::npos ) return false; return true; } return false; } bool IsLauncherInstalled() { DWORD dwType = 0; TCHAR achData[MAX_PATH] = { 0, }; DWORD dwDataSize = MAX_PATH; LONG lReturn = SHGetValue( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\GameJoin\\Launcher"), _T("ProgramName"), &dwType, achData, &dwDataSize ); if ( lReturn != ERROR_SUCCESS ) { return false; } lReturn = SHGetValue( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\GameJoin\\Launcher"), _T("ProgramPath"), &dwType, achData, &dwDataSize ); if ( lReturn != ERROR_SUCCESS ) { return false; } return true; } //---------------------------------------------------------------------------- /** @note */ //---------------------------------------------------------------------------- bool IsSetupDevTestServer() { DWORD dwType = 0; DWORD dwData = 0; DWORD dwDataSize = sizeof( DWORD ); LONG lReturn = SHGetValue( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\GameJoin\\GameJoin"), _T("SetupDevTestServer"), &dwType, &dwData, &dwDataSize ); if ( lReturn != ERROR_SUCCESS ) { return false; } if ( dwType != REG_DWORD ) { return false; } return ( dwData == 1 ); } bool SetupDevTestServerKey() { DWORD dwType = REG_DWORD; DWORD dwData = 1; DWORD dwDataSize = sizeof( DWORD ); LONG lReturn = SHSetValue( HKEY_LOCAL_MACHINE, _T("SOFTWARE\\GameJoin\\GameJoin"), _T("SetupDevTestServer"), dwType, &dwData, dwDataSize ); if ( lReturn != ERROR_SUCCESS ) { return false; } return true; } bool ExecuteProcess( const TCHAR* pchFileName, const TCHAR* pchSubDir ) { TCHAR chPathName[MAX_PATH] = { 0, }; TCHAR* pchFileNamePos = 0; if ( GetFullPathName( pchFileName, MAX_PATH, chPathName, &pchFileNamePos ) ) { *pchFileNamePos = 0; std::tstring strExecFile = chPathName; if ( pchSubDir ) { strExecFile += pchSubDir; strExecFile += _T("\\"); } strExecFile += pchFileName; HINSTANCE hInstance = ShellExecute( 0, _T("open"), strExecFile.c_str(), NULL, NULL, 0 ); return ( int(hInstance) > 32 ); } return false; } bool WaitExitForProcess( const TCHAR* pchFileName, const TCHAR* pchSubDir ) { TCHAR chPathName[MAX_PATH] = { 0, }; TCHAR* pchFileNamePos = 0; if ( GetFullPathName( pchFileName, MAX_PATH, chPathName, &pchFileNamePos ) ) { *pchFileNamePos = 0; std::tstring strExecFile = chPathName; if ( pchSubDir ) { strExecFile += pchSubDir; strExecFile += _T("\\"); } strExecFile += pchFileName; _tcscpy( chPathName, strExecFile.c_str() ); STARTUPINFO si = { 0, }; PROCESS_INFORMATION pi = { 0, }; BOOL bRet = CreateProcess( NULL, chPathName, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi ); if ( bRet ) { Sleep( 200 ); WaitForSingleObject( pi.hProcess, INFINITE ); return true; } } return false; } //---------------------------------------------------------------------------- /** * @note */ //---------------------------------------------------------------------------- bool CheckDevTestStartup( LPTSTR lpCmdLine ) { if ( !IsGameClientLaunching( lpCmdLine ) ) { { if ( !WaitExitForProcess( TSTR_LAUNCHER_SETUP, _T("System") ) ) { GUI::TempString strMsg, strTitle; _GetGUIText( 101601312, strMsg ); _GetGUIText( 101601313, strTitle ); ::MessageBox( 0, strMsg.c_str(), strTitle.c_str(), MB_OK ); return false; } } if ( !ExecuteProcess( TSTR_LAUNCHER_EXE, 0 ) ) { GUI::TempString strMsg, strTitle; _GetGUIText( 101601314, strMsg ); _GetGUIText( 101601315, strTitle ); ::MessageBox( 0, strMsg.c_str(), strTitle.c_str(), MB_OK ); return false; } return false; } else { } return true; } } Seguido da inclusão no GameClientLauncher: Xtrap4_Launcher.h #pragma comment(lib, "urlmon.lib") #pragma comment(lib, "wininet.lib") #include "urlmon.h" #pragma comment(lib, "XTrap4Launcher_mt.lib") #pragma comment(lib, "XTrap4Launcher_mt.lib") #pragma comment(lib, "XTrap4Launcher_mtDll.lib") #include "XTrap4Launcher.h" void OnBtGameStart() { CHAR szXTrapArg[] = "URL"; CHAR szGame[] = "\\GameJoin.exe"; OSVERSIONINFO osvi = {NULL,}; SHELLEXECUTEINFO sei = { NULL,}; osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); sei.cbSize = sizeof(SHELLEXECUTEINFO); GetVersionEx(&osvi ); if(osvi.dwMajorVersion == 6) sei.lpVerb = "runas"; sei.lpFile = sGameClient; sei.nShow = SW_SHOWNORMAL; XTrap_L_Patch( szXTrapArg ,NULL ,60 ); ShellExecuteEx(&sei); } Seguida da inclusão do: Xtrap4_Launcher.h #ifndef __XTRAPAPI_LAUNCHER_H #define __XTRAPAPI_LAUNCHER_H VOID XTrap_L_Patch( IN LPCSTR lpArgv, IN LPCSTR lpGamePath, IN DWORD dwTimeout ); VOID XTrap_L_Patch( IN LPCSTR lpArgv, IN LPCSTR lpGamePath, IN DWORD dwTimeout, OUT LPCSTR pMsg, OUT LPCSTR pErrCode, OUT BOOL *pErrFlag ); #endif
×
×
  • Criar Novo...