2016-08-14 2 views
-3

Я пробовал несколько способов и следил за некоторыми учебниками в Интернете, но пока ничего не помогло. То, что я хочу сделать, это простая антихитовая программа для моей игры. Все, что нужно сделать, это сканировать программы, определенные в исходном коде по имени, читать шестнадцатеричный код и искать строку или, возможно, шестнадцатеричное значение. Пример: если cheatengine.exe запущен, просмотрите шестнадцатеричный код этого процесса. Если в шестнадцатеричном коде найдено 0x328934, закройте программу. Это возможно ? Спасибо за помощь.Простой антихит в C#

+1

Да, это возможно. Но вопрос слишком широк для StackOverflow. –

ответ

0

Я удивлен, что вы не нашли ничего ...

using System.Diagnostics; 
using System.IO; 

string[] definedPrograms = { "cheatengine.exe", "otherhacktool.exe" }; 

void stopCheats() 
{ 
    Process[] processList = Process.GetProcesses(); 
    foreach (Process process in processList) 
    { 
     foreach (string definedProgram in definedPrograms) 
     { 
      if (Path.GetFileName(process.MainModule.FileName) == definedProgram) 
      { 
       //Kill the other program 
       process.Kill(); 
      } 
     } 
    } 
} 

Как для чтения памяти процесса и сканировании шестнадцатеричного кода, вы можете хранить определенные шестнадцатеричные коды в 2-мерном массиве, но Я не уверен, как их получить в первую очередь.

Также вы должны знать, что эта реализация не очень безопасна ... Вы могли бы буквально изменить название exe-файла cheat на что-то другое, и программа не узнает его. Я бы посоветовал вам хотя бы проверить хэш-код exe md5 вместо имени файла или даже сохранить весь exe в программе и сравнить его с байтами двух программ ...

Я знаю, что это не полностью решило вопрос, но я надеюсь, что он указывает вам в правильном направлении ...