/* * (C) Copyright 2005 ~ 2007. AhnLab, Inc. * * Any part of this source code can not be copied with * any method without prior written permission from * the author or authorized person. * * File Name : AntiCpSvrFunc.h */ #ifndef _ANTICPSVRFUNC_H #define _ANTICPSVRFUNC_H #define SIZEOF_REQMSG 160 // Request Message¸¦ ´ãÀ» ¹öÆÛÀÇ Å©±â #define SIZEOF_REQINFO 88 // Request Info¸¦ ´ãÀ» ¹öÆÛÀÇ Å©±â #define SIZEOF_ACKMSG 72 // Ack Message¸¦ ´ãÀ» ¹öÆÛÀÇ Å©±â #define SIZEOF_GUIDREQMSG 20 // GUID Request Message¸¦ ´ãÀ» ¹öÆÛÀÇ Å©±â #define SIZEOF_GUIDREQINFO 20 // GUID Request Info¸¦ ´ãÀ» ¹öÆÛÀÇ Å©±â #define SIZEOF_GUIDACKMSG 340 // GUID Ack Message¸¦ ´ãÀ» ¹öÆÛÀÇ Å©±â #define ALLOWED_ALL_SESSION 0xFFFFFFFF #define ALLOWED_ONLY_LATEST_SESSION 0x00000001 #define ANTICPSVR_UNINITIALIZED 0x0 #define ANTICPSVR_INITIALIZED 0x1 #define ANTICPSVR_CHECK_GAME_MEMORY 0x01 // Game¿¡¼­ º¸È£ÇÏ´Â Memory¿¡ ´ëÇÑ Request¸¸ ¸¸µç´Ù. #define ANTICPSVR_CHECK_HACKSHIELD_FILE 0x02 // HackShield File¿¡ ´ëÇÑ Request¸¸ ¸¸µç´Ù. #define ANTICPSVR_CHECK_GAME_FILE 0x04 // Game File¿¡ ´ëÇÑ Request¸¸ ¸¸µç´Ù. #define ANTICPSVR_CHECK_NANOENGINE_FILE 0x08 // Heuristic Engine Data(.mhe)¿¡ ´ëÇÑ Request¸¦ ¸¸µç´Ù. #define ANTICPSVR_CHECK_ALL ( ANTICPSVR_CHECK_GAME_MEMORY | ANTICPSVR_CHECK_HACKSHIELD_FILE | ANTICPSVR_CHECK_GAME_FILE | ANTICPSVR_CHECK_NANOENGINE_FILE ) // ¿¡·¯ÄÚµå Á¤ÀÇ #define ERROR_ANTICPSVR_BASECODE 0x0001C000 #define ERROR_ANTICPSVR_INIT_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x1 #define ERROR_ANTICPSVR_INIT_INSERTCRCDATATOLIST_FAIL ERROR_ANTICPSVR_BASECODE + 0x2 #define ERROR_ANTICPSVR_INIT_INSERTHSHIELDFILECRCDATATOLIST_FAIL ERROR_ANTICPSVR_BASECODE + 0x3 #define ERROR_ANTICPSVR_INIT_READPUBLICKEY_FAIL ERROR_ANTICPSVR_BASECODE + 0x4 #define ERROR_ANTICPSVR_MAKEREQMSG_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x10 #define ERROR_ANTICPSVR_MAKEREQMSG_MAKESKEY_FAIL ERROR_ANTICPSVR_BASECODE + 0x11 #define ERROR_ANTICPSVR_MAKEREQMSG_INITCRYPT_FAIL ERROR_ANTICPSVR_BASECODE + 0x12 #define ERROR_ANTICPSVR_MAKEREQMSG_ENCRYPT_FAIL ERROR_ANTICPSVR_BASECODE + 0x13 #define ERROR_ANTICPSVR_MAKEREQMSG_GETRNDHASHINFO_FAIL ERROR_ANTICPSVR_BASECODE + 0x14 #define ERROR_ANTICPSVR_ANALACKMSG_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x20 #define ERROR_ANTICPSVR_ANALACKMSG_MAKESKEY_FAIL ERROR_ANTICPSVR_BASECODE + 0x21 #define ERROR_ANTICPSVR_ANALACKMSG_INITCRYPT_FAIL ERROR_ANTICPSVR_BASECODE + 0x22 #define ERROR_ANTICPSVR_ANALACKMSG_DECRYPT_FAIL ERROR_ANTICPSVR_BASECODE + 0x23 #define ERROR_ANTICPSVR_ANALACKMSG_HSHIELD_ERROR ERROR_ANTICPSVR_BASECODE + 0x24 #define ERROR_ANTICPSVR_ANALACKMSG_PACKET_ERROR ERROR_ANTICPSVR_BASECODE + 0x25 #define ERROR_ANTICPSVR_ANALACKMSG_FILECRC_ERROR ERROR_ANTICPSVR_BASECODE + 0x26 #define ERROR_ANTICPSVR_ANALACKMSG_MEMORYCRC_ERROR ERROR_ANTICPSVR_BASECODE + 0x27 #define ERROR_ANTICPSVR_ANALACKMSG_INVLIDSESSION ERROR_ANTICPSVR_BASECODE + 0x28 #define ERROR_FAKEANTICPSVR_ANALACKMSG_DELAYEDSPIKING ERROR_ANTICPSVR_BASECODE + 0x29 #define ERROR_ANTICPSVR_ANALACKMSG_ENGINECRC_ERROR ERROR_ANTICPSVR_BASECODE + 0x2A #define ERROR_ANTICPSVR_ANALACKMSG_NANOENGINECRC_ERROR ERROR_ANTICPSVR_BASECODE + 0x2B #define ERROR_ANTICPSVR_ANALACKMSG_EXCEPTION ERROR_ANTICPSVR_BASECODE + 0x2C #define ERROR_ANTICPSVR_INITCRYPT_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x30 #define ERROR_ANTICPSVR_MAKESESSIONKEY_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x31 #define ERROR_ANTICPSVR_GETENCMSG_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x32 #define ERROR_ANTICPSVR_GETDECMSG_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x33 #define ERROR_ANTICPSVR_MAKEACKSEQ_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x34 #define ERROR_ANTICPSVR_GETRNDHASHINFO_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x35 #define ERROR_ANTICPSVR_GETRNDHASHINFO_INVALIDENTRY ERROR_ANTICPSVR_BASECODE + 0x36 #define ERROR_ANTICPSVR_GETRNDHASHINFO_EMPTYFUNCTIONLIST_ERROR ERROR_ANTICPSVR_BASECODE + 0x37 #define ERROR_ANTICPSVR_EXCEPTION_OCCURED ERROR_ANTICPSVR_BASECODE + 0x38 #define ERROR_ANTICPSVR_GETGUIDFROMCRCFILE_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x39 #define ERROR_ANTICPSVR_GETTIEMSTAMPFROMCRCFILE_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x3A #define ERROR_ANTICPSVR_GETTIEMSTAMPFROMNANOENGINEFILE_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x3B #define ERROR_ANTICPSVR_MAKEGUIDREQMSG_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x40 #define ERROR_ANTICPSVR_MAKEGUIDREQMSG_MAKESKEY_FAIL ERROR_ANTICPSVR_BASECODE + 0x41 #define ERROR_ANTICPSVR_MAKEGUIDREQMSG_INITCRYPT_FAIL ERROR_ANTICPSVR_BASECODE + 0x42 #define ERROR_ANTICPSVR_MAKEGUIDREQMSG_ENCRYPT_FAIL ERROR_ANTICPSVR_BASECODE + 0x43 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_INVALIDPARAM ERROR_ANTICPSVR_BASECODE + 0x50 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_MAKESKEY_FAIL ERROR_ANTICPSVR_BASECODE + 0x51 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_INITCRYPT_FAIL ERROR_ANTICPSVR_BASECODE + 0x52 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_DECRYPT_FAIL ERROR_ANTICPSVR_BASECODE + 0x53 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_PACKET_ERROR ERROR_ANTICPSVR_BASECODE + 0x54 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_DENIED_NEWSESSION ERROR_ANTICPSVR_BASECODE + 0x55 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_GETGUIDFROMCRCFILE_ERROR ERROR_ANTICPSVR_BASECODE + 0x56 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_INSERTCRCDATATOLIST_FAIL ERROR_ANTICPSVR_BASECODE + 0x57 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_INVALIDGUID ERROR_ANTICPSVR_BASECODE + 0x58 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_HSHIELDDENIED_NEWSESSION ERROR_ANTICPSVR_BASECODE + 0x59 #define ERROR_ANTICPSVR_ANALGUIDACKMSG_GETTIMESTAMPFROMCRCFILE_ERROR ERROR_ANTICPSVR_BASECODE + 0x5A #define ERROR_ANTICPSVR_ANALGUIDACKMSG_INSERTHSHIELDCRCDATATOLIST_FAIL ERROR_ANTICPSVR_BASECODE + 0x5B #define ERROR_ANTICPSVR_ANALGUIDACKMSG_INVALIDTIMESTAMP ERROR_ANTICPSVR_BASECODE + 0x5C #define ERROR_ANTICPSVR_ANALGUIDACKMSG_NANODENIED_NEWSESSION ERROR_ANTICPSVR_BASECODE + 0x5D #define ERROR_ANTICPSVR_ANALGUIDACKMSG_INSERTNANOCRCDATATOLIST_FAIL ERROR_ANTICPSVR_BASECODE + 0x5E #define ERROR_ANTICPSVR_ANALGUIDACKMSG_EXCEPTION ERROR_ANTICPSVR_BASECODE + 0x5F #ifndef UNIX #ifdef ANTICPSVR_EXPORTS #define ANTICPSVR_API __declspec(dllexport) #else #define ANTICPSVR_API __declspec(dllimport) #endif #else #include #define DWORD uint32_t #define PVOID void * #define IN #define OUT #define __stdcall #define ANTICPSVR_API #endif #if defined(__cplusplus) extern "C" { #endif #pragma pack ( push ) #pragma pack ( 8 ) typedef struct _HSHIELD_CLIENT_CONTEXT { PVOID pGameCrc; PVOID pHShieldCrc; PVOID pEngineCrc; } HSHIELD_CLIENT_CONTEXT, *PHSHIELD_CLIENT_CONTEXT; #pragma pack ( pop ) /*! * * @remarks ÀÌ ÇÔ¼ö´Â ¼­¹ö°¡ ·ÎµùµÉ¶§ Çѹø È£ÃâÇÏ´Â ÇÔ¼ö·Î ³»ºÎÀûÀ¸·Î »ç¿ëÇÏ´Â Á¤º¸µéÀ» ÃʱâÈ­ÇÑ´Ù. * * @param lpszHashFilePath : ÇØ½¬Á¤º¸ÀúÀå ÆÄÀÏ(HackShield.crc)¿¡ ´ëÇÑ Àüü °æ·Î * */ ANTICPSVR_API DWORD __stdcall _AntiCpSvr_Initialize ( IN const char *lpszHashFilePath ); /*! * * @remarks ÀÌ ÇÔ¼ö´Â ¼­¹ö°¡ ¾ð·ÎµùµÉ¶§ Çѹø È£ÃâÇÏ´Â ÇÔ¼ö·Î ³»ºÎÀûÀ¸·Î »ç¿ëÇÏ´ø Á¤º¸µéÀ» ÃʱâÈ­ÇÑ´Ù. * */ ANTICPSVR_API void __stdcall _AntiCpSvr_Finalize (); /*! * * @remarks ÀÌ ÇÔ¼ö´Â »õ·Î¿î Ŭ¶óÀÌ¾ðÆ®°¡ ¿¬°áµÉ¶§ Ŭ¶óÀÌ¾ðÆ®´ç Çѹø È£ÃâµÇ´Â ÇÔ¼ö·Î ÇöÀç Á¢¼ÓÇÑ * Ŭ¶óÀÌ¾ðÆ®°¡ »ç¿ëÇÏ´Â GUID ¹öÀüÀÌ ¹«¾ùÀÎÁö È®ÀÎÇϱâ À§ÇÑ ¿äû¸Þ½ÃÁö¸¦ »ý¼ºÇÏ´Â ÇÔ¼öÀÌ´Ù. * * @param pbyGuidReqMsg : Ŭ¶óÀÌ¾ðÆ®¿¡°Ô º¸³¾ ¾ÏȣȭµÈ Guid Request Message * ÀÌ µ¥ÀÌÅ͸¦ ´ãÀ» ¹öÆÛÀÇ Å©±â(Byte)´Â À§¿¡ Á¤ÀÇµÈ SIZEOF_GUIDREQMSGÀÌ´Ù. * @param pbyGuidReqInfo : _AntiCpSvr_AnalyzeGuidAckMsg() ¿¡¼­ °Ë»çÇÒ¶§ »ç¿ëÇÒ ¿øº» Guid Request Info * ÀÌ µ¥ÀÌÅ͸¦ ´ãÀ» ¹öÆÛÀÇ Å©±â(Byte)´Â À§¿¡ Á¤ÀÇµÈ SIZEOF_GUIDREQINFOÀÌ´Ù. * * @attention ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÏÁö ¾ÊÀ¸¸é ÇØ´ç Ŭ¶óÀ̾ðÆ®ÀÇ GUID¸¦ ¾Ë ¼ö ¾ø¾î Å©·¢ À¯¹«¸¦ È®ÀÎÇÒ ¼ö ¾ø´Ù. * ¶ÇÇÑ ¹öÆÛ Å©±â´Â ¾ÕÀ¸·Î º¯°æµÉ ¼öµµ ÀÖÀ¸¹Ç·Î ¹Ýµå½Ã ÀÌ Çì´õÆÄÀÏ¿¡ Á¤ÀÇµÈ °ÍÀ» »ç¿ëÇÏ¿©¾ßÇÑ´Ù. * */ ANTICPSVR_API DWORD __stdcall _AntiCpSvr_MakeGuidReqMsg ( OUT unsigned char *pbyGuidReqMsg, OUT unsigned char *pbyGuidReqInfo ); /*! * * @remarks ÀÌ ÇÔ¼ö´Â »õ·Î¿î Ŭ¶óÀÌ¾ðÆ®°¡ ¿¬°áµÉ¶§ Ŭ¶óÀÌ¾ðÆ®´ç Çѹø È£ÃâµÇ´Â ÇÔ¼ö·Î * _AntiCpSvr_MakeGuidReqMsg()¸¦ ÅëÇØ »ý¼ºµÈ GUID Request MessageÀÇ ÀÀ´ä¸Þ½ÃÁö¸¦ * Ŭ¶óÀÌ¾ðÆ®°¡ ¾ÏȣȭÇÏ¿© º¸³»¸é ÇØ´ç Ŭ¶óÀ̾ðÆ®ÀÇ GUID°¡ Çã¿ëµÇ´Â ¹öÀüÀÎÁö È®ÀÎÇÑ ÈÄ * Çã¿ëµÇ´Â ¹öÀüÀÏ °æ¿ì ¾ÕÀ¸·Î °è¼Ó »ç¿ëÇÏ°Ô µÉ CRC InfoÀÇ ÁÖ¼Ò¸¦ ¸®ÅÏÇÑ´Ù. * * @param pbyGuidAckMsg : Ŭ¶óÀÌ¾ðÆ®¿¡¼­ º¸³½ ¾ÏȣȭµÈ Guid ACK Message * @param pbyGuidReqInfo : _AntiCpSvr_MakeGuidReqMsg() ÇÔ¼ö¿¡¼­ ¸¸µé¾îÁø ¿øº» Guid Request Info * @param pCrcInfo : CRC Info¸¦ ´ã°íÀÖ´Â ¸Þ¸ð¸®¸¦ °¡¸®Å³ Æ÷ÀÎÅ͸¦ ÀúÀåÇÒ ¹öÆÛ * * @attention ¿©±â¼­ ¸®ÅϵǴ ppCrcInfo¿¡ ´ã±ä ÁÖ¼Ò´Â ÇØ´ç Ŭ¶óÀ̾ðÆ®ÀÇ SessionÀÌ ²÷±æ¶§±îÁö * °è¼ÓÇØ¼­ »ç¿ëµÇ¹Ç·Î Ŭ¶óÀÌ¾ðÆ®º°·Î ÀúÀåµÇ°í °ü¸®µÇ¾î¾ß ÇÑ´Ù. * */ ANTICPSVR_API DWORD __stdcall _AntiCpSvr_AnalyzeGuidAckMsg ( IN unsigned char *pbyGuidAckMsg, IN unsigned char *pbyGuidReqInfo, OUT PHSHIELD_CLIENT_CONTEXT pCrcInfo ); /*! * * @remarks ÀÌ ÇÔ¼ö´Â Ŭ¶óÀ̾ðÆ®ÀÇ Å©·¢ À¯¹«¸¦ È®ÀÎÇÏ°í ½ÍÀ»¶§¸¶´Ù È£ÃâµÇ´Â ÇÔ¼ö·Î * ÇØ´ç Ŭ¶óÀÌ¾ðÆ® ¹öÀü¿¡ ¸Â´Â CRC Á¤º¸¸¦ ÀÌ¿ëÇÏ¿© ½ÇÇàÆÄÀÏ ¹× ¸Þ¸ð¸®, ÇÙ½¯µå * ¸ðµâÀÌ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇÏ´Â Request Message¸¦ »ý¼ºÇØ ³½´Ù. * * @param pCrcInfo : _AntiCpSvr_AnalyzeGuidAckMsg() ÇÔ¼ö¿¡¼­ ±¸ÇØÁø CRC InfoÀÇ ¸Þ¸ð¸® ÁÖ¼Ò * @param pbyReqMsg : Ŭ¶óÀÌ¾ðÆ®¿¡°Ô º¸³¾ ¾ÏȣȭµÈ Request Message * ÀÌ Á¤º¸¸¦ ´ãÀ» ¹öÆÛÀÇ Å©±â(Byte)´Â À§¿¡ Á¤ÀÇµÈ SIZEOF_REQMSGÀÌ´Ù. * @param pbyReqInfo : _AntiCpSvr_AnalyzeAckMsg() ¿¡¼­ °Ë»çÇÒ¶§ »ç¿ëÇÒ ¿øº» Request Info * ÀÌ Á¤º¸¸¦ ´ãÀ» ¹öÆÛÀÇ Å©±â(Byte)´Â À§¿¡ Á¤ÀÇµÈ SIZEOF_REQINFOÀÌ´Ù. * @param ulOption : ¾î¶² Á¤º¸µé¿¡ ´ëÇÑ Request Message¸¦ ¸¸µéÁö¿¡ ´ëÇÑ Flag, À§¿¡ Á¤ÀÇµÈ * ANTICPSVR_CHECK_GAME_MEMORY, ANTICPSVR_CHECK_HACKSHIELD_FILE, * ANTICPSVR_CHECK_GAME_FILE, ANTICPSVR_CHECK_NANOENGINE_FILEµéÀÇ OR¸¦ ÀÌ¿ëÇÏ¿© Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. * ´Ü, ¾ÈÀüÀ» À§ÇØ ÃÖÃÊ È£Ãâ½Ã´Â ANTICPSVR_CHECK_ALL OptionÀ» ÀÌ¿ëÇÏ¿© * Àüü¿¡ ´ëÇÑ ¾ÈÀü À¯¹«¸¦ °Ë»çÇÏ°í ±× ´ÙÀ½ºÎÅÍ´Â Performance¸¦ À§ÇØ * ANTICPSVR_CHECK_GAME_MEMORY Option¸¸ »ç¿ëÇÏ±æ ±ÇÀåÇÑ´Ù. * * @attention ¹öÆÛ Å©±â´Â ¾ÕÀ¸·Î º¯°æµÉ ¼öµµ ÀÖÀ¸¹Ç·Î ¹Ýµå½Ã ÀÌ Çì´õÆÄÀÏ¿¡ Á¤ÀÇµÈ °ÍÀ» »ç¿ëÇÏ¿©¾ßÇÑ´Ù. * */ ANTICPSVR_API DWORD __stdcall _AntiCpSvr_MakeReqMsg ( IN PHSHIELD_CLIENT_CONTEXT pCrcInfo, OUT unsigned char *pbyReqMsg, OUT unsigned char *pbyReqInfo, IN DWORD ulOption ); /*! * * @remarks ÀÌ ÇÔ¼ö´Â _AntiCpSvr_MakeReqMsg() ÇÔ¼ö¸¦ ÅëÇØ »ý¼ºµÈ Å©·¢ À¯¹« Request Message¿¡ * ´ëÇÑ ÀÀ´äÀ¸·Î Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ¾ÏȣȭµÈ Ack Message°¡ ¿Ã °æ¿ì ÇØ´ç Ack Message¸¦ * ºÐ¼®ÇÏ¿© Ŭ¶óÀÌ¾ðÆ®°¡ Á¤»óÀûÀÎÁö °Ë»çÇÑ´Ù. * * @param pCrcInfo : _AntiCpSvr_AnalyzeGuidAckMsg() ÇÔ¼ö¿¡¼­ ±¸ÇØÁø CRC InfoÀÇ ¸Þ¸ð¸® ÁÖ¼Ò * @param pbyAckMsg : Ŭ¶óÀÌ¾ðÆ®¿¡¼­ º¸³½ ¾ÏȣȭµÈ ACK Message * @param pbyReqInfo : _AntiCpSvr_MakeReqMsg() ÇÔ¼ö¿¡¼­ ¸¸µé¾îÁø ¿øº» Request Message Á¤º¸ * */ ANTICPSVR_API DWORD __stdcall _AntiCpSvr_AnalyzeAckMsg ( IN PHSHIELD_CLIENT_CONTEXT pCrcInfo, IN unsigned char *pbyAckMsg, IN unsigned char *pbyReqInfo ); #if defined(__cplusplus) } #endif #endif //_ANTICPSVRFUNC_H