মাল্টিপ্লেয়ার প্রতারণা প্রতিরোধ করুন


10

আমি একটি ছোট ইনডি-স্টাইলের মাল্টিপ্লেয়ার গেমটি বিকাশ করতে প্রায় সম্পূর্ণ। যদিও আমি একক প্লেয়ারে লোককে প্রতারণা করার অনুমতি দিতে চাইছি, এটি সম্ভবত বহু প্লেয়ারে গ্রহণযোগ্য নয়। গেমের কিছু অংশ পরিবর্তন করতে চে জো-ইঞ্জিন জাতীয় কিছু ব্যবহার থেকে গড় জোকে থামাতে সাহায্য করার কোনও উপায় কি কেউ জানেন? আমি বর্তমানে ক্লায়েন্টকে প্রতি কয়েক সেকেন্ডের জন্য যাচাইয়ের জন্য গেমটি ব্যবহার করে (এক্সএমএল হিসাবে সঞ্চিত) প্রতিটি সেটিং ফাইলের একটি এমডি 5 হ্যাশ আপলোড করার পরিকল্পনা করেছি, তবে মেমরি-সম্পাদনা ইত্যাদির মতো জিনিসগুলি বন্ধ করতে আমি কি কিছু করতে পারি? ?


2
আমি এই নিবন্ধটি পুনরায় সংশোধন করবো, বিল্ডিং মাল্টিপ্লেয়ার গেমস - সুরক্ষা এটি কিছু মাল্টিপ্লেয়ার এপিআইয়ের জন্য রচিত, তবে ধারণাগুলি ভাল এবং এখনও প্রয়োগ হচ্ছে
Cyral

উত্তর:


8

আপনি যদি স্থানীয়ভাবে সংশোধিত কোড সম্পর্কে চিন্তিত হন, তবে আপনি কীভাবে নিশ্চিত হতে পারেন যে MD5 হ্যাশগুলির স্থিতিকাল তালিকাটি প্রেরণ করার জন্য কেউ আপনার নোটিফিকেশন কোডটি কেবল পরিবর্তন করেনি, আপনি যেটি প্রত্যাশা করছেন? প্রকৃতপক্ষে, এটি করার জন্য আপনার কোড সংশোধন করারও দরকার নেই, আপনার কেবল মোটামুটি বেসিক প্রক্সি প্রয়োজন (কোনও এসএসএল ধরে নেই, তবে এটি আরও কিছুটা চেষ্টা করেও নকল হতে পারে)।

আপনি যা চান তা করার একমাত্র উপায় হ'ল একটি সার্ভার থাকা এবং ক্লায়েন্টকে একেবারেই বিশ্বাস না করা। সমস্ত গণনাগুলি সার্ভারে পরিচালনা করা উচিত এবং সমস্ত ক্রিয়াকে অন্তত কিছুটা সম্ভব বলে যাচাই করা উচিত। উদাহরণস্বরূপ, ক্লায়েন্টকে এমনটি বলতে দেবেন না যে তারা যখন মুহূর্তের আগে অন্যদিকে ছিলেন তারা জানেন যে তারা মানচিত্রের একপাশে যেতে চান। মাঝের কোনও সার্ভার গেমের পক্ষে অত্যাবশ্যকীয় সবকিছু না করে প্রতারণা করা অসম্ভব , কারণ স্মার্ট কেউ সর্বদা থাকবেনআপনি ক্লায়েন্টের মধ্যে যে কোনও কিছু তৈরি করতে পারেন তার একটি উপায় সন্ধান করুন। এমনকি একটির সাথেও, পরিস্থিতিটি সামান্যভাবে চালিত করার বিভিন্ন উপায়ের মাধ্যমে যদি আপনি চিন্তা না করেন তবে এটি এখনও সম্ভব। উদাহরণস্বরূপ, চলাচলের বৈধতা যা আমি আগে উল্লেখ করেছি: আপনি গণনা গণনা করার জন্য যদি একটি সাধারণ বিন্দু করেন তবে লোকেরা এখনও প্রাচীরের মাধ্যমে টেলিপোর্ট করতে সক্ষম হতে পারে।

সুতরাং প্রশ্নটি হল, 'গড় জো' গড় কত? আপনি ইতিমধ্যে কোড সম্পাদনা এবং মেমরি সম্পাদকদের উল্লেখ করেছেন। এটি আমি ব্যক্তিগতভাবে গড় স্তরের বিবেচনা করব তার থেকে উপরে, এবং আপনি যদি সেই স্তরটি সম্পর্কে উদ্বিগ্ন হতে চান তবে একটি পৃথক বিশ্বস্ত সার্ভার যা সমস্ত ভারী উত্তোলনের প্রয়োজন হয় এবং ক্লায়েন্টটি কেবলমাত্র প্রদর্শন এবং ইনপুট ডিভাইসগুলি হয়ে নামবে।


2
@ ব্যবহারকারী 185812: সাধারণত গৃহীত উত্তর চিহ্নিত করার কয়েক ঘন্টা আগে কমপক্ষে অপেক্ষা করা ভাল idea ব্যক্তিগতভাবে আমি মনে করি আমার উত্তরটি বেশ দুর্দান্ত (আমি পক্ষপাতদুষ্ট), অন্যের সম্ভবত আরও ইনপুট থাকবে এবং স্বীকৃত উত্তরটি দেখা অন্যদের কাছে উত্তর দেওয়ার ক্ষেত্রে প্রায়শই একটি প্রতিবন্ধক হয়ে থাকে।
ম্যাথু শার্লে

@ ম্যাথহেসার্লি - কোনও উদ্বেগ নেই। ;)
মার্টিন সোজকা

11

ক্লায়েন্ট শত্রুর হাতে। ( অনলাইন ওয়ার্ল্ড ডিজাইনের আইন )

সত্যই, বেশিরভাগ চিটকে পরাজিত করার একমাত্র উপায় হ'ল ক্লায়েন্টটিকে "পাতলা ক্লায়েন্ট" হওয়া, এটি হল: কেবলমাত্র একটি ইনপুট এবং আউটপুট ডিভাইস হিসাবে কাজ করা এবং এটি যথাযথভাবে প্রয়োজনের চেয়ে বেশি তথ্য না দেওয়া।

এটি অটোমেশন বন্ধ করবে না এবং এটি নিষ্ক্রিয় তথ্য সংগ্রহ এবং বিশ্লেষণ থামিয়ে দেবে না, তবে আপনি আপনার গেমটি এমনভাবে ডিজাইন করতে পারেন যাতে এর কোনও উল্লেখযোগ্য প্রভাব না পড়ে।

এটি সার্ভারের দ্বারা নির্ভরশীল ত্রুটিযুক্ত বার্তাগুলির মাধ্যমে লোকেদের একে অপরকে হ্যাক করা বন্ধ করবে না - আপনার ক্লায়েন্টকে সার্ভারের বার্তাগুলি থেকে রক্ষা করা দরকার যেমন আপনি এসকিউএল ইঞ্জেকশন আক্রমণ থেকে আপনার ওয়েবসাইটগুলিকে রক্ষা করবেন।

যেহেতু আপনিও একক প্লেয়ার গেমের জন্য একই ক্লায়েন্টটি ব্যবহার করতে চান, এর সমাধান হ'ল একটি পৃথক প্রক্রিয়া / থ্রেডে একটি স্থানীয় সার্ভার চালানো এবং এটি ক্লায়েন্ট / সার্ভার সেটিং হিসাবে অভ্যন্তরীণভাবে আচরণ করা। "চিটস" পরে সার্ভার সাইডে কাজ করবে। মাইনক্রাফ্ট অনুরূপ কিছু করে, যদিও এটি কোনও উপায়ে গেম ইঞ্জিনটিকে তার ইন্টারফেস থেকে এমনভাবে বিভক্ত করে না।

প্রস্তাবিত পড়া:


2

একটি মৌলিক মাল্টিপ্লেয়ার গেম ধরণের প্রতারণা ইঞ্জিন ধরণের সহজভাবে কাজ করবে না। ক্লায়েন্টরা কেবল ডেটা এবং আপনি যে নকশাগুলি ডিজাইন করেছেন তা কেবল পাঠিয়ে দিচ্ছেন। সাধারণত খেলোয়াড় "কী" করেছিলেন তার চেয়ে বেশি কিছু নয়, যেমন তিনি কোন দিকে চালাচ্ছেন, যদি তিনি শুটিং করছেন এবং আরও কিছু করেন না। সুতরাং তিনি স্মৃতিতে পরিবর্তনগুলি কেবল তার নিজের গেমকেই প্রভাবিত করবে, তবে অন্যান্য খেলোয়াড়রা কোনও পরিবর্তন দেখবে না, তথাকথিত একটি ডিজাইনক। বেশিরভাগ গেমস এর মতো ডিজাইনসগুলি সনাক্ত করে এবং ডিজাইনড প্লেয়ারটিকে গেমটি থেকে সরিয়ে দেয়।

এখন প্রতারণার অন্যান্য উপায়ও রয়েছে তবে সেগুলি আপনার গেমটি কীভাবে ডিজাইন করা হয়েছে সে সম্পর্কে।

নেটওয়ার্ক বার্তাগুলি নকল করছে এমন সহজতম হ্যাকগুলি থেকে রক্ষা করার জন্য, সার্ভারের উচিত তাদের প্যাকেজটি তাদের বিচক্ষণতার জন্য check "এই লোকটি মাত্র 5 স্ক্রিন লাফিয়েছে? অসম্ভব, প্যাকেজ অস্বীকার করুন" " (দ্রষ্টব্য যে আপনি সম্পূর্ণ সিঙ্ক্রোনাইজড রুটও যেতে পারেন - যার অর্থ সব কিছু সিঙ্ক্রোনাইজড এবং কেবল "প্লেয়ার কী কী বোতাম টিপত।" - ধরণের বার্তা প্রেরণ করা হয় - যা ডিজাইনের সাহায্যে নেটওয়ার্ক বার্তাগুলিকে ফেক করে দেয়))

মাল্টিপ্লেয়ারে প্রতারণার শেষ উপায়টি হ'ল ভিজিবিলিটি হ্যাক, ক্লায়েন্টকে সংশোধন করতে পারে যাতে এটি খেলোয়াড়কে ডেটা দেখায় যা তিনি জানেন না। এর উদাহরণগুলি যুদ্ধের কুয়াশা প্রদর্শন করছে না, দেয়াল দিয়ে সন্ধান করতে সক্ষম হবে, একটি মিনিম্যাপ বা অন্যান্য জিনিস প্রদর্শন করবে। এগুলি প্রতিরোধ করা অসম্ভব।


আমি দৃশ্যমান হ্যাকগুলির সাথে একমত নই। এগুলি ক্লায়েন্টের তথ্য না দিয়ে বাধা দেওয়া যায় না যতক্ষণ না তাদের চরিত্রটি এটি সম্পর্কে অবগত থাকে? আমাকে ভুল করবেন না, এটি ভাল ডিজাইন নাও হতে পারে। তবে এটি প্রতিরোধ করা অসম্ভব থেকে পৃথক।
xuincherguixe

@xuincherguixe আমি মনে করি এটি কিছু পরিস্থিতিতে অসম্ভব। উদাহরণস্বরূপ, উভয় ক্লায়েন্ট একই আইপি এবং একই বন্দরের অধীনে খেলছে। এই ক্ষেত্রে এটি কেবলমাত্র একজন ক্লায়েন্টের ভাল ইচ্ছা যা তাকে অন্যের জন্য ডেটা পড়া থেকে বাধা দেয়।
ভোডজু

1

আপনার ভেরিয়েবলের মানগুলি পরিচালনা করে এমন প্রাথমিক চিট ইঞ্জিন হ্যাকগুলি রোধ করতে আপনাকে সেই মানগুলি আড়াল করতে হবে। সাধারণত চিট ইঞ্জিনটি আকর্ষণীয় ভেরিয়েবলের স্মৃতি অবস্থান চিহ্নিত করতে (সোনার পরিমাণ বা জীবনের পরিমাণ বা কোনও সামর্থ্যের স্তরের আপগ্রেড বলুন) চিহ্নিত ভেরিয়েবলের জ্ঞাত মান অনুসন্ধান করে আরও গেম খেলুন এবং মানটির কারণ হিসাবে চিহ্নিত করতে ব্যবহৃত হয় পরিবর্তন করুন, তারপরে প্রতারণামূলক ইঞ্জিন নতুন মানটির জন্য পূর্ববর্তী অনুসন্ধানের ফলাফল থেকে একটি নতুন অনুসন্ধান করবে। এটি চিটকারীকে মানটির মেমরির অবস্থানটিতে জুম বাড়িয়ে দেয়, এখন তারা চিট ইঞ্জিন ব্যবহার করে সেই মেমরির অবস্থানটির মান পরিবর্তন করতে পারে।

উদাহরণস্বরূপ, আমার কাছে 245 গোল্ড ... চিট ইঞ্জিন সহ আমি 245 এর জন্য অনুসন্ধান করি এবং অনেকগুলি স্মৃতি অবস্থান খুঁজে পাই। তারপরে আমি আরও কিছু খেলি এবং আমার স্বর্ণটি 314-এ পৌঁছে দেই, আমি তারপরে 314 মানের জন্য পূর্ববর্তী অনুসন্ধানের আউটপুটটি অনুসন্ধান করি এবং সহজেই যেখানে গোল্ড সঞ্চিত আছে তার জন্য মেমরির অবস্থানটি সন্ধান করি।

এটি প্রতিরোধের উপায়টি হ'ল কখনই কোনও মেমরির স্থানে আসল মান সংরক্ষণ করা হয় না। উদাহরণস্বরূপ, আমি মানটিকে এমন একটি বস্তুর মধ্যে সঞ্চয় করি যা প্রয়োজনের সময় সত্যিকারের মানটি গণনা করতে হয়। সুতরাং বলি যে প্লেয়ারটির 245 গোল্ড রয়েছে। যদি তারা 245 মান সহ একটি মেমরি অবস্থানের জন্য অনুসন্ধান করে তবে তারা অনেকগুলি খুঁজে পেতে পারে তবে তাদের মধ্যে কোনওটিই সোনার মান যেখানে সঞ্চিত তা মেমরির অবস্থান হবে না, কারণ আপনি সোনার জন্য 245 মান সঞ্চয় করেন না। যখন গেমটি কত সোনার তা জানতে হবে, তখন এটি এর জন্য মূল্যটি ধারণ করে এমন বস্তুকে জিজ্ঞাসা করবে, যা এটি চাহিদা অনুযায়ী গণনা করবে।

সুতরাং এখন প্রশ্নটি: আপনি কীভাবে কোনও মানটিকে এমনভাবে সঞ্চয় করেন যা এটি প্রকাশ করে না? এটি কিছুটা জটিল এবং কুরুচিপূর্ণ হয়ে উঠেছে এবং আমি নিশ্চিত যে এটি করার অনেক উপায় রয়েছে। আমি যা করতে চাই তা হল একটি বুলিয়ান অ্যারে (বা বাইট অ্যারে) সঞ্চয় করা। অ্যারের দৈর্ঘ্য যে কোনও হতে পারে, তবে আসুন এটি 13 বলে দিন Then তারপরে আপনার কাছে এমন একটি পাল্টা রয়েছে যা প্রতিনিধিত্ব করে যে 13 তার প্রকৃত মানটিতে কতবার যায়। সুতরাং আমরা যদি 245 টি উপস্থাপন করতে চাই তবে কাউন্টারটির মান 18 হবে Now এই ক্ষেত্রে এটি 11, সুতরাং অ্যারে প্রথম 11 বুলিয়ান সত্য হিসাবে সেট করা হবে, বাকিটি মিথ্যাতে সেট করা। মানটি পুনরুদ্ধার করতে আপনাকে যা করতে হবে তা হ'ল অ্যারের দৈর্ঘ্য দ্বারা কাউন্টারকে গুণিত করুন, তারপরে প্রতিটি বুলিয়ান সেট সত্য হিসাবে সেট করুন (প্রথম মিথ্যাটিতে থামানো) 1 এখন ২৪৫ নম্বরটি আর কোথাও সংরক্ষণ করা হবে না এবং সোনার পরিমাণ পরিবর্তন করতে মেমরির অবস্থানটি খুঁজে পাওয়া শক্ত হবে। আপনি যখন এই বস্তুটি তৈরি করবেন তখন আপনি অ্যারের দৈর্ঘ্যটি বিভিন্ন আকারে নির্ধারণ করতে পারেন (সম্ভবত এলোমেলোভাবে কিছু যুক্তিসঙ্গত ব্যাপ্তির মধ্যে একটি সংখ্যা চয়ন করুন)।

সম্পাদনা: এটি মাল্টিপ্লেয়ার এবং একক প্লেয়ারের জন্য দরকারী। এখানে প্রতারণা রয়েছে যা মাল্টিপ্লেয়ারেও করা যেতে পারে, যেখানে প্যাকেটের মানগুলি পরিবর্তন করতে পারে। প্রতিটি প্যাকেটে স্বাক্ষর করার মতো এটির জন্য বিভিন্ন কৌশল প্রয়োজন techniques


1
সাধারণত, প্রতারণা রোধ করতে, মাল্টিপ্লেয়ার গেমস সার্ভারের সমস্ত কিছু গণনা করে, তাই ক্লায়েন্টের একটি মান পরিবর্তন করে বা সার্ভারে প্রেরণ করা একটি প্যাকেটে, আসল গেমটিতে কোনও জিনিস পরিবর্তন করে না। কিন্তু এখনও, উত্তর উত্তর আকর্ষণীয়।
ভায়ল্যানকোর্ট

@ অ্যালেক্সান্ড্রেভেল্যানকোর্ট ভাল পয়েন্ট আমি সার্ভারের সিপিইউ গণনা স্বাক্ষরগুলি বগিংয়ের সাথে উদ্বিগ্ন। আমি দু'জন খেলোয়াড়ের মধ্যে কেবল প্যাকেটগুলি পাসওয়ার্ড দিয়ে সার্ভারটি দ্রুত রাখতে চাই, তবে আপনি এখন যে বিষয়টি দেখিয়েছেন তা আমি এখনই ঘুরে দেখব।
জোস মার্টিনেজ

আপনি যদি ক্লায়েন্ট থেকে সার্ভারে কেবল ইনপুটগুলি প্রেরণ করেন তবে আপনাকে প্রতিটি প্যাকেটে স্বাক্ষর করতে হবে না। একবার সার্ভারে, যদি ইনপুটটি কোনও অর্থ না দেয় তবে সেগুলি কেবল প্রত্যাখ্যান করা হয়, বা ক্লায়েন্টকে প্রতারণার জন্য বের করে দেওয়া হয়। সার্ভার গেমের পরবর্তী অবস্থার গণনা করে, তারপরে সমস্ত খেলোয়াড়কে নতুন রাজ্য প্রেরণ করুন, এটি সাধারণত কীভাবে প্রতারণা এড়ানো হয় (আপনি এ জাতীয় বট থেকে মুক্তি পাবেন না, তবে কমপক্ষে আপনি খেলোয়াড়দের কাছ থেকে নৈমিত্তিক প্রতারণা এড়ান) ।
ভায়ল্যানকোর্ট

1
এড়াতে, আপনি সার্ভারকে নতুন জীবন আপডেট করতে দিন, তারপরে ক্লায়েন্টকে নতুন জীবন প্রেরণ করুন। সার্ভারে সমস্ত কিছু গণনা করা হয়, এবং ক্লায়েন্টদের সমস্ত গুরুত্বপূর্ণ জিনিসের জন্য সহজভাবে "বোবা টার্মিনাল" হতে দিন: ক্লায়েন্ট প্লেয়ারের কাছ থেকে ইনপুটগুলি ক্যাপচার করার জন্য দায়বদ্ধ হবে ("এক্স-এ টাইম টি, টি" ক্লিক করুন, "হিট বোতাম এক্স সময়ে টি "), সেগুলি সার্ভারে প্রেরণ করা এবং সার্ভার থেকে নতুন রাষ্ট্র প্রাপ্তি (" প্লেয়ারটি এখন এক্স, ওয়াই অবস্থানে রয়েছে, "প্লেয়ারটির লাইফ জেডজেডজেড আছে") এবং এটি প্লেয়ারকে প্রদর্শন করছে।
ভায়ল্যানকোর্ট

1
এটির সাহায্যে, প্রতারক (মাঝখানে মানুষ) প্যাকেটগুলির সাথে তারা যা চাইবে তা জবাবদিহি করতে পারে, এটি সার্ভারে গেমের অবস্থা পরিবর্তন করবে না কারণ সার্ভারটি নিশ্চিত করবে যে ইনপুটটি বৈধ কিনা ("এইচএমএম ক্লায়েন্ট ক্লিক করেছে)" সর্বশেষ 0.03 সেকেন্ডের মধ্যে পাঁচটি পৃথক স্থানে, এটি সাধারণ নয়, আসুন এই ক্লিকগুলি প্রত্যাখ্যান করুন "), এবং সমস্ত সিমুলেশন নিজেই চালাও।
ভায়ল্যানকোর্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.