Перейти к содержанию

Laziz

Пользователи+
  • Постов

    207
  • Зарегистрирован

  • Посещение

  • Победитель дней

    12

Сообщения, опубликованные Laziz

  1. Привет

    Вот сама функция сравнения сигнатуры с буффером (вот тут нужно, что-то изменить, чтобы сделать FindPattern).

    Думаю все просто

    Address = (int)aobscan.AobScan(new byte[] { 0x00, 0x8B, 0x4A, 0x24, 0x85, 0xC0, 0x0F, 0x84 }, "xx?x?xxx", handle); // "xx?x?xxx" это маскаpublic IntPtr AobScan(byte[] Pattern, string mask, IntPtr handle){   ...   IntPtr Result = Scan(buff, Patternб mask); //Передаем маску   ...}protected IntPtr Scan(byte[] sIn, byte[] sFor, string mask){   //for (int i = End; sIn[Pool + i] == sFor[i]; i--) тут булеан выводим в отдельный метод.   for (int i = End; equal(sIn[Pool + i], sFor[i], mask, i); i--) // как то так.}bool equal(byte sIn, byte sFor, string mask, int maskNumber){   Дальше я думаю сообразишь, если нет то попробую помочь дальше, просто времени мало}
    • Плюс 1
  2. 3. Если игра написана на .net, то используя .net функции можно найти объекты, типы, функции и поля и менять их удобным образом, а не работать с функциями ОС-мы.

    У меня один раз было интересная случие. Я внедрил дллку написанное .NET в игру (не подозревая что игра тоже написана на .NET) и отлаживал с помощю VS "присоединиться к процессу" и на удевления мог видет все методы, классы и поля игры.

    • Плюс 1
  3. Пример инъекции .NET library(dll) в чужой процесс.

     

    ну... .NET не совсем без надежень в взломе игр.

    Вот пример инеъкции в "CSGO", плюс, нахождения структуры игроков, количество игроков в игре на примере видео урока

    В бинарном архиве есть ехе файл(InjectorDotNetDLL.exe) и длл файл(ExperementDll.dll). Если у Вас есть эта игра можете поэксперементировать.

    DotNETinjectionBinary.7z

     

    В проекте тоже самое в виде проекта

    DotNETinjectionProject.7z

    Инжектору есть одна требование, длл файл должен находеться там где ехе файл, иначе не инжектирует.

     

    на рисунке инжектированный длл выводить консолный окно для показа всяких сообшений.

    post-8512-0-64278300-1431532524_thumb.jp

    • Плюс 1
  4. по PAGE_EXECUTE_READWRITE нечего не находит

    мне кажется для начало надо посмотрет на СЕ тот регион, где байты, в каком состаянии

    post-8512-0-15369200-1430415257_thumb.jp

    исходя из этого надо писат  PAGE_EXECUTE_READWRITE или READWRITE или READ

  5. if (mem_basic_info.Type == MEM_IMAGE) {}

    а что за переменный "MEM_IMAGE"?

     

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

  6. Да нашел!!!!

    УРА действительно в конце пробел был.  o_0

    По модулям поиск не находит!

    Но поиск очень медленный

    В любом случаи спасибо, это хоть какое то решение.

    Но почему  тогда в поиске по модулям в буфере оказывается не то!

    Зачем его тогда вообще использовать, если в нем нет нужных значений!

    На все эти вопросы ответ придет со временем, если усердно потрудитесь, и тогда скажете БИНГО! :-D А пока скажу так.

    Модуль - по сути, те ж файлы на диске, а современнный игры, да и старые использует еще дополнительный памят. Поиск по модулям там не ищет. Как то так.

     

    Но почему тогда в поиске по модулям в буфере оказывается не то!

    не знаю, или вы так думаете или вам кажется так. во всяком случае там ничего не оказываеться.

     

    поиск медленный - потому что не С++.

  7. Если все еще актуально. Есть обертки к директХ, "SharpDX" и "SlimDX"

     

    вот пример написание сообшений в окне игры с помощю ДиректХ

    DX_Message.7z

     

    При желани можно пределать на есп. Если нужно дам проект

     

    Был какой-то специальный проект, кто-то его делал. Но я не помню названия. Там в простой форме можно было хукать и рисовать в чужом окне на разных версия DirectX. Поищи на форуме или в Гугле.

     

    Если не найдешь, то оборачиваешь DirectX- и WinAPI-функции в C# - функции и работаешь с ними. Как это сделать можно найти в Гугле.

    Если имеете введу эту http://forum.gamehacklab.ru/topic/2807-hook-directx9-na-c/?p=19250 то, туда по моему нивсем есть доступ.

    NullAlex: плюсик :)
    • Плюс 2
  8. Плюсанул)

    Программу потестил быстро с поиском по сигнатуре - отлично находит.

    P.S. #1

    Писал на C#?

    P.S. #2

    Добавил в твое сообщение результат сканирования с VirusTotal - вдруг кому интересно будет.

    Да, на C# писал. ценю +ы

    • Плюс 1
  9. Вы хотите сказат что на ЧитЭнжине находит последвательност байтов(сигнатуру), код каторый на С# не находит так?.

    Просто суть вопроса не могу понять.

     

    П.С. Вы

    • Плюс 1
  10. Не по тему:

    Coder сможешь точно таким же образам подгрузить ехе файл в другой процесс, скажем, СЕ грузился в чужой процесс да бы скрыт от некоторых защищённых игр? или это не возможно? хотя... все возможно... (был бы крутой вещщ))

    • Плюс 1
  11. Имеет смысл не меняя этот код (на видео)  попробовать его на той же игре, что на видео. Обязательно! Первым делом! Только тот код и только та игра. Проверь внимательно совпадает ли он с тем что на видео.

     

    Если не успешно, то искать причину логируя в файл ключевые моменты, а именно, проверка на null текстуру, прохождение тех или иных условий. Все пусть логируется. Если логи слишком частые, то хотя бы первые пару тысяч строк лога. Если успешно, то пробовать на разных играх. Если опять не успешно, то обязательно разобраться с тем что и какая строчка кода делает (вообще желательно в любом случае разобраться), какой результат должна возвратить, сравнить логи. 

     

    Попробуй использовать визуальный отладчик этой dll в чужом процессе игры. Мне что-то помниться, что реально прямо из студии. Поставишь бряк, да и посмотришь состояние переменных и регистров. Если не знаешь как, то придется вести логи в файл или в текст в gui.

    Спасибо за советы, логгировал все что возможно, все нормально, проверка на NULL проходить, то есть все инициализируеться.

     

    Не ожиданно ответил сам создатель SharpDX (Alexandre Mutel), не ожидал потому что, вопрос задавал через гугл переводчик :-D думал не поймет. вот ответ:

    "You need to compare the item.NativePointer. COM Objects are not cached"

     

    Что значить "COM Objects are not cached"? ну... перевод понял но, смысл не понял. Я COM Objects не зняю

  12. Я так понял проблема перевода с С++ на С#

     

    Список из List<BaseTexture> BASETEX перед началом цикла каждый раз инициируется и уже абсолютно пустой. Судя по коду цикл ищет текстуру и естественно не может найти. Поэтому found всегда будет false.

     

    Привет MasterGH, я немного не так показал код, извиняюсь, все пременные глобалны и они заного не инициализируеться, то есть вот так:

    BaseTexture BTEX;BTEX = device.GetTexture(0);List<BaseTexture> BASETEX = new List<BaseTexture>();int DrawIndexedPrimitiveHook(IntPtr devicePtr, SharpDX.Direct3D9.PrimitiveType primitiveType, ...){    found = false;    foreach (BaseTexture item in BASETEX)    {          if (item == BTEX)          {                found = true;          }    }    if (found == false)    {         BASETEX.Add(BTEX);    }}

    вот наглядное видео:

     

     

    На C# у шаблонного класса List<T> есть функция проверки вхождения bool List<T>.Contains<T>(), которая возвратит результат. Вот так бы это выглядело на движке Unity3D

    List<Texture2D> listTexture2d = new List<Texture2D>();void TryAddTexture(Texture2D texture2D){  if(!listTexture2d.Contains(someTexture)){   listTexture2d.Add();  }   }void Start(){ // Запускается один раз  var someTexture1 = new Texture2D(10,10);  var someTexture2 = new Texture2D(10,10);  TryAddTexture(someTexture1);  TryAddTexture(someTexture2);}

    Эту сейчас проверю, но сомневаюсь что поможет... %)  по тому что, на ровном месте не сравниваеть!

  13. Привет Кенг

    BaseTexture BTEX;BTEX = device.GetTexture(0);List<BaseTexture> BASETEX = new List<BaseTexture>(); found = false;foreach (BaseTexture item in BASETEX){      if (item == BTEX)      {            found = true;       }}if (found == false){      BASETEX.Add(BTEX);}

    почему вот тут, это не проходить? то есть, оператор if никогда не получает "TRUE". (Я уже ВЕСь мозг сломал за два дня)

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.