Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MiniA.cpp : Defines the entry point for the application.
- //
- #include "stdafx.h"
- #include "resource.h"
- #include "HShield.h"
- #include "HSUpChk.h"
- #include <assert.h>
- #include <stdio.h>
- #include <winsock2.h>
- #include <process.h>
- #include "NetSvMngr.h"
- #define MAX_LOADSTRING 100
- // Global Variables:
- HINSTANCE hInst; // current instance
- TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
- TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar text
- DWORD g_dwMainThreadID;
- TCHAR g_szHShieldPath[MAX_PATH] = {0,};
- TCHAR g_szIniPath[MAX_PATH] = {0,};
- int g_nServerPort = 0;
- char g_szServerIP[20] = {0,};
- // Foward declarations of functions included in this code module:
- ATOM MyRegisterClass(HINSTANCE hInstance);
- BOOL InitInstance(HINSTANCE, int);
- LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
- LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);
- int __stdcall AhnHS_Callback(long lCode, long lParamSize, void* pParam);
- UINT
- WINAPI
- NetworkThreadProcClient ( LPVOID lParam );
- void GetEnvInfoFromIni(void);
- //
- __inline void TRACE(LPCTSTR szFormat, ... )
- {
- TCHAR szMsg[1024];
- ZeroMemory(szMsg, 1024);
- va_list vargs;
- va_start( vargs, szFormat );
- _vsntprintf( szMsg + _tcslen(szMsg), sizeof(szMsg), szFormat, vargs );
- va_end( vargs );
- OutputDebugString(szMsg);
- }
- int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow)
- {
- TCHAR *pEnd = NULL;
- TCHAR szFullFileName[MAX_PATH] = { 0, };
- TCHAR szMsg[255];
- int nRet;
- g_dwMainThreadID = GetCurrentThreadId();
- LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
- // ÇöÀç ÇÁ·Î¼¼½º ½ÇÇà ±âÁØÀ¸·Î FULL-PATH¸¦ ¾òÀ½
- GetModuleFileName(NULL, szFullFileName, MAX_PATH);
- pEnd = _tcsrchr( szFullFileName, _T('\\')) + 1;
- if (!pEnd)
- {
- return FALSE;
- }
- *pEnd = _T('\0');
- _stprintf(g_szIniPath, _T("%s"), szFullFileName);
- _stprintf(g_szHShieldPath, _T("%s\\HShield"), szFullFileName); // HShield-Path ¼¼ÆÃ
- _tcscat(szFullFileName, _T("HShield\\EhSvc.dll")); // EHSVC.DLL =Path ¼¼ÆÃ.
- _tcscat(g_szIniPath, _T("MiniAEnv.INI")); // MiniAEnv.ini Path ¼¼ÆÃ
- // INIÆÄÀϷκÎÅÍ È¯°æÁ¤º¸¸¦ ÀÐÀ½(È®Àå¼¹ö¿¬µ¿ »ç¿ë À¯¹«, ¼¹ö IP, ¼¹ö PORT)
- GetEnvInfoFromIni();
- // HS-Monitoring ¼ºñ½º »ç¿ëÀ» À§ÇÑ ±¸Á¶Ã¼ ¼±¾ð
- AHNHS_EXT_ERRORINFO HsExtError;
- // ¾ÆÀ̵𳪠¸ð´ÏÅ͸µ ÁÖ¼Ò, °ÔÀÓ¹öÀüµîÀº ¾Ïȣȳª ÀÎÄÚµù ÇÏ¿© º¸°üÇÏ¿´´Ù°¡ ½ÇÁ¦ ¾Æ·¡ ÇÔ¼ö¿¡ ÀԷ½Ã
- // º¹È£È³ª µðÄÚµù ÇÏ¿© ÀÔ·ÂÇÏ´Â °ÍÀÌ ÁÁ´Ù.
- sprintf( HsExtError.szServer, "%s", "210.121.169.209" ); // ¸ð´ÏÅ͸µ ¼¹öÁÖ¼Ò
- sprintf( HsExtError.szUserId, "%s", "GameUser" ); // À¯Àú ¾ÆÀ̵ð
- // _AhnHS_Initialize½ÃÁ¡¿¡ ¾ÆÀ̵𸦠¾òÀ» ¼ö ¾ø´Â °æ¿ì¿¡´Â ³Î ½ºÆ®¸µÀ» ÀÔ·ÂÇÑ´Ù.
- // ¾ÆÀ̵𸦠¾ò´Â ½ÃÁ¡¿¡ _AhnHS_SetUserId¸¦ È£ÃâÇÏ¿© ¾ÆÀ̵𸦠Àü¼ÛÇÑ´Ù.
- // sprintf( HsExtError.szUserId, "%s", "" );
- sprintf( HsExtError.szGameVersion, "%s", "1.0.0.1" ); // °ÔÀÓ ¹öÀü
- // -------------------------------------------------------------------------
- // [_AhnHS_StartMonitor]
- // -------------------------------------------------------------------------
- // - DESCRIPTION:
- // ÇÙ½¯µå ¸ð´ÏÅ͸µ ¼ºñ½º¸¦ ½ÃÀÛÇÕ´Ï´Ù.
- // - SYNTAX:
- // EHSVC_API int __stdcall _AhnHS_StartMonitor(AHNHS_EXT_ERRORINFO HsExtError, LPCSTR szFullFileName)
- //
- // . AHNHS_EXT_ERRORINFO HsExtErrorInfo : AHNHS_EXT_ERRORINFO HsExtErrorInfo : ¸ð´ÏÅ͸µ °ü·Ã ÀÔ·Â Á¤º¸µé
- // - ¼¹ö URLÁÖ¼Ò. ( "123.456.789.123" or "www.monitor.com" )
- // - User ID ( "User1" )
- // - Game Version ( "5.0.2.1" )
- // . szFullFileName : EHSVC.DLL Àüü °æ·Î
- //
- // - RETURN VALUE:
- // . HS_ERR_OK : ¼º°ø
- // . ±âŸ : ±âŸ ¸®ÅÏ°ª¿¡ ´ëÇؼ´Â ÇÙ½¯µå ÇÁ·Î±×·¡¹Ö °¡À̵å Âü°í¹Ù¶÷.
- //
- nRet = _AhnHS_StartMonitor( HsExtError, szFullFileName );
- if (nRet != HS_ERR_OK)
- {
- _stprintf(szMsg, _T("¸ð´ÏÅ͸µ ±â´É¿¡ ¹®Á¦°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù.(Error Code = %x)\nÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù."), nRet);
- MessageBox(NULL, szMsg, szTitle, MB_OK);
- return FALSE;
- }
- // -------------------------------------------------------------------------
- // [_AhnHS_Initialize]
- // -------------------------------------------------------------------------
- // - DESCRIPTION:
- // ÃʱâÈ ÇÔ¼ö È£Ãâ
- // HackShield¸¦ ÃʱâÈÇÏ°í, ¿É¼ÇÀ» ¼³Á¤ÇÕ´Ï´Ù.
- // ÇÁ·Î±×·¥ÀÌ Ãʱâ鵃 ¶§ ÇÑ ¹ø¸¸ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù.
- // ´Ù¸¥ °ÔÀÓ ÇÁ·Î±×·¥¿¡¼ HackShield¸¦ »ç¿ëÇÏ°í Àְųª ¼ºñ½º°¡ ºñÁ¤»óÀûÀ¸·Î
- // Á¾·áµÇ¾úÀ» °æ¿ì ¿À·ù°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.
- //
- // - SYNTAX:
- // EHSVC_API int __stdcall _AhnHS_Initialize(const char* szFileName, PFN_AhnHS_Callback pfn_Callback,
- // int nGameCode, const char* szLicenseKey, DWORD dwOption,
- // UINT unAdditionalRatio)
- // . szFileName : EHSvc.dllÀÇ Àüü °æ·Î
- // . Pfn_Callback : Callback ÇÔ¼öÀÇ Æ÷ÀÎÅÍ
- // . nGameCode : 4ÀÚ¸® ¼ýÀÚ °¢ °ÔÀÓ¿¡ ÇØ´çÇÏ´Â °íÀ¯ ID ÄÚµå
- // . szLicenseKe : 24ÀÚ¸® ¹®ÀÚ¿ °¢ °ÔÀÓ¿¡ ÇØ´çÇÏ´Â ¶óÀ̼±½º Å°
- // . dwOption : ÃʱâÈ ¿É¼Ç ¼³Á¤
- // . unAdditionalRatio : Ãß°¡ÀûÀÎ ºñÀ² ¿É¼Ç ¼³Á¤ (½ºÇǵå ÇÙ °¨ÁöÀ² ·¹º§ , Self-Destruction ½Ã°£ ·¹º§)
- //
- // - OPTIONS:
- // ÇÙ½¯µå ÇÁ·Î±×·¡¹Ö °¡À̵å Âü°í¹Ù¶÷.
- //
- // - RETURN VALUE:
- // . HS_ERR_OK : ¼º°ø
- // . ±âŸ : ±âŸ ¸®ÅÏ°ª¿¡ ´ëÇؼ´Â ÇÙ½¯µå ÇÁ·Î±×·¡¹Ö °¡À̵å Âü°í¹Ù¶÷.
- nRet = _AhnHS_Initialize(szFullFileName, AhnHS_Callback,
- 1000, "B228F2916A48AC24",
- AHNHS_CHKOPT_ALL,
- AHNHS_SPEEDHACK_SENSING_RATIO_NORMAL|AHNHS_SELFDESTRUCTION_RATIO_NORMAL);
- //¾Æ·¡ ¿¡·¯´Â °³¹ß°úÁ¤¿¡¼¸¸ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¸é
- //ÀÌÈÄ °áÄÚ ¹ß»ýÇؼ´Â ¾ÈµÇ´Â ¿¡·¯À̹ǷΠassert󸮸¦ Çß½À´Ï´Ù.
- assert(nRet != HS_ERR_INVALID_PARAM);
- assert(nRet != HS_ERR_INVALID_LICENSE);
- assert(nRet != HS_ERR_ALREADY_INITIALIZED);
- if (nRet != HS_ERR_OK)
- {
- //Error ó¸®
- switch(nRet)
- {
- case HS_ERR_ANOTHER_SERVICE_RUNNING:
- {
- MessageBox(NULL, _T("´Ù¸¥ °ÔÀÓÀÌ ½ÇÇàÁßÀÔ´Ï´Ù.\nÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù."), szTitle, MB_OK);
- break;
- }
- case HS_ERR_INVALID_FILES:
- {
- MessageBox(NULL, _T("À߸øµÈ ÆÄÀÏ ¼³Ä¡µÇ¾ú½À´Ï´Ù.\nÇÁ·Î±×·¥À» À缳ġÇϽñ⠹ٶø´Ï´Ù."), szTitle, MB_OK);
- break;
- }
- case HS_ERR_DEBUGGER_DETECT:
- {
- MessageBox(NULL, _T("ÄÄÇ»ÅÍ¿¡¼ µð¹ö°Å ½ÇÇàÀÌ °¨ÁöµÇ¾ú½À´Ï´Ù.\nµð¹ö°ÅÀÇ ½ÇÇàÀ» ÁßÁö½ÃŲ µÚ¿¡ ´Ù½Ã ½ÇÇà½ÃÄÑÁֽñâ¹Ù¶ø´Ï´Ù."), szTitle, MB_OK);
- break;
- }
- case HS_ERR_NEED_ADMIN_RIGHTS:
- {
- MessageBox(NULL, _T("Admin ±ÇÇÑÀ¸·Î ½ÇÇàµÇ¾î¾ß ÇÕ´Ï´Ù.\nÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù."), szTitle, MB_OK);
- break;
- }
- case HS_ERR_COMPATIBILITY_MODE_RUNNING:
- {
- MessageBox(NULL, _T("ȣȯ¼º ¸ðµå·Î ÇÁ·Î±×·¥ÀÌ ½ÇÇàÁßÀÔ´Ï´Ù.\nÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù."), szTitle, MB_OK);
- break;
- }
- default:
- {
- _stprintf(szMsg, _T("ÇØÅ·¹æÁö ±â´É¿¡ ¹®Á¦°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù.(Error Code = %x)\nÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù."), nRet);
- MessageBox(NULL, szMsg, szTitle, MB_OK);
- break;
- }
- }
- return FALSE;
- }
- // -------------------------------------------------------------------------
- // [_AhnHS_StartService]
- // -------------------------------------------------------------------------
- // - DESCRIPTION:
- // ÇØÅ· Åø ŽÁö ±â´É°ú ÇØÅ· Â÷´Ü ±â´ÉÀ» µ¿ÀÛ½Ãŵ´Ï´Ù.
- // _AhnHS_Initialize ÇÔ¼ö¸¦ È£ÃâÇÑ ´ÙÀ½¿¡ È£ÃâÇØ¾ß Çϸç, Áߺ¹ È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.
- // _AhnHS_StopService ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ¼ºñ½º¸¦ ÁßÁöÇÑ °æ¿ì¿¡´Â, ÀÌ ÇÔ¼ö¸¦ ´Ù½Ã
- // È£ÃâÇÏ¿© ¼ºñ½º¸¦ ´Ù½Ã ½ÃÀÛ½Ãų ¼ö ÀÖ½À´Ï´Ù.
- //
- // - SYNTAX:
- // EHSVC_API int __stdcall _AhnHS_StartService( );
- //
- // - RETURN VALUE:
- // . HS_ERR_OK : ¼º°ø
- // . ±âŸ : ±âŸ ¸®ÅÏ°ª¿¡ ´ëÇؼ´Â ÇÙ½¯µå ÇÁ·Î±×·¡¹Ö °¡À̵å Âü°í¹Ù¶÷.
- nRet = _AhnHS_StartService();
- assert(nRet != HS_ERR_NOT_INITIALIZED);
- assert(nRet != HS_ERR_ALREADY_SERVICE_RUNNING);
- if (nRet != HS_ERR_OK)
- {
- _stprintf(szMsg, _T("ÇØÅ·¹æÁö ±â´É¿¡ ¹®Á¦°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù.(Error Code = %x)\nÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù."), nRet);
- MessageBox(NULL, szMsg, szTitle, MB_OK);
- return FALSE;
- }
- // ¼¹ö¿¬µ¿À» À§ÇÑ Network Åë½Å Thread¸¦ »ý¼ºÇÔ.
- DWORD nThreadID = 0;
- HANDLE m_hThread = ( HANDLE ) _beginthreadex ( NULL, 0, NetworkThreadProcClient, ( void * ) NULL, 0, (unsigned *) &nThreadID );
- MSG msg;
- HACCEL hAccelTable;
- LoadString(hInstance, IDC_MINIA, szWindowClass, MAX_LOADSTRING);
- MyRegisterClass(hInstance);
- // Perform application initialization:
- if (!InitInstance (hInstance, nCmdShow))
- {
- return FALSE;
- }
- hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_MINIA);
- // Main message loop:
- while (GetMessage(&msg, NULL, 0, 0))
- {
- if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- // -------------------------------------------------------------------------
- // [_AhnHS_StopService]
- // -------------------------------------------------------------------------
- // - DESCRIPTION:
- // ÇØÅ· Â÷´Ü ±â´É°ú ÇØÅ· Åø ŽÁö ±â´ÉÀ» Á¤Áö½Ãŵ´Ï´Ù.
- //
- // - SYNTAX:
- // EHSVC_API int __stdcall _AhnHS_StopService( );
- //
- // - RETURN VALUE:
- // . HS_ERR_OK : ¼º°ø
- // . HS_ERR_NOT_INITIALIZED : _AhnHS_Initialize ÇÔ¼ö¸¦ È£ÃâÇÏ¿© HackShield¸¦ ÃʱâÈÇÏÁö ¾ÊÀº »óÅ¿¡¼
- // È£ÃâÇÑ °æ¿ì ¹ß»ýÇÏ´Â ¿À·ùÀÔ´Ï´Ù.
- // ÀÌ ¿À·ù´Â °³¹ß °úÁ¤¿¡¼¸¸ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¿À·ù·Î º°µµÀÇ Ã³¸®´Â ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. (Value = 0x003)
- // . HS_ERR_SERVICE_NOT_RUNNING : _AhnHS_StartService ÇÔ¼ö¸¦ È£ÃâÇÏ¿© HackShield¸¦ ½ÃÀÛÇÏÁö ¾ÊÀº »óÅ¿¡¼
- // È£ÃâÇÑ °æ¿ì ¹ß»ýÇÑ ¿À·ùÀÔ´Ï´Ù. °³¹ß °úÁ¤¿¡¼¸¸ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¿À·ù·Î º°µµÀÇ
- // 󸮴 ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. (Value = 0x301)
- nRet = _AhnHS_StopService();
- if (nRet != HS_ERR_OK)
- {
- _stprintf(szMsg, _T("_AhnHS_StopService ¿À·ù ¹ß»ý (Error Code = %x)"), nRet);
- MessageBox(NULL, szMsg, szTitle, MB_OK);
- return FALSE;
- }
- // -------------------------------------------------------------------------
- // [_AhnHS_Uninitialize]
- // -------------------------------------------------------------------------
- // - DESCRIPTION:
- // ½Ã½ºÅÛ ³»ºÎÀûÀ¸·Î »ç¿ëµÇ¾ú´ø ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÏ°í º¯¼ö¸¦ ÃʱâÈÇÕ´Ï´Ù.
- //
- // - SYNTAX:
- // EHSVC_API int __stdcall _AhnHS_Uninitialize( );
- //
- // - RETURN VALUE:
- // . HS_ERR_OK : ¼º°ø
- // . HS_ERR_SERVICE_STILL_RUNNING : _AhnHS_StopSerivice ÇÔ¼ö¸¦ È£ÃâÇÏ¿© HackShield¸¦ Á¾·áÇÏÁö ¾ÊÀº »óÅ¿¡¼
- // È£ÃâÇÏ¸é ¹ß»ýÇÏ´Â ¿À·ùÀÔ´Ï´Ù. ÀÌ ¿À·ù´Â °³¹ß °úÁ¤¿¡¼¸¸ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¹Ç·Î
- // º°µµÀÇ Ã³¸®´Â ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. (Value = 0x302)
- // . HS_ERR_NOT_INITIALIZED : _AhnHS_Initialize ÇÔ¼ö È£ÃâÀ» ÅëÇÏ¿© ½Ã½ºÅÛÀ» ÃʱâÈÇÏÁö ¾ÊÀº »óÅ¿¡¼
- // È£ÃâÇÏ¸é ¹ß»ýÇÏ´Â ¿À·ùÀÔ´Ï´Ù. ÀÌ ¿À·ù´Â °³¹ß °úÁ¤¿¡¼¸¸ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¹Ç·Î
- // º°µµÀÇ Ã³¸®´Â ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. (Value = 0x003)
- nRet = _AhnHS_Uninitialize();
- if (nRet != HS_ERR_OK)
- {
- _stprintf(szMsg, _T("_AhnHS_Uninitialize ¿À·ù ¹ß»ý (Error Code = %x)"), nRet);
- MessageBox(NULL, szMsg, szTitle, MB_OK);
- return FALSE;
- }
- return msg.wParam;
- }
- //
- void GetEnvInfoFromIni(void)
- {
- // ¼¹ö Æ÷Æ®
- g_nServerPort = ::GetPrivateProfileInt(_T("ServerInfo"), _T("nPort"), 0, g_szIniPath);
- // ¼¹ö IP
- ::GetPrivateProfileString(_T("ServerInfo"), _T("IP"), _T(""), g_szServerIP, sizeof(g_szServerIP), g_szIniPath);
- }
- //
- // FUNCTION: MyRegisterClass()
- //
- // PURPOSE: Registers the window class.
- //
- // COMMENTS:
- //
- // This function and its usage is only necessary if you want this code
- // to be compatible with Win32 systems prior to the 'RegisterClassEx'
- // function that was added to Windows 95. It is important to call this function
- // so that the application will get 'well formed' small icons associated
- // with it.
- //
- ATOM MyRegisterClass(HINSTANCE hInstance)
- {
- WNDCLASSEX wcex;
- wcex.cbSize = sizeof(WNDCLASSEX);
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- wcex.lpfnWndProc = (WNDPROC)WndProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance;
- wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_MINIA);
- wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
- wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
- wcex.lpszMenuName = (LPCSTR)IDC_MINIA;
- wcex.lpszClassName = szWindowClass;
- wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
- return RegisterClassEx(&wcex);
- }
- //
- // FUNCTION: InitInstance(HANDLE, int)
- //
- // PURPOSE: Saves instance handle and creates main window
- //
- // COMMENTS:
- //
- // In this function, we save the instance handle in a global variable and
- // create and display the main program window.
- //
- BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
- {
- HWND hWnd;
- hInst = hInstance; // Store instance handle in our global variable
- hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
- if (!hWnd)
- {
- return FALSE;
- }
- ShowWindow(hWnd, nCmdShow);
- UpdateWindow(hWnd);
- return TRUE;
- }
- //
- // FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
- //
- // PURPOSE: Processes messages for the main window.
- //
- // WM_COMMAND - process the application menu
- // WM_PAINT - Paint the main window
- // WM_DESTROY - post a quit message and return
- //
- //
- LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
- {
- int wmId, wmEvent;
- PAINTSTRUCT ps;
- HDC hdc;
- TCHAR szHello[MAX_LOADSTRING];
- LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING);
- switch (message)
- {
- case WM_COMMAND:
- wmId = LOWORD(wParam);
- wmEvent = HIWORD(wParam);
- // Parse the menu selections:
- switch (wmId)
- {
- case IDM_ABOUT:
- DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
- break;
- case IDM_EXIT:
- DestroyWindow(hWnd);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- break;
- case WM_PAINT:
- hdc = BeginPaint(hWnd, &ps);
- // TODO: Add any drawing code here...
- RECT rt;
- GetClientRect(hWnd, &rt);
- DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
- EndPaint(hWnd, &ps);
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
- return 0;
- }
- // Mesage handler for about box.
- LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
- {
- switch (message)
- {
- case WM_INITDIALOG:
- return TRUE;
- case WM_COMMAND:
- if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
- {
- EndDialog(hDlg, LOWORD(wParam));
- return TRUE;
- }
- break;
- }
- return FALSE;
- }
- UINT
- WINAPI
- ShowMsgAndExitWithTimer_ThreadFunc( LPVOID lParam )
- {
- Sleep(10000); // 10Ãʵ¿¾È ´ë±â..
- HANDLE hCurrentHandle = ::GetCurrentProcess();
- // °ÔÀÓ¿¡¼ »ç¿ëÁßÀÎ °¢Á¾ ¸Þ¸ð¸® ¹öÆÛ ÇØÁ¦ ¹× Handle Á¾·á
- // ..
- // ..
- ::TerminateProcess( hCurrentHandle, 0 );
- return 0;
- }
- //
- void ShowMsgAndExitWithTimer(TCHAR *szMsg)
- {
- UINT nThreadID = 0;
- HANDLE hThread = ( HANDLE ) _beginthreadex ( NULL, 0, ShowMsgAndExitWithTimer_ThreadFunc, NULL, 0, &nThreadID );
- ::MessageBox(NULL, szMsg, szTitle, MB_OK);
- HANDLE hCurrentHandle = ::GetCurrentProcess();
- // °ÔÀÓ¿¡¼ »ç¿ëÁßÀÎ °¢Á¾ ¸Þ¸ð¸® ¹öÆÛ ÇØÁ¦ ¹× Handle Á¾·á
- // ..
- // ..
- ::TerminateProcess( hCurrentHandle, 0 );
- }
- int __stdcall AhnHS_Callback(long lCode, long lParamSize, void* pParam)
- {
- switch(lCode)
- {
- //Engine Callback
- case AHNHS_ENGINE_DETECT_GAME_HACK:
- {
- TCHAR szMsg[255];
- _stprintf(szMsg, _T("´ÙÀ½ À§Ä¡¿¡¼ ÇØÅ·ÅøÀÌ ¹ß°ßµÇ¾î ÇÁ·Î±×·¥À» Á¾·á½ÃÄ×½À´Ï´Ù.\n%s"), (char*)pParam);
- ShowMsgAndExitWithTimer(szMsg);
- break;
- }
- //â¸ðµå ÇØÅ·Åø °¨Áö
- case AHNHS_ENGINE_DETECT_WINDOWED_HACK:
- {
- ShowMsgAndExitWithTimer(_T("ÇÁ·Î±×·¥¿¡ ´ëÇÏ¿© â¸ðµå ÇØÅ·ÅøÀÌ °¨ÁöµÇ¾ú½À´Ï´Ù."));
- break;
- }
- //Speed °ü·Ã
- case AHNHS_ACTAPC_DETECT_SPEEDHACK:
- {
- ShowMsgAndExitWithTimer(_T("ÇöÀç ÀÌ PC¿¡¼ SpeedHackÀ¸·Î ÀǽɵǴ µ¿ÀÛÀÌ °¨ÁöµÇ¾ú½À´Ï´Ù."));
- break;
- }
- //µð¹ö±ë ¹æÁö
- case AHNHS_ACTAPC_DETECT_KDTRACE:
- case AHNHS_ACTAPC_DETECT_KDTRACE_CHANGED:
- {
- TCHAR szMsg[255];
- _stprintf(szMsg, _T("ÇÁ·Î±×·¥¿¡ ´ëÇÏ¿© µð¹ö±ë ½Ãµµ°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù. (Code = %x)\nÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù."), lCode);
- ShowMsgAndExitWithTimer(szMsg);
- break;
- }
- case AHNHS_ACTAPC_DETECT_AUTOMACRO:
- {
- TCHAR szMsg[255];
- _stprintf(szMsg, _T("¸ÅÅ©·Î ±â´ÉÀ¸·Î ÀǽɵǴ µ¿ÀÛÀÌ °¨ÁöµÇ¾ú½À´Ï´Ù.. (Code = %x)\nÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù."), lCode);
- ShowMsgAndExitWithTimer(szMsg);
- break;
- }
- // ÄÚµå ÆÐÄ¡ °¨Áö
- case AHNHS_ACTAPC_DETECT_ABNORMAL_MEMORY_ACCESS:
- {
- TCHAR szMsg[255];
- _stprintf(szMsg, _T("´ÙÀ½ À§Ä¡¿¡¼ ¸Þ¸ð¸® Á¢±ÙÀÌ °¨ÁöµÇ¾î ÇÁ·Î±×·¥À» Á¾·á½ÃÄ×½À´Ï´Ù.\n%s"), (char*)pParam);
- ShowMsgAndExitWithTimer(szMsg);
- break;
- }
- //±×¿Ü ÇØÅ· ¹æÁö ±â´É ÀÌ»ó
- case AHNHS_ACTAPC_DETECT_AUTOMOUSE:
- case AHNHS_ACTAPC_DETECT_DRIVERFAILED:
- case AHNHS_ACTAPC_DETECT_HOOKFUNCTION:
- case AHNHS_ACTAPC_DETECT_MESSAGEHOOK:
- case AHNHS_ACTAPC_DETECT_MODULE_CHANGE:
- case AHNHS_ACTAPC_DETECT_ENGINEFAILED:
- case AHNHS_ACTAPC_DETECT_CODEMISMATCH:
- case AHNHS_ACTAPC_DETECT_PROTECTSCREENFAILED:
- {
- TCHAR szMsg[255];
- _stprintf(szMsg, _T("ÇØÅ· ¹æ¾î ±â´É¿¡ ÀÌ»óÀÌ ¹ß»ýÇÏ¿´½À´Ï´Ù. (Code = %x)\nÇÁ·Î±×·¥À» Á¾·áÇÕ´Ï´Ù."), lCode);
- ShowMsgAndExitWithTimer(szMsg);
- break;
- }
- }
- return 1;
- }
- #define OP_LOGON 0x1 // Logon¿¡ ´ëÇÑ Notify
- #define OP_LOGOFF 0x2 // Logoff¿¡ ´ëÇÑ Notify
- #define OP_REQGUID 0x3 // GUID Request Message
- #define OP_ACKGUID 0x4 // GUID Ack Message
- #define OP_REQCRC 0x5 // CRC Request Message
- #define OP_ACKCRC 0x6 // CRC Ack Message
- #define OP_ERROR 0x7 // Error Message
- // ¼¹ö¿ÍÀÇ Åë½Å(¼¹ö¿¬µ¿)À» À§ÇÑ Thread ÇÁ·Î½ÃÁ®.
- UINT WINAPI NetworkThreadProcClient ( LPVOID lParam )
- {
- int nErrCode = 0;
- SOCKET socket = 0;
- MSGHEADER header = { 0, };
- DWORD dwRet = ERROR_SUCCESS;
- // À©¼Ó DLLÀ» ·ÎµåÇÑ´Ù.
- dwRet = BOANET_LoadWinsock2 ();
- if ( dwRet != ERROR_SUCCESS )
- goto _end;
- // Network°ü·Ã ÃʱâÈ ÀÛ¾÷À» ÁøÇàÇÑ´Ù.
- dwRet = BOANET_InitializeCli ( &socket, &nErrCode );
- if ( dwRet != ERROR_SUCCESS )
- {
- BOANET_UnloadWinsock2 ();
- goto _end;
- }
- // ¼¹ö¿¡ ¿¬°áÇÑ´Ù.
- dwRet = BOANET_ConnectCli ( socket, g_nServerPort, ( LPTSTR ) ( LPCTSTR ) g_szServerIP, &nErrCode );
- if ( dwRet != ERROR_SUCCESS )
- {
- BOANET_UnloadWinsock2 ();
- goto _end;
- }
- // Logon Msg¸¦ º¸³½´Ù.
- header.opCode = OP_LOGON;
- header.length = htonl ( 0 );
- dwRet = BOANET_SendCli ( socket, ( PSTR ) &header, sizeof ( MSGHEADER ), &nErrCode );
- if ( dwRet != ERROR_SUCCESS )
- {
- BOANET_CloseCli ( &socket );
- BOANET_UnloadWinsock2 ();
- goto _end;
- }
- while ( TRUE )
- {
- BYTE byReqMsg[SIZEOF_REQMSG] = { 0, };
- BYTE byAckMsg[SIZEOF_GUIDACKMSG] = { 0, };
- PBYTE pbyResponse;
- AHNHS_TRANS_BUFFER TransBuffer;
- // 1. Header¸¦ ÀоîµéÀδÙ.
- dwRet = BOANET_ReceiveCli ( socket, ( PSTR ) &header, sizeof ( MSGHEADER ), &nErrCode );
- if ( dwRet != ERROR_SUCCESS )
- {
- BOANET_CloseCli ( &socket );
- BOANET_UnloadWinsock2 ();
- goto _end;
- }
- // ¿À·ù ÆÐŶÀÏ °æ¿ì Á¾·á
- if ( header.opCode == OP_ERROR )
- {
- dwRet = ntohl ( header.length );
- break;
- }
- // 2. Body¸¦ ¹Þ´Â´Ù.
- dwRet = BOANET_ReceiveCli ( socket, ( PSTR ) byReqMsg, ntohl ( header.length ), &nErrCode );
- if ( dwRet != ERROR_SUCCESS )
- {
- BOANET_CloseCli ( &socket );
- BOANET_UnloadWinsock2 ();
- goto _end;
- }
- // 3. Msgº° 󸮸¦ ÇÑ´Ù.
- // -------------------------------------------------------------------------
- // [_AhnHS_MakeResponse]
- // -------------------------------------------------------------------------
- // - DESCRIPTION:
- // Ŭ¶óÀ̾ðÆ®¿¡¼ »ç¿ëÇÕ´Ï´Ù. ¼¹ö¿¡¼ Àü´ÞÇÑ ¾ÏÈ£ÈµÈ ¹öÀü ¿ä±¸ ¸Þ½ÃÁö¸¦
- // º¹È£ÈÇÏ°í ÇöÀç Ŭ¶óÀ̾ðÆ® ÆÄÀÏÀÇ ¹öÀüÀ» ¾ÏÈ£ÈÇÏ¿© ÀÀ´ä ¸Þ½ÃÁö¸¦ ¸¸µì´Ï´Ù.
- //
- // - SYNTAX:
- // int __stdcall _AhnHS_MakeResponse (unsigned char *pbyRequest, unsigned long ulRequestLength,
- // PAHNHS_TRANS_BUFFER pResponseBuffer);
- // - PARAMETERS:
- // .pbyRequest unsigned char * :[IN] ¿äû ¸Þ½ÃÁö ¹öÆÛ
- // .ulRequestLength unsigned long :[IN] ¿äû ¸Þ½ÃÁö ±æÀÌ
- // .pResponseBuffer PAHNHS_TRANS_BUFFER :[OUT] ÀÀ´ä ¸Þ½ÃÁö ¹öÆÛ
- //
- // - RETURN VALUE:
- // . ERROR_SUCCESS : ¼º°ø
- // . ±âŸ : ±âŸ ¸®ÅÏ°ª¿¡ ´ëÇؼ´Â ÇÙ½¯µå ÇÁ·Î±×·¡¹Ö °¡À̵å Âü°í¹Ù¶÷.
- dwRet = _AhnHS_MakeResponse( byReqMsg, ntohl ( header.length ), &TransBuffer );
- if ( dwRet != ERROR_SUCCESS )
- {
- BOANET_CloseCli ( &socket );
- BOANET_UnloadWinsock2 ();
- goto _end;
- }
- TRACE("[%x] = _AhnHS_MakeResponse()", dwRet);
- // Header¸¦ ÀÛ¼ºÇÑ´Ù.
- header.opCode = OP_ACKCRC;
- header.length = htonl ( TransBuffer.nLength );
- // 4. Header¸¦ º¸³½´Ù.
- dwRet = BOANET_SendCli ( socket, ( PSTR ) &header, sizeof ( MSGHEADER ), &nErrCode );
- if ( dwRet != ERROR_SUCCESS )
- {
- BOANET_CloseCli ( &socket );
- BOANET_UnloadWinsock2 ();
- goto _end;
- }
- // 5. Body¸¦ º¸³½´Ù.
- // [È®Àå ¼¹ö¿¬µ¿] TransBuffer ÀÇ ¹ÙÀÌÆ® ¹è¿À» »ç¿ëÇÑ´Ù.
- pbyResponse = TransBuffer.byBuffer;
- dwRet = BOANET_SendCli ( socket, ( PSTR ) pbyResponse, ntohl ( header.length ), &nErrCode );
- if ( dwRet != ERROR_SUCCESS )
- {
- BOANET_CloseCli ( &socket );
- BOANET_UnloadWinsock2 ();
- goto _end;
- }
- }
- // Logoff Msg¸¦ º¸³½´Ù.
- header.opCode = OP_LOGOFF;
- header.length = htonl ( 0 );
- BOANET_SendCli ( socket, ( PSTR ) &header, sizeof ( MSGHEADER ), &nErrCode );
- // ¼¹ö¿Í ¿¬°áÀ» ²÷´Â´Ù.
- BOANET_CloseCli ( &socket );
- // À©¼Ó DLLÀ» ¾ð·ÎµùÇÑ´Ù.
- BOANET_UnloadWinsock2 ();
- _end:
- if ( dwRet != ERROR_SUCCESS )
- {
- TRACE("[%x] = Network Thread Failed", dwRet);
- }
- else
- {
- TRACE("Network Thread Successfully Terminated");
- }
- _endthreadex ( 0 );
- return 0;
- }
- // Çϱâ¿Í °°Àº ÇüÅ·ΠÇÔ¼ö¸¦ ±¸¼ºÇÏ¿© ÇÙ½¯µå ¾÷µ¥ÀÌÆ® ½ÃÁ¡¿¡ È£ÃâÇÕ´Ï´Ù.
- void OnAhnHS_HSUpdate()
- {
- // -------------------------------------------------------------------------
- // [_AhnHS_HSUpdate]
- // -------------------------------------------------------------------------
- // - DESCRIPTION:
- // HackShield ¿£Áø ÆÄÀϵéÀ» ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù.
- //
- // - SYNTAX:
- // DWORD __stdcall _AhnHS_HSUpdate( LPCTSTR szUpdateDir, DWORD dwTimeOut );
- //
- // - PARAMETERS:
- // .szUpdateDir ¾÷µ¥ÀÌÆ® ÆÄÀÏÀÌ ¼³Ä¡µÇ¾î ÀÖ´Â Æú´õ
- // .dwTimeOut milliseconds ¾÷µ¥ÀÌÆ® ½Ã ŸÀÓ ¾Æ¿ô ½Ã°£. 0À¸·Î ¼³Á¤ ½Ã INFINITEÀ¸·Î ¼³Á¤
- // - RETURN VALUE:
- // . HACKSHIELD_ERROR_SUCESS : ¾÷µ¥ÀÌÆ® ¼º°ø (Value = 0x00000000)
- // . ±âŸ : ±âŸ ¸®ÅÏ°ª¿¡ ´ëÇؼ´Â ÇÙ½¯µå ÇÁ·Î±×·¡¹Ö °¡À̵å Âü°í¹Ù¶÷.
- DWORD dwResult = _AhnHS_HSUpdate(g_szHShieldPath, 1000 * 600);
- LPTSTR szErrorStr = _T("");
- switch(dwResult)
- {
- case 0x00000000:
- szErrorStr = _T("HS_ERR_OK");
- break;
- case 0x30000010:
- szErrorStr = _T("HS_ERR_ENVFILE_NOTREAD");
- break;
- case 0x30000020:
- szErrorStr = _T("HS_ERR_ENVFILE_NOTWRITE");
- break;
- case 0x30000030:
- szErrorStr = _T("HS_ERR_NETWORK_CONNECT_FAIL");
- break;
- case 0x30000050:
- szErrorStr = _T("HS_ERR_LIB_NOTEDIT_REG");
- break;
- case 0x30000060:
- szErrorStr = _T("HS_ERR_NOTFINDFILE");
- break;
- case 0x30000070:
- szErrorStr = _T("HS_ERR_PROTECT_LISTLOAD_FAIL");
- break;
- case 0x30000080:
- szErrorStr = _T("HS_ERR_PROTECT_VERITY_FAIL");
- break;
- case 0x30000090:
- szErrorStr = _T("HS_ERR_HSUPDATE_TIMEOUT");
- break;
- default :
- szErrorStr = _T("HS_ERR_UNKNOWN");
- break;
- }
- TRACE("%s[%x] = AhnHS_HSUpdate(%s, %d)", szErrorStr, dwResult, g_szHShieldPath, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement