2008-09-27 21 views
7

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

यहां मुख्य चिंताओं में से एक धोखाधड़ी है, क्योंकि एक खिलाड़ी नाटकीय रूप से लाभान्वित होगा यदि वह - उदाहरण के लिए - कस्टम कस्टम बॉट को उसके लिए खेल खेलना चाहिए (रणनीति-निर्णय के मामले में अधिक कई घंटे खेलना)।

तो मेरा सवाल यह है कि हमें बॉट गतिविधि का पता लगाने के लिए तकनीकी संभावनाएं क्या हैं? हम निश्चित रूप से, घंटे खेला की संख्या ट्रैक कर सकते हैं रणनीतियों विसंगतियों का पता लगाने के विश्लेषण और इतने पर है, लेकिन जहाँ तक इस सवाल का संबंध है, मैं कैसे एक अन्य आवेदन करता है, तो पता लगाने के लिए

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

आपकी प्रतिक्रिया की अत्यधिक सराहना की जाती है!

+0

आप आसानी से एक कैमरे के लिए किसी अन्य कंप्यूटर हुक सकता है, और एक नकली कुंजीपटल/माउस करने के लिए। जो सब कुछ –

+0

को हराने के लिए आपको एक और कैमरे की आवश्यकता नहीं होगी - इसे वीएम के अंदर चलाएं, बॉट बाहर चल रहा होगा। –

उत्तर

0

आपको कुछ पॉइंटर्स के लिए पंकबस्टर, वाल्व एंटी-चीट, और कुछ अन्य एंटी-चीट सामान में क्या देखना चाहिए।

संपादित करें: मेरा मतलब क्या है, देखें वे इसे करते हैं; वे उस सामान का पता कैसे लगाते हैं।

+0

हमने पहले ही पंकबस्टर एट अल की जांच की है, लेकिन जहां तक ​​हम इसे समझते हैं, उन उपकरणों का मुख्य उद्देश्य ज्ञात धोखाधड़ी, शोषण इत्यादि का पता लगाना है। हमारे मामले में यह लागू नहीं होगा, क्योंकि सीमित उपयोगकर्ताबेस के कारण यह होगा कस्टम बनाया चीट्स का सामना करने की अधिक संभावना हो। संपादित करें: नई प्रतिक्रिया के लिए धन्यवाद। मैं समझ गया कि तुम क्या कहा, लेकिन उदाहरण के लिए Punkbuster (और यह इस क्षेत्र में अन्य उत्पादों के साथ वास्तव में एक ही है), मुख्य रूप से एपीआई और तरह के संदिग्ध स्मृति-उंगलियों के निशान, प्रक्रियाओं, परिवर्तन के लिए खोज, वायरस स्कैन का एक प्रकार के रूप में कार्य (यह भी http: – Grimtron

5

बस एक विचार यह है कि क्या 'चीटर' वर्चुअल मशीन (जैसे वीएमवेयर) में आपके सॉफ़्टवेयर को चलाता है और उस विंडो के स्क्रीनशॉट बनाता है? मुझे संदेह है कि आप इसके खिलाफ बचाव कर सकते हैं।

आप स्पष्ट रूप से 'एनालॉग अंतर' के खिलाफ बचाव नहीं कर सकते हैं, उदा। धोखेबाज प्रणाली उच्च गुणवत्ता वाले कैमरे के साथ बाहरी स्क्रीनशॉट बनाती है - मुझे लगता है कि यह केवल सैद्धांतिक मुद्दा है।

शायद आपको शतरंज साइटों की जांच करनी चाहिए। शतरंज में बहुत पैसा है, उन्हें या तो बॉट पसंद नहीं है - शायद वे पहले से ही एक समाधान के साथ आए हैं।

+0

//en.wikipedia.o बस वीएम चीज़ के बारे में - आप Shader मॉडल 2.0 इस्तेमाल कर सकते हैं खेल है, जो वर्तमान में कोई वी एम हार्डवेयर में चला सकते हैं के लिए – OregonGhost

0

मुझे तकनीकी विवरण नहीं पता है, लेकिन इंटनेट शतरंज क्लब के ब्लिट्जइन प्रोग्राम में एकीकृत प्रोग्राम स्विचिंग डिटेक्शन है। यह निश्चित रूप से पक्ष में एक शतरंज इंजन चलाने वाले लोगों का पता लगाने के लिए है और सीधे आपके मामले पर लागू नहीं है, लेकिन आप एपोरैच को कुछ ऐसा करने में सक्षम हो सकते हैं जैसे कि प्रो एक्स अगले वाई चक्रों में ज़ेड% CPU समय से अधिक लेता है, शायद यह है एक बॉट चल रहा है।

कि "नियमों के योग्य होने के लिए गेम खेलने के दौरान आपको कुछ और नहीं चलाना चाहिए" प्रतियोगिता नियमों के हिस्से के रूप में काम कर सकते हैं।

इसके अलावा, एक कठोर "हम किसी भी कारण है कि आप एक बॉट उपयोग कर रहा है और आप को अयोग्य घोषित करने के लिए किसी भी समय में तय कर सकते हैं" नियम भी ऊपर अनुमानी दृष्टिकोण (बेशकीमती आईसीसी शतरंज टूर्नामेंट में प्रयोग किया जाता है) के साथ मदद करता है।

इन सभी सवालों को आसानी से ऊपर नियम 1 द्वारा हल कर रहे हैं:

* how to detect if another application makes periodical screenshots? 
* how to detect if another application scans our process memory? 
* what are good ways to determine whether user input (mouse movement, keyboard input) is human-generated and not automated? 
* is it possible to detect if another application requests informations about controls in our application (position of controls etc)? 

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

+2

और क्या पुराने कंप्यूटर के बारे में सॉफ्टवेयर प्रोसेसर उपयोग चल रहा है।? एक बहुत ही अस्पष्ट और अस्पष्ट तरीका स्वचालन पता लगाने के लिए किया जाता है। –

+0

यह निरपेक्ष दृष्टि से नहीं काम करने के लिए होगा, लेकिन कंप्यूटर खुद के सापेक्ष। किसी भी मामले में, अनुमानी की तुलना में अधिक है, टिप्पणी के बाकी क्या सबसे अधिक प्रासंगिक हो, imo –

3

स्वचालन के खिलाफ सबसे अच्छी सुरक्षा उन कार्यों को नहीं है जिनके लिए पीसने की आवश्यकता होती है।

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

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

+0

है यही कारण है कि एक अच्छा विचार है, खासकर अगर परीक्षण मूल गेमप्ले –

1

मैं कैसे PunkBuster और इस तरह से काम करता है softwar पर कोई गहरी समझ है, लेकिन इस तरह से मैं जाना चाहते है:

Iintercept एपीआई कार्यों ऐसा ReadProcessMemory, WriteProcessMemory स्मृति सामान को संभालने के लिए कॉल और इसी तरह।

आप यह पता लगाएंगे कि आपकी प्रक्रिया कॉल में शामिल है या नहीं, और इसे मूल फ़ंक्शन पर वापस कॉल करें।

यह स्क्रीनशॉट लेने के लिए भी काम करना चाहिए, लेकिन आप बिटबल्ट फ़ंक्शन को रोकना चाहेंगे।

यहाँ एक बुनियादी कार्य अवरोधन के विषय में ट्यूटोरियल है: Intercepting System API Calls

7

मैं d2botnet, एक .net डियाब्लो 2 स्वचालन इंजन एक समय पहले लिखा था, और बाहर देखने के लिए कुछ आप चीजों की अपनी सूची में जोड़ सकते हैं के लिए विकृत कर रहे हैं/अमान्य/जाली पैकेट। मुझे लगता है कि यह गेम टीसीपी पर संवाद करेगा। पैकेट स्नीफिंग और फोर्जिंग आमतौर पर पहला तरीका गेम (ऑनलाइन वैसे भी) स्वचालित होते हैं। मुझे पता है कि बर्फ़ीला तूफ़ान विकृत पैकेट का पता लगाएगा, कुछ मैं d2botnet में करने से दूर रहने की कोशिश की।

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

+0

महत्वपूर्ण रूप से, आप पहली रिलीज को एन्क्रिप्ट करना में एकीकृत किया जा सकता है। आप के बाद एन्क्रिप्शन जोड़ते हैं तथ्य यह है कि हमलावरों को पता है कि डेटा क्या दिखता है और सिर्फ यह पता लगाना होगा कि आप पैकेट को कैसे बदल रहे हैं। ... नहीं कि वे एक डीबगर के साथ एन्क्रिप्शन इंजीनियर को उलट नहीं सकते थे, लेकिन कम से कम नेटवर्क स्टैक में डेटा नहीं होने से आपको एक और उपाय हो जाएगा। –

+1

एक disassembler और ollydbg की तरह एक डीबगर के बारे में क्या? यह मुझे अस्पष्टता के बावजूद सुरक्षा के रूप में हमला करता है। – rook

2

एप्लिकेशन में कीबोर्ड और माउस इनपुट सुनने की एक आम विधि SetWindowsHookEx का उपयोग कर विंडोज हुक सेट कर रही है। विक्रेताओं आमतौर पर स्थापना के दौरान अपने सॉफ़्टवेयर की रक्षा करने का प्रयास करते हैं ताकि हैकर स्वचालित रूप से स्वचालित नहीं हो सके और उनके आवेदन के लिए सीरियल को क्रैक/ढूंढ सके। गूगल अवधि: "कुंजी संग्रह करने वालों" ... यहाँ एक article है कि समस्या है और इसे रोकने के लिए तरीकों का वर्णन करता है।

संबंधित मुद्दे