من در یک بازی چند نفره (ترکیب RPG و استراتژی) برای ویندوز با استفاده از C ++ کار می کنم که قرار است در Steam منتشر شود.
من می خواهم نرم افزار client.exe را تا آنجا که ممکن است امن کنم.
لطفا سعی نکنید پست های مربوط به فراموشی مشتری را ایجاد کنید و فقط تمام محاسبات را روی سرور انجام دهید، زیرا می خواهم روی مشتری تمرکز کنم. [1965،9002] کشف کردم که دستکاری هر برنامه باز شده در سیستم با استفاده از زیر بسیار آسان است توابع C ++: OpenProcess، WriteProcessMemory، CreateRemoteThread، و غیره
Q1) چگونه می توان از آن جلوگیری کرد؟
من نمی خواهم برنامه دیگری (تقلب / مربی) که بتواند به پروسه من دسترسی پیدا کند و تغییر دهد حافظه آن
بنابراین اگر می توانم برنامه های دیگر را از ایجاد دسته ها به فرایند من برای نوشتن حالت جلوگیری کنم، باید بیشتر امن باشم. چگونه می توان آن را از راه آسان جلوگیری کرد؟
من برخی تحقیقات انجام داده ام و ObRegisterCallbacks را پیدا کرده ام که می تواند از ایجاد دسته برای فرآیندهای خاص جلوگیری کند (من از آن برای جلوگیری از ایجاد یک دسته برای فرآیند مشتری استفاده می کنم)
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/wdm/nf-wdm-obregistercallbacks
به عنوان مثال – https://github.com/Microsoft/Windows-driver -samples / tree / master / general / obcallback
با این حال به نظر می رسد این نیاز به ساخت یک فایل * .sys است که درایور ویندوز است و این فایل باید به صورت دیجیتالی کد امضا شود. من چند سال پیش یک گواهینامه مشترک را خریدم و هزینه آن چند صد دلار در سال بود؛ از آن زمان مجبور شدم آن را لغو کنم، زیرا این خیلی گران است.
Q2) آیا می توانم یک بازی که از * درایور .sys بدون نیاز به خرید کدهای امضای گران قیمت؟
Q3) آیا می توانم درایور * .sys را امتحان کنم و فقط از ObRegisterCallbacks استفاده کنم از فایل client * .exe؟ (ترجیح داده)
Q4) اگر «ObRegisterCallbacks» بدون فرایند امضای کد گران قیمت قابل استفاده نباشند، چه گزینه های دیگری وجود دارد؟
Q5) چرا مایکروسافت فقط پچ کردن ویندوز و جلوگیری از برنامه های دیگر از قادر بودن به حافظه فرایندهای دیگر را دستکاری می کند، زیرا این یک سوراخ امنیتی جدی است. این باید توسط سیستم عامل به طور خودکار انجام شود، و نه هر برنامه باید برای مبارزه برای محافظت از خود. اگر MS فقط ویندوز را تعمیر کند، 99٪ از بازی ها / مربیان / ویروس ها بی فایده خواهد بود.
من می دانم که من می توانم به طور پراکنده از تمام پروسه ها تکرار کنم و توابع خود را برای باز کردن دسته های پردازش (برای جلوگیری از دسترسی به فرایند پردازش مشتری خود ) و یا حتی فقط تشخیص هر دست باز، با این حال که کامل نیست، زیرا: باید آن را به صورت دوره ای، مصرف CPU، و برنامه های تقلب که اجرای اجرا، تغییر حافظه و فورا نزدیک است که خیلی سریع به توسط برنامه من شناسایی شده است همچنین اگر میخواهم سایر تماسهای عملکرد فرایند را قلاب کند، پس برنامه من بیشتر شبیه یک ویروس است، در حال تلاش برای تغییر سایر فرآیندها / توابع. من برنامه من را ترغیب نمی کنم که فرآیندهای دیگر را تغییر دهم، بلکه فقط از دسترسی آنها به فرایند مشتری بازی من جلوگیری می کنم.
با تشکر