4। গেম হ্যাকিং – ভালভ অ্যান্টি -চিট (ভ্যাক)


পরিচয়

২০০২ সালে ভালভ একটি অ্যান্টি-চিট সমাধান তৈরি করেছিলেন “ভালভ অ্যান্টি-চিট” ওরফে ভ্যাক। প্রথম খেলাটি তারা ভ্যাকিংয়ে প্রয়োগ করেছিল তা হ’ল পাল্টা-ধর্মঘট। কখন ভ্যাক এটি চালু করা হয়েছিল এটি কেবল ব্যবহারকারী মোডে পরিচালিত (এখনও করে) অর্থ এটি ব্যবহারকারীর জায়গাতে পুরোপুরি চলে এবং কোনও কার্নেল উপাদান নেই।

নীচে গেমগুলির একটি তালিকা রয়েছে ভ্যাক..

Call of Duty: Modern Warfare 2
Call of Duty: Modern Warfare 3
Counter-Strike (video game)
Counter-Strike: Condition Zero
Counter-Strike: Source
Counter-Strike 2
Day of Defeat
Day of Defeat: Source
Deathmatch Classic
Half-Life 2: Deathmatch
Half-Life Deathmatch: Source
Ricochet
Team Fortress
Team Fortress Classic

একটি দীর্ঘ তালিকা এখানে পাওয়া যাবে


ভ্যাক-কেসিডেন্ট?

সুতরাং .. যদি আপনি জানেন না ভ্যাক লেখার সময় বেশ কিছুক্ষণ ধরে ছিল, এটি 23 বছর হবে। সময়ের সাথে সাথে তারা কিছু ভুল করেছে কিন্তু কে না? (উইকিপিডিয়া থেকে নেওয়া)

- In July 2010, (snip) Approximately 12,000 owners of Call of Duty: Modern Warfare 2 were 
banned when Steam updated a DLL file on disk after it had been loaded into memory by the 
game, causing a false positive detection. These bans were revoked and those affected received 
a free copy of Left 4 Dead 2 or an extra copy to send as a gift. 

- In October 2023, certain users of AMD graphics cards were banned from Counter-Strike 2 
after AMD added support for their "Anti-Lag+" feature via a driver update, which the game 
flagged as a cheat due to it detouring certain DLL functions. AMD subsequently withdrew the 
driver update and Valve pledged to unban any affected users.

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

  • আছে ভ্যাক আপনার বাষ্প প্রোফাইলে নিষেধাজ্ঞা শো
  • সব থেকে নিষিদ্ধ হচ্ছে “গোল্ডসার্ক” গেমস
  • সব থেকে নিষিদ্ধ হচ্ছে “উত্স ইঞ্জিন” গেমস (কাউন্টার-স্ট্রাইক সিরিজ)
  • সক্ষম হচ্ছে না ফেরত আপনি খেলা ভ্যাক নিষিদ্ধ

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


ভ্যাক কি?

পূর্ববর্তী বিভাগটি আমাদের এমন একটি শব্দে নিয়ে আসে যা আপনি আগে শুনে থাকতে পারেন, কুখ্যাত “ভ্যাক বাইপাস”। বাইপাসিং সম্পর্কিত তথ্যের জন্য অনলাইনে অনুসন্ধান করা ভ্যাক অনেকগুলি ব্লগ এবং রেপো নিয়ে আসে যা দেখে মনে হয় যে সমস্ত কিছু অনুরূপ কিছু করতে/কথা বলে এবং এটি “ডাম্পিং” ভ্যাক মডিউল “। আমাকে ব্যাখ্যা করতে দিন, ভ্যাক হয় না সিস্টেমে এটি কেবল একটি কার্যকরযোগ্য এটি কোনও সার্ভার থেকে অ্যান্টি-চিট মডিউলগুলি (ডিএলএল) প্রবাহিত করে, একবার কোনও মডিউলটি কিছু রুটিন দ্বারা পুনরুদ্ধার করা হয় স্টিম সার্ভিস.ডিল ভিতরে স্টিম সার্ভিস.এক্সই
(বা স্টিম.এক্সই যদি অ্যাডমিন হিসাবে দৌড়ে) এটি নীচের দুটি পদ্ধতির একটি ব্যবহার করে লোড করা হবে।

  • প্রতিচ্ছবি লোড স্মৃতিতে ডিএলএল
  • উইনাপি ফাংশন ব্যবহার করুন লোডলিবারি

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


বড় ’25 এ ভ্যাক মডিউলগুলি ডাম্পিং

লাথি মারতে শুরু করতে শুরু করুন ভ্যাক মডিউল লোড স্টিম সার্ভিস.ডিল মধ্যে বাইনারি নিনজা। বাইনারি পুরোপুরি বিশ্লেষণ হয়ে গেলে “ট্রাইজ সংক্ষিপ্তসার” এ যান

/ভিএসি -1.png

এটা খুব এটি নোট করা গুরুত্বপূর্ণ যে এটি একটি 32-বিট প্রক্রিয়া, সুতরাং সমস্ত পয়েন্টার আকারে 32-বিট হবে আপনি দেখতে পাবেন কেন এটি পরে গুরুত্বপূর্ণ।

এরপরে আমরা কলগুলি অনুসন্ধান করব লোডলিবারি* আমি পাঠককে কিছু সময় সংরক্ষণ করব এবং আপনাকে বলব যে আমাদের কলগুলি সন্ধান করা উচিত লোডলিবারিউ এটি একটি খুব গুরুত্বপূর্ণ ফাংশনে ডাকা হবে যা আমরা ট্র্যাকটি ব্যাক করতে ব্যবহার করতে পারি।

/Vac-2.png

রেফারেন্স অনুসরণ করে আমাদের একটি আকর্ষণীয় ফাংশনে নিয়ে যায় সাব_10086F80

/Vac-3.png

রিটার্ন মান দ্বারা বিচার করা Hmodule এবং লোডলাইব্রেরিতে কলগুলি* এই ফাংশনের কাজটি বলা নিরাপদ যে কোনও ধরণের মডিউল লোড করা এবং এতে একটি হ্যান্ডেলটি ফিরিয়ে দেওয়া। এই ফাংশনটি কোথায় বলা হয় তার উল্লেখগুলি আমাদের আরও একটি আকর্ষণীয় ফাংশনে নিয়ে যায় সাব_10086C40

/Vac-4.png

এর শুরু সাব_10086C40 ফাংশনটি খুব গুরুত্বপূর্ণ মনে হয়নি (সেই সময়ে) তবে আমাদের মনে রাখা উচিত যে এই ফাংশনটি কোনও মডিউলটিতে একটি হ্যান্ডেলও দেয়। আমি রেফারেন্সগুলি দেখেছি এবং এটি দেখায় যে এই ফাংশনটি ফাংশনে একবার বলা হয় সাব_10059040

/ভিএসি -17.png

আমরা দেখতে পারি সাব_10086C40 ডাকা হচ্ছে যদি আমরা ফিরে ট্রেস করি প্রথম যুক্তি সেই ফাংশনে চলে গেছে, আমরা দেখতে পাব যে এটি অন্য কোনও ফাংশন দ্বারা ব্যবহৃত হয়েছিল সাব_100859D0। যদি সেই ফাংশন কলটি সফল হয় তবে কার্যকর কার্যকর হয়, তাই এটি গুরুত্বপূর্ণ এটি বলা নিরাপদ। আসুন এই ফাংশনটি একবার দেখে নেওয়া যাক।

/Vac-18.png

এই ফাংশন দুটি উইনাপি কল করে

  • GetTempathw
    : অস্থায়ী ফাইলগুলির জন্য মনোনীত ডিরেক্টরিটির পথ পুনরুদ্ধার করে।

  • GetTempfilenamew
    : একটি অস্থায়ী ফাইলের জন্য একটি নাম তৈরি করে। যদি কোনও অনন্য ফাইলের নাম উত্পন্ন হয় তবে একটি খালি ফাইল তৈরি করা হয় এবং এটির হ্যান্ডেলটি প্রকাশিত হয়; অন্যথায়, কেবল একটি ফাইলের নাম উত্পন্ন হয়।

এই কলগুলির সংমিশ্রণটি আমাদের জানায় যে আমাদের যে কোনও সন্ধান করা দরকার .TMP ফাইলগুলি অ্যাক্সেস করা হচ্ছে, নামগুলি সাধারণত এই ফর্ম্যাটে থাকে <uuuu>.TMP

এখন স্মৃতিতে ভাসমান একটি ডিএলএল যাওয়ার পথ রয়েছে কীভাবে এটি ব্যবহার করা হয়? আর তাকান না।

/Vac-5.png

100591f7   HMODULE eax_13 = sub_10086c40(edi_1, 0)
100591ff   *(esi + 4) = eax_13
100591ff   
10059204   if (eax_13 != 0)
10059215       int32_t eax_14 = sub_10086c20(eax_13, "_runfunc@20")
1005921d       *(esi + 0xc) = eax_14

পথ edi_1 দ্বারা ব্যবহৃত হয় সাব_10086C40এই ফাংশনটি একটি মডিউলে একটি হ্যান্ডেল পেতে ব্যবহৃত হয় eax_13 তারপরে এটি সেই হ্যান্ডেলটি পাস করছে সাব_10086C20
সাব_10086C20 দুটি যুক্তি নেয় আমরা জানি প্রথমটি একটি মডিউলটির একটি হ্যান্ডেল যা দ্বিতীয়টি আমরা এখানে একটি স্ট্রিং দেখতে পাচ্ছি _runfunc@20রিটার্ন মান
int32_t দেখতে কিছুটা অদ্ভুত লাগছে তবে এটি একটি 32-বিট প্রক্রিয়া মনে রাখবেন;) সুতরাং এটি কি এমন কিছু মনে করতে পারে না যে আপনি কি ভাবেন না? এখানে ফাংশন প্রোটোটাইপ

int32_t sub_10086c20(HMODULE arg1, PSTR arg2)

আপনার বেটগুলি এটি গেটপ্রোক্যাড্রেস র‌্যাপার হিসাবে রাখুন .. ড্রাম রোল দয়া করে … এটি …

/Vac-6.png

সুতরাং আমরা জানি এই বিট তথ্য দিয়ে স্টিম সার্ভিস.ডিল পুনরুদ্ধার ভ্যাক মডিউল, এটি একটি ফাংশন ব্যবহার করছে সাব_10086C40 যা কল
সাব_10086F80 অ্যান্টি-চিট মডিউলটি লোড করতে এবং একটি হ্যান্ডেলটি ফেরত দিতে, তারপরে সেই হ্যান্ডেলটি পাস করা হয় সাব_10086C20 নামকরণ করা একটি ফাংশনের ঠিকানা পেতে _runfunc@20। ডিফল্টরূপে যেমনটি আগে বলা হয়েছে মডিউলগুলি প্রতিফলিতভাবে লোড করা হয়েছে তাই এটি নিয়মিত নিয়ন্ত্রণ প্রবাহ নয়
স্টিম সার্ভিস.ডিলআপনি যদি কিছুটা স্ক্রোল করে থাকেন তবে এটি নিশ্চিত করা যেতে পারে সাব_10059040 আপনি দেখতে পাবেন একটি পতাকা চেক করা হচ্ছে।

/Vac-7.png

স্টিম সার্ভিস.ডিল আমরা যদি এটি সম্পর্কে কিছু না করতে পারি তবে সম্ভবত এই পথটি গ্রহণ করবে

/Vac-8.png

আসুন এটি সমাবেশে দেখুন

/Vac-9.png

নজর দেওয়া je 0x10059127 ( 0x74 0x47 )

0x74 সমান নির্দেশ যদি লাফ হয় এবং 0x47 হেক্সে লাফাতে (71) কত বাইট ফরোয়ার্ড

আমরা যা করতে চাই না তা হ’ল প্রথম নির্দেশনা পরিবর্তন স্টিম সার্ভিস.ডিল + 0x590de (0x100590de)

  • থেকে jne 0x10059127 ( 0x75 0x47 )

আমরা এই নির্দেশের প্রথম বাইটটি পরিবর্তন করছি 0x75 যা যদি লাফ হয় না
শূন্য/সমান। (ইনভার্টিং)

/ভিএসি -10.png

এখন আমাদের ডাম্প করার একটি সম্ভাব্য উপায় রয়েছে ভ্যাক মডিউলগুলি এটি পরীক্ষা করা যাক! প্রথমে আমরা বাষ্প এবং লঞ্চ শুরু করি x32dbg অ্যাডমিন হিসাবে আমাদের আমাদের নির্দেশাবলীর অফসেটটি মনে রাখা উচিত স্টিম সার্ভিস.ডিল + 0x590de।

/ভিএসি -11.png

একবার x32dbg সংযুক্ত লোড হয় স্টিম সার্ভিস.ডিল

/ভিএসি -12.png

টিপুন CTRL+G এবং প্রবেশ steamservice.dll + 0x590DE

/ভিএসি -13.png

এখন আমরা যেখানে আমাদের প্যাচ করা দরকার

/ভিএসি -14.png

সেই নির্দেশে ডান ক্লিক করুন এবং “একত্রিত করুন” ক্লিক করুন তারপরে প্রবেশ করুন jnz 0x10059127 এবং ঠিক আছে

/ভিএসি -15.png

এটি পরিবর্তন করা উচিত

/Vac-16.png

পরবর্তী পদক্ষেপটি খুলতে হয় প্রোকমন ব্যবহার করে এমন একটি গেম খেলুন ভ্যাক (আমি সিএসজিও বেছে নিয়েছি) এবং জন্য অপেক্ষা করি
স্টিম সার্ভিস.এক্সই কিছু অ্যাক্সেস করতে .TMP ফাইল।

এখানে প্রোকমন ফিল্টার

/ভিএসি -19.png

গেমটি লোড করার সময় আমরা আমাদের প্রথম টিএমপি ফাইলটি দেখতে পাই C:\Windows\Temp\D54A.tmp

/Vac-20.png

আসুন একটি পাবলিক ম্যাচে যোগদান করুন এবং দেখুন অন্যরা আছে কিনা

/Vac-21.png

এবং আরও কিছু ..

/Vac-22.png

আমরা টেম্প ডিরেক্টরিতে এই ফাইলগুলিও দেখতে পারি ..

/ভিএসি -23.png

আমি এই সমস্ত ফাইল একটি নতুন ডিরেক্টরিতে অনুলিপি করেছি এবং লোড করেছি D54A.tmp মধ্যে পে-বিয়ার

/Vac-24.png

আমরা পরিচিত কিছু দেখতে _runfunc@20 এটি ব্যবহার করে পাওয়া ফাংশন সাব_10086C20


অবিরত করা

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


রেফারেন্স

Source link

মন্তব্য করুন

আপনার ই-মেইল এ্যাড্রেস প্রকাশিত হবে না। * চিহ্নিত বিষয়গুলো আবশ্যক।