Blackdots Опубликовано 26 апреля, 2017 Поделиться Опубликовано 26 апреля, 2017 Всем привет! Недавно реализовал полноценный d3d9 hook на C# Теперь у меня стоит следующий вопрос - каким образом можно нарисовать Windows Form в D3D9 игре? Это не какой-то там topmost, работает даже в полноэкранном режиме. Пример на видео с 1:20 (видео не моё) Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 Если это WinForm - то, откровенно говоря, я не представляю, как можно впихнуть управляемый код в неуправляемый. А если это обычное окно - то, в принципе, можно его сделать посредством вызовов WinAPI. Это, я думаю, вполне себе возможно. Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 Где ты тут увидел д3д хук? Обычная вин формс (причем работает как диспетчер задач - поверх окон). + не факт что ксго в полноэкранном режиме, вдруг это в окне без рамки. Лично еще не видел ни 1 д3д меню сделанной на шарпе 3 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 6 часов назад, Blackdots сказал: Пример на видео Это точно не: 6 часов назад, Blackdots сказал: d3d9 hook а 1 час назад, roma91212 сказал: Обычная вин формс Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 Вот тут вот посмотри - там много всего реализованного на нем, может и себе что не будь подберешь. Чпок! Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 (изменено) Д3д хуки бесполезны в 2017 году, ВАК их палит на раз-два. Начиная с конца 2016 большинство читов используют оверлей для отрисовки. Хочешь такую форму на д3д, то рисуй прямоугольниками с основ окна, после выпадающее меню с анимацией и т.д Изменено 27 апреля, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Blackdots Опубликовано 27 апреля, 2017 Автор Поделиться Опубликовано 27 апреля, 2017 Спасибо за ответы, на сколько я знаю, обычный d3d overlay не будет работать если игру запустить в полноэкранном режиме (не fullscreen windowed, a fullscreen) или я ошибаюсь? Все CS:GO читы которые я видел работают так-же и в полноценном фулскрине Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 Только что, Blackdots сказал: на сколько я знаю, обычный d3d overlay не будет работать если игру запустить в полноэкранном режиме (не fullscreen windowed, a fullscreen) или я ошибаюсь? будет работать d3d overlay Ссылка на комментарий Поделиться на другие сайты Поделиться
Blackdots Опубликовано 27 апреля, 2017 Автор Поделиться Опубликовано 27 апреля, 2017 6 часов назад, Garik66 сказал: Это точно не: Только что ещё раз попробовал таким методом, окно как-бы есть, если навести на него курсор то он будет меняться, но самого окна не видно и при клике игра сворачивается "В угол" . Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 42 минуты назад, Blackdots сказал: Только что ещё раз попробовал таким методом, окно как-бы есть, если навести на него курсор то он будет меняться, но самого окна не видно и при клике игра сворачивается На видео я жму Alt Tab и, если ты жмёшь эти же клавиши, то конечно игра будет сворачиваться. Трейнер на видео не дописан, поэтому я и запускал игру в оконном режиме. Видео снято, что бы подтвердить, что на видео, который ты привёл в пример, не d3d9 hook. Ссылка на комментарий Поделиться на другие сайты Поделиться
Blackdots Опубликовано 27 апреля, 2017 Автор Поделиться Опубликовано 27 апреля, 2017 (изменено) 51 minutes ago, Garik66 said: На видео я жму Alt Tab и, если ты жмёшь эти же клавиши, то конечно игра будет сворачиваться. Трейнер на видео не дописан, поэтому я и запускал игру в оконном режиме. Видео снято, что бы подтвердить, что на видео, который ты привёл в пример, не d3d9 hook. Допустим, там не д3д хук, каким тогда образом форма появляется в полноэкранном режиме? Я много раз пробовал делать overlay, но из моего опыта просто overlay не работает в полном экране, надо запускать игру в окне. Я могу записать на телефон, что такой способ не работает Изменено 27 апреля, 2017 пользователем Blackdots Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 4 minutes ago, Blackdots said: Допустим, там не д3д хук, каким тогда образом форма появляется в полноэкранном режиме? Я много раз пробовал делать overlay, но из моего опыта просто overlay не работает в полном экране, надо запускать игру в окне. Я могу записать на телефон, что такой способ не работает Я открою, возможно, страшную тайну, но "полноэкранный режим" - это окно с активной областью размером с весь экран. Почитай в MSDN про стили окон в Windows при их создании, там много интересных вещей связанных как с фокусом, так и с отрисовкой самих окон. Ссылка на комментарий Поделиться на другие сайты Поделиться
Blackdots Опубликовано 27 апреля, 2017 Автор Поделиться Опубликовано 27 апреля, 2017 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 20 минуты назад, Blackdots сказал: делал форму передней (TopMost) но без результатов Может это поможет. А конкретно, что-то типа этого: void UDF1::FormDeactivate(TObject *Sender) { Application->RestoreTopMosts(); } Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 (изменено) 53 минуты назад, Blackdots сказал: З.Ы. делал я без внедрения в игру, или нужно создавать окно будучи в игровой памяти? (т.е. инжектить свою библиотеку) Ещё скажи что хендл нулевой задавал и ждал появления окна в игре. Изменено 27 апреля, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Blackdots Опубликовано 27 апреля, 2017 Автор Поделиться Опубликовано 27 апреля, 2017 (изменено) 6 minutes ago, partoftheworlD said: Ещё скажи что хендл нулевой задавал и ждал появления окна. Нет, я говорил, что окно появляется, но его не видно, курсор при навидении на край невидимого окна (в полноэкранной игре) меняется (т.е. resize) при попытке кликнуть или изменить размер окна которое и так не видно, игра сворачивается. ЗЫ. Не стоит считать, что я не знаю что я делаю или говорю, 90% людей скажут, что реализовать d3d hook на чистом C# без оболочки C++ или чего-то там ещё невозможно, у меня хук на чистом C# без лишних библиотек а-ля EasyHook и без ассемблерных вставок. Я хочу узнать каким способом автор данного софта реализовал Winform внутри игры Изменено 27 апреля, 2017 пользователем Blackdots Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 (изменено) 54 минуты назад, Blackdots сказал: Я хочу узнать каким способом автор данного софта реализовал Winform внутри игры Никаким, разбери его программу и посмотри, что d3d там вообще не используется и как говорили до этого игра использует оконный режим, а для установки поверх игры используется: RunOnlyOneClass.ShowWindow((int)process.MainWindowHandle, 1); RunOnlyOneClass.SetForegroundWindow(process.MainWindowHandle); break; // Global type: <Module> // Entry point: CS_GO_Changer_v6.Program.Main // Architecture: AnyCPU (32-bit preferred) // This assembly contains unmanaged code. // Runtime: .NET 4.0 Изменено 27 апреля, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 (изменено) Blackdots, посмотри, c purebasic не работает в полноэкраном, не отображается окно, другие не пробовал. http://www.programmersforum.ru/showthread.php?t=69590&page=2 http://www.programmersforum.ru/showthread.php?t=4473 http://www.vbnet.ru/forum/show.aspx?id=146075 https://sim0n.wordpress.com/2009/03/29/c-creating-a-window-from-a-dll/ http://www.purebasic.info/phpBB3ex/viewtopic.php?f=7&t=4437&hilit=помогите+вставить+игру http://www.purebasic.info/phpBB3ex/viewtopic.php?f=5&t=4442&hilit=помогите+вставить+игру p.s как сообщил , то лучше подойдет, почитать с purebasic. Изменено 27 апреля, 2017 пользователем 2zolo2 Добавление Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 1 час назад, Blackdots сказал: Я хочу узнать каким способом автор данного софта реализовал Winform внутри игры Blackdots, кстати очень большая просьба, если всё-таки найдёшь решение как расположить форму над окном игры в полноэкранном режиме без Хука (если это конечно возможно), то выложи его в топике. Думаю это интересует многих на форуме. Поэтому просьба не уподобляться некоторым пользователям, которые пишут: "Нашёл решение." И всё - тема повисла. Ссылка на комментарий Поделиться на другие сайты Поделиться
roma912 Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 2 часа назад, Blackdots сказал: Нет, я говорил, что окно появляется, но его не видно, курсор при навидении на край невидимого окна (в полноэкранной игре) меняется (т.е. resize) при попытке кликнуть или изменить размер окна которое и так не видно, игра сворачивается. ЗЫ. Не стоит считать, что я не знаю что я делаю или говорю, 90% людей скажут, что реализовать d3d hook на чистом C# без оболочки C++ или чего-то там ещё невозможно, у меня хук на чистом C# без лишних библиотек а-ля EasyHook и без ассемблерных вставок. Я хочу узнать каким способом автор данного софта реализовал Winform внутри игры Блин, ну тогда выложи хоть обычный перехват функции. Именно на чистом шарпе без всякой дряни. Сделай тестовое приложение, а другим перехвати функцию, Думаю ваем интересно посмотреть как это можно реализовать. Повторюсь, ни разу не видел перехват, ни д3д, ни обычной функции Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 Just now, roma91212 said: Блин, ну тогда выложи хоть обычный перехват функции. Именно на чистом шарпе без всякой дряни. Сделай тестовое приложение, а другим перехвати функцию, Думаю ваем интересно посмотреть как это можно реализовать. Повторюсь, ни разу не видел перехват, ни д3д, ни обычной функции Вот кроме шуток, объясни мне, пожалуйста, какой смысл в том, чтобы использовать managed-среду (C#) для таких вот извращений? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Blackdots Опубликовано 27 апреля, 2017 Автор Поделиться Опубликовано 27 апреля, 2017 Just now, keng said: Вот кроме шуток, объясни мне, пожалуйста, какой смысл в том, чтобы использовать managed-среду (C#) для таких вот извращений? А почему бы и нет?) Лично для меня C# читается и пишется на много проще, чем C++ да и по каким-то причинам я не хочу писать ни на чём кроме C#, но это уже личное. Во-вторых, могу с уверенностью сказать, что перехватывать и вызывать функции игры на C# не сложнее, чем на C++ Мелкая обфускация и античиты а-ля VAC отпадают На счёт скорости: пока-что не проверял, но по скольку .NET при запуске переводится в машинный код, не думаю, что эта разница в производительности будет существенно сказываться. Иии.. то ощущение. Вопрос знающим: WPF по-сути рисуется с помощью D3D, в теории должно быть возможно нарисовать WPF форму внутри д3д игры, сейчас буду делать reasearch по этому поводу, но если есть кто вкурсе как это реализовать - прошу. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 (изменено) 29 минуты назад, roma91212 сказал: Думаю ваем интересно посмотреть как это можно реализовать. Повторюсь, ни разу не видел перехват, ни д3д, ни обычной функции Ну посмотри. на C# по аналогии, только вместо ассемблерных вставок, там используются массивы байт вроде как. Как по мне на C++проще хук делать или всякие внутриигровые функции вызывать с объяевленим прототипа, да и интерфейс можно прикрутить например с помощью CLI(если ручками лень прописывать интерфейс) Изменено 27 апреля, 2017 пользователем partoftheworlD 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
rtm Опубликовано 27 апреля, 2017 Поделиться Опубликовано 27 апреля, 2017 Тыц, но мб и не оно Ссылка на комментарий Поделиться на другие сайты Поделиться
Blackdots Опубликовано 8 мая, 2017 Автор Поделиться Опубликовано 8 мая, 2017 (изменено) В общем, ничего на нашёл. Обговорили с человеком и остановились на том, что это не винформа, а очень сильно похожая менюшка на д3д. Так же если кликнуть на иконку на верху слева (на окне) то не появляется меню, хотя должно. Изменено 8 мая, 2017 пользователем Blackdots Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения