Загрузка...

C# Native dll возможно?

Тема в разделе C# создана пользователем krixn 25 мар 2023. 309 просмотров

Загрузка...
Опрос

Я даун?

  1. Да

    2
    50%
  2. Однозначно

    2
    50%
  1. krixn
    krixn Автор темы 25 мар 2023 1 16 июн 2021
    Добрый день! Есть кто-нибудь кто писал internal cheat C# и инжектил их в игру. Какие проблемы могут возникнуть? Или лучше всего использовать C++ для создание internal cheat. Видел в интернете про NativeAOT от dotnet но там, я так понял он не всех приложениях работает 32 битные например.
     
  2. W223
    W223 25 мар 2023 Android Developer 9173 14 ноя 2013
    В основном, читы для игр разрабатываются на C++ из-за его производительности и возможности напрямую взаимодействовать с низкоуровневыми компонентами системы. Однако, использование C# также возможно для создания internal читов, хотя это может потребовать дополнительных усилий.

    С C#, ты будешь испытывать проблемы с:


    Производительность: C# является высокоуровневым языком, и выполнение кода может быть медленнее, чем в случае с C++. Это может повлиять на производительность чита и вызвать задержки.
    Интеграция с играми: Игры, особенно на низкоуровневых движках, могут быть написаны на C++ или других языках, что может создать сложности при интеграции чита, написанного на C#.
    Обнаружение: Античит системы обычно оптимизированы для обнаружения читов, созданных на C++ и других распространенных языках. Использование C# может увеличить вероятность обнаружения чита.

    Что касается NativeAOT от dotnet, это экспериментальная технология, которая позволяет компилировать C# в нативный исполняемый код. Но она имеет ограничения, такие как отсутствие поддержки 32-битных приложений.

    В целом, если уже есть опыт работы с C# и есть желание создать internal чит на этом языке, это возможно, но потребуется больше усилий по сравнению с использованием C++. Думаю будет более предпочтительным вариантом рассмотреть плюсы для создания читов, из-за их преимуществ в производительности и интеграции с такими сложными программами как игры.
     
    25 мар 2023 Изменено
    1. krixn Автор темы
      W223, А стоит ли рассматривать язык программирования RUST или всё же лучше C++? Просто C# то имеется опыт в познании и программирования тех же сайтов, но дальше сайтов и стандартных бизнес-приложений я дальше не делал. Хотелось бы просто понять, есть смысл страдать и пытаться сделать на C# или лучше изучить новый язык программирования?
    2. Yotic
      W223, всё выше описанное возникает только при работе с CLR/CLI, в ином случае всё окей
  3. Naturalov
    Naturalov 25 мар 2023 GG 430 18 фев 2023
    С++ лучше
     
    1. krixn Автор темы
      Naturalov, Языки программирования: RUST, CARBON как альтернатива C++?
    2. LsdDance
      krixn, ахха, карбон, ну на расте можно
    3. Naturalov
      krixn, Кто как хочет так и дрочит) Просто С++ это низкоуровневые, а C# выше
  4. Daemon
    Daemon 25 мар 2023 1691 8 янв 2021
  5. Yotic
    Yotic 25 мар 2023 Ебашу на C# всё что захотите(Разноцветное) 43 13 янв 2021
    1. krixn Автор темы
      Yotic, Да я видел твои сурсы на гитхабе
      Даже инжектор на C# не помог
      CSHARP
      private readonly string _library = $@"{Environment.CurrentDirectory}\NAOT.dll";
      internal InjectorResult Inject()
      {
      try
      {
      if (null == _process) return InjectorResult.NoClient;
      if (!File.Exists(_library)) return InjectorResult.MissingFile;

      var handle = Usefuls.OpenProcess(1082U, 1, (uint)_process.Id);
      if (handle.ToInt64() == 0) return InjectorResult.NoHandle;

      var libAddress = Usefuls.GetModuleHandle("kernel32.dll");
      if (libAddress.ToInt64() == 0) return InjectorResult.NoLibrary;

      var procAddress = Usefuls.GetProcAddress(libAddress, "LoadLibraryA");
      if (procAddress.ToInt64() == 0) return InjectorResult.NoProcedure;

      var bytes = Encoding.ASCII.GetBytes(_library);
      var allocated = Usefuls.VirtualAllocEx(handle, IntPtr.Zero, new IntPtr(bytes.Length), 12288U, 64U);
      if (allocated.ToInt64() == 0) return InjectorResult.NoAllocation;

      if (Usefuls.WriteProcessMemory(handle, allocated, bytes, (uint)bytes.Length, 0) == 0)
      throw new Exception("Was unable to write library location into allocated memory.");

      var thread = Usefuls.CreateRemoteThread(handle, IntPtr.Zero, IntPtr.Zero, procAddress, allocated, 0U, IntPtr.Zero);
      if (thread.ToInt64() == 0) throw new Exception("Was unable to create a remote thread.");

      Usefuls.CloseHandle(handle);
      return InjectorResult.Success;
      }
      catch (Exception e)
      {
      Console.WriteLine(e);
      return InjectorResult.Error;
      }
      }
      25 мар 2023 Изменено
    2. krixn Автор темы
      Yotic, Но так и не подружилось приложение с библиотекой)
Top