ऑनलाइन मल्टीप्लेयर गेम में धोखाधड़ी को रोकने या कम करने के कुछ तरीके क्या हैं? [बन्द है]


19

पंकबस्टर धोखा देने से रोकने के लिए मौजूद है, और फिर भी पंकबस्टर सक्षम गेम में धोखा देना आम है। मॉडर्न वेयरफेयर 2 को अंत में उपयोगकर्ता द्वारा अपने स्वयं के सर्वर को चलाने या किसी भी मोड को बनाने से बंद कर दिया जाता है, और धोखा लगातार होता है।

मल्टीप्लेयर गेम के लिए जहां प्रत्येक क्लाइंट पीसी पर चल रहा है, धोखा को कम करने या खत्म करने के लिए क्या किया जा सकता है?



1
यह अपने आप में एक पूर्ण उत्तर नहीं है, इसलिए मैं इसे एक के रूप में सूचीबद्ध नहीं करूंगा, लेकिन यदि आप पारंपरिक एंटी चीट विधियों के अलावा खिलाड़ियों के खाते में कुछ निश्चित मूल्य जोड़ते हैं, तो मेरा मानना ​​है कि इससे मदद मिल सकती है। उदाहरण के लिए यदि नए खिलाड़ियों को "noob" सर्वर पर वापस लाया जाता है, जब तक कि वे बाकी गेम तक पहुंचने के लिए पर्याप्त अनुभव प्राप्त नहीं करते हैं, तो यह हर बार प्रतिबंधित होने के बाद हैकर्स के लिए अपने खाते को फिर से समतल करने के लिए एक बड़े पैमाने पर दर्द होता है। शायद अभी भी कुछ हैकर्स हैं जो अतीत को प्राप्त कर सकते हैं, लेकिन आपके खाते / मैचमेकिंग सर्वरों को सुरक्षित करना ग्राहकों को हासिल करने की तुलना में बहुत आसान है।
लुईस वेकफोर्ड

जवाबों:


18

यह निर्भर करता है कि वे कैसे धोखा दे रहे हैं, धोखा देने के प्राथमिक तरीकों में से एक पर ध्यान केंद्रित करना, आपके आवेदन में अन्य प्रक्रियाएं लागू करना और इसे संशोधित करना - आप अन्य सभी प्रक्रियाओं के माध्यम से गणना कर सकते हैं, और उनकी स्मृति हेरफेर विधियों, और उनके कीबोर्ड / माउस एमुलेशन को हुक कर सकते हैं। तरीकों।

वॉलहॉक आमतौर पर आपकी प्रक्रिया और डायरेक्टएक्स / जीएल पुस्तकालयों के बीच कोड को इंजेक्शन द्वारा लिखा जाता है ताकि सामग्री पर पारदर्शिता स्थापित की जा सके ताकि उन्हें देखा जा सके। यदि आप दीवारों के पीछे हैं (तो इस तरह से धोखा देने से बचने के लिए) विशेष रूप से अन्य खिलाड़ियों / उपयोगी संस्थाओं को आकर्षित करने के लिए, आप अपने दृश्यलेख / खांचे प्रणाली में कुछ कोड जोड़ सकते हैं।

यदि आप मल्टीप्लेयर जा रहे हैं और क्लाइंट / सर्वर के बीच पैकेट को संशोधित होने से रोकना चाहते हैं, तो डेटा का एक चेकसम बना रहे हैं जिसे आप अपने खुद के कुछ एल्गोरिथ्म के माध्यम से भेज रहे हैं और इसे चेक कर रहे हैं क्योंकि यह दूसरी तरफ से आता है। (आप विभिन्न QA उद्देश्यों के लिए वैसे भी ऐसा करने का प्रयास करेंगे)।

वही आपके अधिकांश इन-मेमोरी संसाधनों के लिए जाता है, जो एक फ्रेम की शुरुआत में एक चेकसम बनाता है, और विभिन्न चरणों में इसे सत्यापित करके कुछ बहुत ही आसान मेमोरी हेरफेर का पता लगा सकता है।

यह काफी शामिल विषय है, लेकिन उम्मीद है कि यह आपको एक स्पष्ट स्वीकार्य दिशा में सेट करता है।


या दीवारों के पीछे की वस्तुओं को छिपाने से भी बेहतर (जिसे अभी भी हैक किया जा सकता है), ग्राहक को उस खिलाड़ी के स्थान के बारे में बिल्कुल भी जानकारी नहीं देना (या केवल उसी के लिए जिसकी आवश्यकता है जैसे कि एक अच्छा साउंडिंग 3 डी साउंड इफेक्ट)
बार्ट वैन ह्युकेलोम

17

सबसे चरम समाधान पर, आप मूल रूप से ग्राहक पर कभी भरोसा नहीं करते हैं। MMOs जैसे गेम के लिए, उपयोगकर्ता अपना सर्वर नहीं चलाते हैं, और कोई भी गेमप्ले लॉजिक सर्वर साइड को हैंडल करता है। ग्राहक को कभी यह कहने का अधिकार न दें कि "मेरे पास एक्स स्वास्थ्य है" या "मेरे पास एक्स बारूद है", आदि।


4
यह बहुत अच्छा है अगर आपके पास वास्तव में एक समर्पित सर्वर चलाने के लिए संसाधन हैं, लेकिन यह इसे देखने का काफी सरल तरीका है। सबसे अधिक संभावना है कि आप अभी भी ग्राहकों पर बहुत से तर्क करेंगे और बुनियादी नियमों को लागू करने के लिए कभी-कभी सिंक्रोनाइजेशन के साथ सर्वर पर तर्क का एक सबसे छोटा उपसमुच्चय। यह आवश्यक रूप से सभी क्लाइंट-साइड चीट के खिलाफ नहीं रोकता है जैसे कि दीवारकॉक / मेमोरी मैनिपुलेशन जैसे कि क्लाइंट को उपयोगी जानकारी / आदि प्रकट करने में मूर्ख बनाना
रोब एश्टन

10

यदि आपको एक ऐसी प्रणाली मिली है जहां तर्क महंगा है और सर्वर चक्र को बचाने के लिए क्लाइंट पर अधिकतर काम किया जाना चाहिए, तो आप एक संभाव्य धोखा पहचान प्रणाली को लागू कर सकते हैं। हर कुछ मिनटों में सर्वर पर बारीकी और निरंतरता की जाँच करने के लिए यह कुछ अलग खिलाड़ियों को चुनता है। चूँकि थिएटर कम समय के लिए अपनी धोखाधड़ी को बहुत कम समय तक सीमित रखते हैं, इसलिए वे अंततः पकड़े जाएंगे

इसका एक और लाभ यह है कि उनके पास विकास के लिए तेजी से बदलाव का चक्र नहीं होगा - यदि सर्वर पर औसतन 10 घंटे का गेमप्ले लगता है, तो आप पर ध्यान देने के लिए हर बार जब आप देखना चाहते हैं, तो यह 10 घंटे का टर्नअराउंड चक्र है। अगर कुछ काम किया। और अगर यह किया काम, यह भी लंबे समय तक क्योंकि वे यदि सर्वर उन्हें दिया है पता नहीं चलेगा कि एक थम्स-अप या सिर्फ उन्हें करने के लिए चारों ओर हो गया नहीं किया है।


+1 प्रदर्शन के संदर्भ में, इस तरह के स्टोकेस्टिक दृष्टिकोण व्यापक मुद्दों, आईएमओ के लिए एकमात्र यथार्थवादी जवाब हैं। यदि आप केवल अमेरिका को लक्षित कर रहे हैं, तो OnLive से, अर्थात्।
इंजीनियर

5

पहले व्यक्ति निशानेबाजों के लिए कई प्रकार के उद्देश्य-सहायता हैक भी हैं जो ग्राफिक्स लाइब्रेरी कॉल में हुक करके भी काम करते हैं। काउंटर-स्ट्राइक / एचएल 1 के लिए ओजीसी हुक में दीवारों को पारदर्शी बनाने से परे कई विकल्प थे।

यदि दुश्मनों के लिए स्थान की जानकारी किसी बिंदु पर है जो निचले स्तर के पुस्तकालय में पारित हो गया है जिसमें व्यापक रूप से उपलब्ध कोड है, तो उन कॉल को हुक किया जा सकता है और स्थान, पैमाने, रोटेशन, आदि डेटा का उपयोग फायरिंग के लिए सबसे अच्छा वेक्टर की सटीक गणना करने के लिए किया जा सकता है। उस दुश्मन पर। पंकबस्टर जैसी एंटी-चीट सिस्टम में अक्सर मेमोरी और प्रोसेस मॉनीटरिंग के अलावा हेयुरिस्टिक-टाइप डिटेक्शन (इस खिलाड़ी को कितनी बार एक परफेक्ट शॉट मिलता है, कितनी बार वे एक शॉट-शॉट मारने के लिए 180 डीरेस के आसपास स्पिन करते हैं)।

अंतत: मल्टीप्लेयर गेम्स में चीटिंग को रोकने का काम बिल्ली और चूहे का खेल है। जैसे-जैसे नई चीटियां विकसित होती हैं, नई एंटी-चीट पद्धतियां बनाई जाती हैं, और फिर नई चीट-टेक्नोलॉजीज से बचने के लिए नई चीटिंग का निर्माण किया जाता है।

जैसा कि टेट्राद ने अपनी प्रतिक्रिया में कहा, "गेम सिक्योरिटी" के लिए एकमात्र कठिन और तेज़ नियम क्लाइंट को यथासंभव कम जानकारी प्रदान करना और जितना संभव हो सके क्लाइंट पर भरोसा करना है। विभिन्न प्रकार के खेलों में अलग-अलग आवश्यकताएं होंगी, जो इस बात को प्रभावित कर सकती हैं कि आप इन नियमों का कितनी अच्छी तरह पालन कर सकते हैं।

एक एफपीएस गेम में, क्योंकि गेमप्ले की गति इतनी तेज है, अक्सर ग्राहक को केवल डेटा प्रदान करना संभव नहीं होता है, जिसे इस सटीक तत्काल के बारे में पता होना चाहिए। यदि आप क्लाइंट को नहीं बताते हैं कि कोने के आसपास कोई दुश्मन है और खिलाड़ी उस कोने के आसपास जाता है, तो आपको अचानक उन्हें यह सूचना भेजनी होगी कि मिलीसेकंड के मामले में जानकारी या खिलाड़ी को किसी दुश्मन द्वारा मारे जाने का जोखिम नहीं है। कभी देखा।

इन मुद्दों के लिए केवल "फिक्स" जो वर्तमान में उपलब्ध है, संभवतः OnLive होगा। क्योंकि यह सेवा केवल डेटासेन्ट में सुरक्षित रूप से चल रहे क्लाइंट से केवल ऑडियो और वीडियो सामग्री वितरित करती है, धोखा देने का एकमात्र साधन अनिवार्य रूप से एक मानव AI बनाना होगा जो आने वाली वीडियो स्ट्रीम का विश्लेषण कर सकता है और उस पर आधारित कार्रवाई कर सकता है - एक कार्य जो कुछ, यदि कोई हो, तो थिएटर तक हैं।


3

उपरोक्त सभी उत्तर महान हैं, लेकिन मैं एक और टुकड़ा जोड़ूंगा:

कुछ खेलों में एक बहुत ही ठोस रीप्ले की सुविधा होती है, जो एक कॉम्पैक्ट प्रारूप में गेम के समाप्त होने के बाद हर गेम के रीप्ले को बचाने की अनुमति देता है, और इसे विभिन्न तरीकों से देखता है - विभिन्न खिलाड़ी दृष्टिकोण, वास्तविक समय आँकड़े UI और इसी तरह।

उदाहरण है कि मैं बहुत परिचित हूं: Starcraft 2. एक ऐसा तरीका है जो बर्फ़ीला तूफ़ान हैकर्स को धोखा देता है, गेम रीप्ले के रूप में धोखा सबूत प्राप्त करता है।

एक एफपीएस में उपयोग के लिए एक उदाहरण यह होगा: यदि आपने एक गेम खेला है और आपको संदेह है कि दूसरे व्यक्ति ने दीवार-हैक के साथ धोखा किया है, तो आप रिप्ले देखते हैं, और फिर देखते हैं कि उसकी सामान्य रीप्ले दृष्टि में, वह संभवतः नहीं हो सकता है तुम्हें देखा और कोने पर, या जो भी हो, एक ग्रेनेड फेंक दिया।

फिर आप उसे रिप्ले के साथ रिपोर्ट करते हैं, और अगर उसके खिलाफ सबूत पर्याप्त हैं, तो उसे प्रतिबंधित कर दिया गया है। जहाँ तक मुझे पता है, जो कंपनियां ऐसा करती हैं, वे केवल गंभीर साक्ष्य, या प्रतिबंध लगाने से पहले एक ही व्यवहार के साक्ष्य के कई स्रोत लेती हैं।

तो यह एक एंटी-डिबगिंग तकनीक नहीं है, यह एक उपयोगकर्ता रिपोर्ट प्रणाली है जो सुविधाजनक मानव-सहायता धोखाधड़ी का सबूत देती है।


0

यह एक पूर्ण उत्तर नहीं हो सकता है, लेकिन मेरे पास यहां कुछ इनपुट है। धोखा देने से रोकने का एक सबसे अच्छा तरीका है मोटापा या सी / सी ++ का उपयोग करना। यह क्लाइंट कोड को संशोधित करने से लोगों को रोकता है।


यह ध्यान देने योग्य बात है कि वहाँ कई deobfuscators हैं। इसके अलावा .Net (C #, XNA) गेम्स को एक प्रतिबिंब का उपयोग करके संशोधित किया जा सकता है। मुझे जो पता है, उससे मुझे लगता है कि C / C ++ वास्तव में कोड के साथ छेड़छाड़ करना कठिन है।
user1306322

हाँ। मेरा कहना सिर्फ इतना है कि आक्षेप आसानी से अपघटित कोड को अपठनीय होने से रोकता है और C / C ++ को संकलित करना आसान नहीं है, वे दोनों अच्छे विकल्प हैं।
लिक्विडफलाइन

इसके अलावा, अगर आप अपने खेल को बार-बार पैच करते हैं और निष्पादन योग्य में बाइनरी ऑफ़सेट बदलते हैं या रैंडम
एनओपी डालते हैं

@CPP_Person: वास्तव में C संकलन करने में बहुत आसान होने के कारण काफी प्रसिद्ध है। यह C ++ के लिए बिलकुल अलग बात है, जो वास्तव में कंपाइलर्स के नजरिए से काफी जटिल भाषा है। हालाँकि मुझे नहीं मिलता, यह क्यों मायने रखता है, एक निश्चित प्रोग्रामिंग भाषा को संकलित करना कितना आसान है - आप लोगों को धोखा उपकरण लिखने से रोकना चाहते हैं, एक अच्छा संकलक लिखने से नहीं - वे वैसे भी एक मौजूदा सी ++ संकलक का उपयोग करेंगे - बनाना विघटन कठिन कठिन संकलन बनाने की तुलना में मेरे लिए बहुत अधिक दिलचस्प लगता है।
कैसरलुडी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.