Blackdots
-
Постов
21 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные Blackdots
-
-
22 hours ago, uhx said:
Так хуки обычно и делаются, если что.
Я уже кидал скриншоты где-то какой хук ставит стимовский оверлей - там то же самое. Он эти байты переносит в отдельное место и дополняет их прыжком на hooked_func+5. С таким хуком не надо делать ничего.
Смысл переносить все байты, если можно просто записать прыжок\вызов на свою функцию?
-
7 minutes ago, uhx said:
лол. ну а это не является записью, что ли:
и тогда уж проще найти девайс и поставить хук в его виртуальной таблице, не?
Я же сказал, что с EndScene это еще нормально, но такой хук сам по себе очень плохой.
Первое - их можно обойти. Второе - никто и никогда не проверяет EndScene на "целостность", потому что любая записывающая видеоролики программа способна поставить хук на эту функцию.
Я имею ввиду, что "психануть и побайтово записывать функцию" - лишнее.
Четвёртое, я об этом и говорю, что если изменить вызов игры на EndScene - проверка кода сработает, а если заменить сам EndScene (как я описал) то проверка не сработает
P.S. в смысле хук в виртуальной таблице? Она хранит только адреса
-
33 minutes ago, uhx said:
Такой способ не очень хорош. Постоянно перезаписывать функцию - очень и очень фигово. В случае с EndScene может и нормально, потому что в принципе только один поток вызывает эту функцию, но если это какая-нибудь APIшка которую могут использовать разные потоки - то тебе хана. Лучше сделать как сказал keng
Не могу себе представить, что endscene будут вызывать разные потоки
Можно найти call EndScene в самой игре и заменить её на call HookedEndScene и уже самому вызывать оригинал без перезаписей и тд, но в игре могут быть проверки девственности кода.
Кстати, побайтово в игру ничего записывать не нужно, это полный бред, достаточно записать указатель на свою функцию
-
22 hours ago, keng said:
Тогда я бы посмотрел на пример кода.
Quotepublic static int HookedEndScene(IntPtr pointer)
{
using(var device = Device.FromPointer(pointer))
{// Risuem))))
hook.UnsetJump();
int toret = device.EndScene().Code;
hook.SetJump();return toret;
}
} -
On 5/9/2017 at 0:17 AM, Laziz said:
"EasyHook". (для инъекции библиотеки написанный на C# в любую программу)
Зачем? Это тоже самое, что скачать библиотеку которая умеет выводить MessageBox, изихук - лишнее
-
On 4/23/2017 at 11:14 AM, keng said:
Я предположу, что даже у unsafe функции будет пролог, так что не совсем понятно, куда пихать начало старой EndScene после записи вместо него перехода на хук. Можно, конечно, психануть и все руками написать - выделить место, записать туда код побайтово, а затем использовать это как функцию. Проблема, в общем, в том, что нельзя сделать declspec naked в шарпе.
Ошибаешься, базоыве знания C#.
А "старый EndScene" никуда пихать не надо
Делаешь jmp на свой EndScene, рисуешь, убираешь прыжок, вызываешь старый EndScene, ставишь прыжок обратно.
-
14 hours ago, partoftheworlD said:
Это очень просто, хотя документации очень мало лишь та, что на F1 в IDA и всего 3 или 4 примера использования.
Я тоже удивлён как на такой известный отладчик || декомпилятор нету нормальной документации и уроков, но из всего функционала мне хватает только псевдокод и названия переменных && функций.
Я уже "декомпилировал" минимум 40% всей игры, но по видимому зря т.к. после обновы всё пропадёт, интересно же находить необычные баги для чита.
-
1 minute ago, partoftheworlD said:
На всякий случай сделай копию базы перед эксперементами, мало ли что.
А есть плагин который за меня сделает сигнатуры, и потом их заново найдёт? Если да, то как он называется?
-
Всем привет, ревершу игру, уже достаточно много чего интересного смог найти с помощью IDA PRO, уже дал названия многим функциям.
Проблема - после обновления игры оно 100% слетит, по понятным причинам.
Вопрос - как после обновления автоматически всё восстановить?
В голову приходит только заранее готовить сигнатуры и после обновления делать аобскан.Спасибо!
-
Если что, то все топовые читы на КСГО хукают не д3д, а отрисовки самого движка, то есть включают Source SDK в свой чит и с его помощью рисуют.
На сколько я смог понять, в source sdk есть некая оболочка на д3д, которую они хукают, но это только что лично я смог понять т.к. не интересовался и не ковырял.
В чём разница хукать endscene или present?
Cheat Engine хукает present, там есть функция д3д хука
И да, вак не палит д3д хук, по крайней мере я хукаю endscene на C# и никаких vac, untrusted и тд не ловил.
-
В общем, ничего на нашёл.
Обговорили с человеком и остановились на том, что это не винформа, а очень сильно похожая менюшка на д3д.
Так же если кликнуть на иконку на верху слева (на окне) то не появляется меню, хотя должно.
-
Just now, keng said:
Вот кроме шуток, объясни мне, пожалуйста, какой смысл в том, чтобы использовать managed-среду (C#) для таких вот извращений?
А почему бы и нет?)
Лично для меня C# читается и пишется на много проще, чем C++ да и по каким-то причинам я не хочу писать ни на чём кроме C#, но это уже личное.
Во-вторых, могу с уверенностью сказать, что перехватывать и вызывать функции игры на C# не сложнее, чем на C++
Мелкая обфускация и античиты а-ля VAC отпадают
На счёт скорости: пока-что не проверял, но по скольку .NET при запуске переводится в машинный код, не думаю, что эта разница в производительности будет существенно сказываться.
Иии.. то ощущение.
Вопрос знающим: WPF по-сути рисуется с помощью D3D, в теории должно быть возможно нарисовать WPF форму внутри д3д игры, сейчас буду делать reasearch по этому поводу, но если есть кто вкурсе как это реализовать - прошу.
-
6 minutes ago, partoftheworlD said:
Ещё скажи что хендл нулевой задавал и ждал появления окна.
Нет, я говорил, что окно появляется, но его не видно, курсор при навидении на край невидимого окна (в полноэкранной игре) меняется (т.е. resize) при попытке кликнуть или изменить размер окна которое и так не видно, игра сворачивается.
ЗЫ. Не стоит считать, что я не знаю что я делаю или говорю, 90% людей скажут, что реализовать d3d hook на чистом C# без оболочки C++ или чего-то там ещё невозможно, у меня хук на чистом C# без лишних библиотек а-ля EasyHook и без ассемблерных вставок. Я хочу узнать каким способом автор данного софта реализовал Winform внутри игры
-
23 минуты назад, keng сказал:
Я открою, возможно, страшную тайну, но "полноэкранный режим" - это окно с активной областью размером с весь экран. Почитай в MSDN про стили окон в Windows при их создании, там много интересных вещей связанных как с фокусом, так и с отрисовкой самих окон.
Кенг, я уже пытался сделать свою форму дочерней окна игры, делал форму передней (TopMost) но без результатов
З.Ы. делал я без внедрения в игру, или нужно создавать окно будучи в игровой памяти? (т.е. инжектить свою библиотеку)
Скрытый текст[DllImport("user32.dll", SetLastError = true)] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); public Form1() { InitializeComponent(); Process p = Process.GetProcessesByName("csgo")[0]; SetParent(this.Handle, p.MainWindowHandle); new Thread(DoWork) { IsBackground = true }.Start(); } private void DoWork() { while(true) { Invoke(new Action(() => { TopMost = true; })); Thread.Sleep(1); } }
// В угол по видимому не достаточно, читаем правила форума и фак, переделывать каждое сообщение на форуме у меня нет ни времени, ни желания. На первый раз устное предупреждение. Garik66
-
51 minutes ago, Garik66 said:
На видео я жму Alt Tab и, если ты жмёшь эти же клавиши, то конечно игра будет сворачиваться. Трейнер на видео не дописан, поэтому я и запускал игру в оконном режиме.
Видео снято, что бы подтвердить, что на видео, который ты привёл в пример, не d3d9 hook.
Допустим, там не д3д хук, каким тогда образом форма появляется в полноэкранном режиме? Я много раз пробовал делать overlay, но из моего опыта просто overlay не работает в полном экране, надо запускать игру в окне.
Я могу записать на телефон, что такой способ не работает
-
6 часов назад, Garik66 сказал:
Это точно не:
Только что ещё раз попробовал таким методом, окно как-бы есть, если навести на него курсор то он будет меняться, но самого окна не видно и при клике игра сворачивается
"В угол" . Garik66
-
Спасибо за ответы, на сколько я знаю, обычный d3d overlay не будет работать если игру запустить в полноэкранном режиме (не fullscreen windowed, a fullscreen) или я ошибаюсь?
Все CS:GO читы которые я видел работают так-же и в полноценном фулскрине
-
Всем привет! Недавно реализовал полноценный d3d9 hook на C#
Теперь у меня стоит следующий вопрос - каким образом можно нарисовать Windows Form в D3D9 игре?
Это не какой-то там topmost, работает даже в полноэкранном режиме.
Пример на видео с 1:20 (видео не моё)
Hook Functions c#
in Высокоуровневое программирование
Опубликовано
То, что ты описал, делается без проблем без лишних библиотек.
Да, на C#