-
Постов
207 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные Laziz
-
-
Хорошо , что ты ответил , я тут с такой шнягой столкнулся
Ну наверно так
protected List<MEMORY_BASIC_INFORMATION> MemoryRegion { get; set; }
- 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
-
Расскажи в чем ошибка была, интересно же
Не жди, не расскажет, если он нашел то уже рассказал бы.
-
3. Если игра написана на .net, то используя .net функции можно найти объекты, типы, функции и поля и менять их удобным образом, а не работать с функциями ОС-мы.
У меня один раз было интересная случие. Я внедрил дллку написанное .NET в игру (не подозревая что игра тоже написана на .NET) и отлаживал с помощю VS "присоединиться к процессу" и на удевления мог видет все методы, классы и поля игры.
- 1
-
Пример инъекции .NET library(dll) в чужой процесс.
ну... .NET не совсем без надежень в взломе игр.
Вот пример инеъкции в "CSGO", плюс, нахождения структуры игроков, количество игроков в игре на примере видео урока
В бинарном архиве есть ехе файл(InjectorDotNetDLL.exe) и длл файл(ExperementDll.dll). Если у Вас есть эта игра можете поэксперементировать.
В проекте тоже самое в виде проекта
Инжектору есть одна требование, длл файл должен находеться там где ехе файл, иначе не инжектирует.
на рисунке инжектированный длл выводить консолный окно для показа всяких сообшений.
- 1
-
Еще, по правилам этикета не плохо бы определить к классу IDisposable. https://msdn.microsoft.com/en-us/library/system.idisposable.aspx
-
-
if (mem_basic_info.Type == MEM_IMAGE) {}
а что за переменный "MEM_IMAGE"?
Медленный - имелся введу в широком смысле. Я конечно знаю разницу между двумя способами. Кенг показал один способ поиска и тоже корректный, но для узкого круга поиска.
-
Виртуальное адресное пространство процесса или как найти свою сигнатуру.
...
Прогресс на лицо. Норм.
-
Да нашел!!!!
УРА действительно в конце пробел был.
По модулям поиск не находит!
Но поиск очень медленный
В любом случаи спасибо, это хоть какое то решение.
Но почему тогда в поиске по модулям в буфере оказывается не то!
Зачем его тогда вообще использовать, если в нем нет нужных значений!
На все эти вопросы ответ придет со временем, если усердно потрудитесь, и тогда скажете БИНГО! А пока скажу так.
Модуль - по сути, те ж файлы на диске, а современнный игры, да и старые использует еще дополнительный памят. Поиск по модулям там не ищет. Как то так.
Но почему тогда в поиске по модулям в буфере оказывается не то!
не знаю, или вы так думаете или вам кажется так. во всяком случае там ничего не оказываеться.
поиск медленный - потому что не С++.
-
Если все еще актуально. Есть обертки к директХ, "SharpDX" и "SlimDX"
вот пример написание сообшений в окне игры с помощю ДиректХ
При желани можно пределать на есп. Если нужно дам проект
Если имеете введу эту http://forum.gamehacklab.ru/topic/2807-hook-directx9-na-c/?p=19250 то, туда по моему нивсем есть доступ.Был какой-то специальный проект, кто-то его делал. Но я не помню названия. Там в простой форме можно было хукать и рисовать в чужом окне на разных версия DirectX. Поищи на форуме или в Гугле.
Если не найдешь, то оборачиваешь DirectX- и WinAPI-функции в C# - функции и работаешь с ними. Как это сделать можно найти в Гугле.
NullAlex: плюсик- 2
-
3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D227574662D38223F3E0A3C646174613E3C696E76656E746F72793E
Ругается благим матом, говорит непонятный символ
В конце пробел стоит наверно, у меня не ругается.
-
Плюсанул)
Программу потестил быстро с поиском по сигнатуре - отлично находит.
P.S. #1
Писал на C#?
P.S. #2
Добавил в твое сообщение результат сканирования с VirusTotal - вдруг кому интересно будет.
Да, на C# писал. ценю +ы
- 1
-
попробуйте этим поискать, потом скажете. находит ли вообше.
http://forum.gamehacklab.ru/topic/3567-videourok-kenga-poisk-signatury-signaturu/?p=26679
- 1
-
попробуйте этим поискать вашу сигнатуру, там два варианта, потом скажите, в каком варианте находит
сигантура пишется как на рисунке.
- 2
-
Вы хотите сказат что на ЧитЭнжине находит последвательност байтов(сигнатуру), код каторый на С# не находит так?.
Просто суть вопроса не могу понять.
П.С. Вы
- 1
-
да... drs36 антигерой
-
-
Вернул предыдущий движок форума. Он роднее )))
Это точно!!! Я рад)
- 1
-
Не по тему:
Coder сможешь точно таким же образам подгрузить ехе файл в другой процесс, скажем, СЕ грузился в чужой процесс да бы скрыт от некоторых защищённых игр? или это не возможно? хотя... все возможно... (был бы крутой вещщ))
- 1
-
Ну почти сделал, осталось некоторые нюансы. Спасибо всем!
- 1
-
Имеет смысл не меняя этот код (на видео) попробовать его на той же игре, что на видео. Обязательно! Первым делом! Только тот код и только та игра. Проверь внимательно совпадает ли он с тем что на видео.
Если не успешно, то искать причину логируя в файл ключевые моменты, а именно, проверка на null текстуру, прохождение тех или иных условий. Все пусть логируется. Если логи слишком частые, то хотя бы первые пару тысяч строк лога. Если успешно, то пробовать на разных играх. Если опять не успешно, то обязательно разобраться с тем что и какая строчка кода делает (вообще желательно в любом случае разобраться), какой результат должна возвратить, сравнить логи.
Попробуй использовать визуальный отладчик этой dll в чужом процессе игры. Мне что-то помниться, что реально прямо из студии. Поставишь бряк, да и посмотришь состояние переменных и регистров. Если не знаешь как, то придется вести логи в файл или в текст в gui.
Спасибо за советы, логгировал все что возможно, все нормально, проверка на NULL проходить, то есть все инициализируеться.
Не ожиданно ответил сам создатель SharpDX (Alexandre Mutel), не ожидал потому что, вопрос задавал через гугл переводчик думал не поймет. вот ответ:
"You need to compare the item.NativePointer. COM Objects are not cached"
Что значить "COM Objects are not cached"? ну... перевод понял но, смысл не понял. Я COM Objects не зняю
-
Я так понял проблема перевода с С++ на С#
Список из 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);}
Эту сейчас проверю, но сомневаюсь что поможет... по тому что, на ровном месте не сравниваеть!
-
Привет Кенг
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". (Я уже ВЕСь мозг сломал за два дня)
Оцените мою D3D9 Menu. Все сюда.
in Общение
Опубликовано
5+ дерзай. C#?