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

DirectxHook [menu]


RockHammer

Рекомендуемые сообщения

Продолжается рубрика моих тупых вопросов)

 

Друзья, может кто знает как делать directx менюшку для чита? Чтобы можно было прям внутри игры функционал включать.

Я нашел в интернете множество уроков и просто готовых проектов, но они уроки не всегда были понятны (потому что все показывали быстро), а от готовых проектов - толку нет, когда теории = 0;

Может кто знает хотябы статейку о принципах создания directx менюшки?

 

з.ы. вопрос на засыпку: как рипнуть d3d менюшку? Т.е. у меня есть готовый чит, хорошо функционирующий и с хорошей менюшкой. Как "выдрать" оттуда менюшку? Я видел в интернете, такое возможно. Но принцип никто не описывает, будто это секретная разработка ЦРУ  :ph34r:.

Изменено пользователем RockHamer
Ссылка на комментарий
Поделиться на другие сайты

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

 

-Нажали кнопку активации меню - на экран вывелся список опций\кнопок\пофиг.

-Нажали кнопку, соответствующую какой-то опции - включили (выключили) опцию и каким-то образом отобразили это в меню - цвет поменяли, надпись, еще что-то.

-Нажали кнопку активации меню еще раз - убрали с экрана список опций\кнопок.

-Готово!

 

Надо уметь две вещи - получить доступ к рисованию в окне игры и рисовать там, собственно. Например, текст. Или геометрические фигуры. Или еще что-то.

Ссылка на комментарий
Поделиться на другие сайты

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

 

-Нажали кнопку активации меню - на экран вывелся список опций\кнопок\пофиг.

-Нажали кнопку, соответствующую какой-то опции - включили (выключили) опцию и каким-то образом отобразили это в меню - цвет поменяли, надпись, еще что-то.

-Нажали кнопку активации меню еще раз - убрали с экрана список опций\кнопок.

-Готово!

 

Надо уметь две вещи - получить доступ к рисованию в окне игры и рисовать там, собственно. Например, текст. Или геометрические фигуры. Или еще что-то.

 

На счет выдирать...

Game_2014_10_12_03_08_11_31.jpg

(sorry за такой скриншот, ничего не рекламирую и не пропагандирую)

Ты не представляешь, как это красиво выглядит... Это просто шедеврально!!!

Плюс ко всему, за верхнюю красную... (что это вообще?) за нее можно перестаскивать менюшку по экрану.

 

На счет "логики" менюшки, если я тебя правильно понял... Я понимаю, что в менюшке должно быть. Но не понимаю, как это реализовать. 

Опытные программисты как-то очень ловко вырисовывают свои менюшки... У меня задумок - выше крыши, но их реализацию я понимаю, конечно. Но не полностью.

На счет Fleep'a. Я знаю его канал, давно. Беда в том, что он рассказывает все на английском. Для меня - он был бы просто идеальным блогером! Но саму теорию (то, что необходимо знать) - я не понимаю. Она на английском.

Я пробовал переписывать его код с экрана. Переписал. Все, до единой строчки. Он тестирует в CoD 4 - я тоже скачал и тестирую в CoD 4. Он пользуются 2004 SDK -  я тоже скачал тот же сдк. 

Весь код АБСОЛЮТНО идентичен... Но... Не работает. Мой же код надо мною издевается! Сначала эта сволочь после инжекта рисовала всю менюшку черной, а все шрифты в одну строчку (каша мала) а потом вообще не появляется после инжекта!

Изменено пользователем RockHamer
Ссылка на комментарий
Поделиться на другие сайты

Так ты начни с простенького. Вот у меня в блоге описано, как выводить в окне игры текст. Чем не вариант начать с этого? И да, я вполне представляю, как это выглядит и как делается. Вариантов - куча. Только вот если не умеешь и не представляешь, как сделать - выдирать подобное из исполняемых файлов и пытаться разобраться в дизассемблированном листинге (в любом случае, в псевдокоде, а не исходниках) - еще тяжелее. Я бы сказал, что вообще бессмысленно и безрезультатно. Сядь, попей чаю, возьми бумажку и напиши словами алгоритм, что должна сделать твоя программа. По пунктам. Потом отметь те, которые не знаешь с ходу, как реализовать. Возьми новую бумажку и напиши отдельно этот пункт. Суть в том, что нужно брать большие задачи и дробить их на мелкие. В конце концов все сведется к логике и рисованию линий\точек\цифр\букв. А со временем сделаешь сколь угодно крутую реализацию своих задумок. Начать-то с чего-то все равно надо.

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Так ты начни с простенького. Вот у меня в блоге описано, как выводить в окне игры текст. Чем не вариант начать с этого? И да, я вполне представляю, как это выглядит и как делается. Вариантов - куча. Только вот если не умеешь и не представляешь, как сделать - выдирать подобное из исполняемых файлов и пытаться разобраться в дизассемблированном листинге (в любом случае, в псевдокоде, а не исходниках) - еще тяжелее. Я бы сказал, что вообще бессмысленно и безрезультатно. Сядь, попей чаю, возьми бумажку и напиши словами алгоритм, что должна сделать твоя программа. По пунктам. Потом отметь те, которые не знаешь с ходу, как реализовать. Возьми новую бумажку и напиши отдельно этот пункт. Суть в том, что нужно брать большие задачи и дробить их на мелкие. В конце концов все сведется к логике и рисованию линий\точек\цифр\букв. А со временем сделаешь сколь угодно крутую реализацию своих задумок. Начать-то с чего-то все равно надо.

Я пытался использовать твой исходник, в качестве базы, т.к. вх там уже был. Однако, там есть какое-то ограничение по вводу текста. Т.е. текст можно вводить на определенной длинне, если он будет длиннее - не отрисуется. (плюс, твой хук отображается не во всех играх. они тоже на 9ом директсе, но они крашатся при инжекте либа)

И еще... Как "закрасить" определенную часть экрана? Т.е. закрасить прямоугольник, на котором будут отрисовываться шрифты. (бэкграунд, так сказать, но который  не ограничивает ввод текста за его пределы)

Изменено пользователем RockHamer
Ссылка на комментарий
Поделиться на другие сайты

Ну, во-первых, если какой-то код глючит - его можно отладить. Исходник тоже есть, что сильно упрощает задачу. Во-вторых (цитирую):
 

void DrawIndicator(void* self){	IDirect3DDevice9* dev = (IDirect3DDevice9*)self; // Из перехваченной Present получаем указатель на текущее d3d-устройство	if (m_font == 0) // Если у нас до сих пор нету шрифта, то		D3DXCreateFont(dev, 12, 0, 0, 0, 0, 1, 0, 0, 0, "Terminal", &m_font); // Создаем его	IDirect3DDevice9_Clear(dev, 1, &rec, D3DCLEAR_TARGET, bkgColor, 1.0f, 0); // Очищаем прямоугольник размера с rec цветом bkgColor		(m_font)->lpVtbl->DrawText(m_font, 0, "menu", -1, &fontRect, 0, fontColor); // Рисуем в нем текст}

Я, возможно, разочарую, но не бывает так, что ты придумал какой-то алгоритм, реализовал его, а потом он работает до скончания веков. К программированию это относится очень и очень слабо. Собственные разработки постоянно приходится модифицировать, улучшать, подстраивать под текущие технологии, языки и системы. Можно дать гарантию, что на твоем собственном компьютере написанный, скомпилированный и отлаженный тобой исходный код будет работать, скажем, сутки. Мало ли выйдет патч к ОС. Или драйверу. Или к игре. Или еще что-нибудь. 99.5% времени приходится заниматься именно этим - исследованием, отладной, пробами и исправлением ошибок.

Ссылка на комментарий
Поделиться на другие сайты

Ну, во-первых, если какой-то код глючит - его можно отладить. Исходник тоже есть, что сильно упрощает задачу. Во-вторых (цитирую):

 

void DrawIndicator(void* self){	IDirect3DDevice9* dev = (IDirect3DDevice9*)self; // Из перехваченной Present получаем указатель на текущее d3d-устройство	if (m_font == 0) // Если у нас до сих пор нету шрифта, то		D3DXCreateFont(dev, 12, 0, 0, 0, 0, 1, 0, 0, 0, "Terminal", &m_font); // Создаем его	IDirect3DDevice9_Clear(dev, 1, &rec, D3DCLEAR_TARGET, bkgColor, 1.0f, 0); // Очищаем прямоугольник размера с rec цветом bkgColor		(m_font)->lpVtbl->DrawText(m_font, 0, "menu", -1, &fontRect, 0, fontColor); // Рисуем в нем текст}

Я, возможно, разочарую, но не бывает так, что ты придумал какой-то алгоритм, реализовал его, а потом он работает до скончания веков. К программированию это относится очень и очень слабо. Собственные разработки постоянно приходится модифицировать, улучшать, подстраивать под текущие технологии, языки и системы. Можно дать гарантию, что на твоем собственном компьютере написанный, скомпилированный и отлаженный тобой исходный код будет работать, скажем, сутки. Мало ли выйдет патч к ОС. Или драйверу. Или к игре. Или еще что-нибудь. 99.5% времени приходится заниматься именно этим - исследованием, отладной, пробами и исправлением ошибок.

 

А я так надеялся...

Ссылка на комментарий
Поделиться на другие сайты

На что?

 

Что будет какое-нибудь приложение для "тру-хацкеров2004" где будет одна единственная кнопочка "взломать пентагон" (ну или еще что, в зависимости от цели использования).

Как жаль, что такой проги нет...

 

З.ы. нашел ништячек )))))

З.ы.ы. ничего не рекламирую, просто нашел увлекательную статью (для модеров)

Ссылка на комментарий
Поделиться на другие сайты

 

И еще... Как "закрасить" определенную часть экрана? 

Когда проходил курс для школьников по C#, там было кое-что связанное с покраской. Вот посмотри работу программки (Программа не моя, а взята из курса, я чуть-чуть поменял выводимый текст).

Если это то что тебе нужно - напиши в личку дам ссылку на курс (и номер лекции где выложена данная программка).Играем с окном.rar 

Ссылка на комментарий
Поделиться на другие сайты

Увы, так не бывает. Да и "тру-хацкеры" тоже когда-то были никем и ничего не умели.

Вот я и говорю - жаль (

 

Когда проходил курс для школьников по C#, там было кое-что связанное с покраской. Вот посмотри работу программки (Программа не моя, а взята из курса, я чуть-чуть поменял выводимый текст).

Если это то что тебе нужно - напиши в личку дам ссылку на курс (и номер лекции где выложена данная программка).attachicon.gifИграем с окном.rar

Это немного не то, я имел ввиду закраску автоматическую. Для directx hook'a. 

Ссылка на комментарий
Поделиться на другие сайты

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

Создай собственное DirectX приложение, разберись как оно работает и попробуй рисовать примитивы хоть какие-то.

Потом почитай статьи по игростроению, как они создавали игровое меню, сделай меню для своего DirectX приложения.

Потом реализуй какое-то взаимодействие с меню, и только потом уже возвращайся к перехвату DirectX в стороннем приложении, а иначе это - слышишь звон, да не знаешь где он.

Ссылка на комментарий
Поделиться на другие сайты

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

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

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