SiriusED Опубликовано 11 августа, 2014 Поделиться Опубликовано 11 августа, 2014 Во общем надыбал d3d хук, по статье он должен быть рабочий(выводить текст) на 100%, но у меня ошибка:"error C2373: 'DirectFunctions::temporaly_EndScene' : redefinition; different type modifiers"Посмотрите код, в чом может быть проблема, а то вроде все нормально и только одна вот эта ошибка все портит. В плюсах опыта просто ноль что б самому разобратся, подозреваю это из-за какой нить настройки которых я не знаю вообще...http://webfile.ru/09...20cf44a94339272 Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 августа, 2014 Поделиться Опубликовано 12 августа, 2014 /*---------------------------------------------------------------------------*/Привет! DXHook.h:class DirectFunctions{public: HRESULT WINAPI temporaly_EndScene(LPDIRECT3DDEVICE9 pDevice);};/*---------------------------------------------------------------------------*/ Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 12 августа, 2014 Автор Поделиться Опубликовано 12 августа, 2014 Сейчас попробую. Но я так вроде уже писал и все равно была ошибка. Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 12 августа, 2014 Автор Поделиться Опубликовано 12 августа, 2014 Да, если записать так тогда вылазит две ошибки:Error 1 error C2440: 'type cast' : cannot convert from 'HRESULT (__stdcall DirectFunctions::* )(LPDIRECT3DDEVICE9)' to 'PBYTE' ....\RenderD3DText\DllMain.cpp 13 1 RenderD3DTextError 2 error C2660: 'DetourFunction' : function does not take 1 arguments ....\RenderD3DText\DllMain.cpp 13 1 RenderD3DText Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 13 августа, 2014 Поделиться Опубликовано 13 августа, 2014 Тебе всё сказано, что не может он функцию к массиву байт привести.Объяви функцию как статичную, рано тебе еще об ООП думать.И в коде сделать так reinterpret_cast<PBYTE>(&DirectFunctions::temporaly_EndScene). Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 13 августа, 2014 Автор Поделиться Опубликовано 13 августа, 2014 А вы вот мне пишете как надо сделать это у вас все нормально работает мой проэкт с вашими изменениями?А то я вот записал и так и так и опять ошибки...Error 3 error LNK1281: Unable to generate SAFESEH image. ...\RenderD3DText\Release\RenderD3DText.dll RenderD3DTextError 1 error LNK2026: module unsafe for SAFESEH image. ...\RenderD3DText\RenderD3DText\detours.lib(detours.obj) RenderD3DTextError 2 error LNK2026: module unsafe for SAFESEH image. ...\RenderD3DText\RenderD3DText\detours.lib(disasm.obj) RenderD3DText Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 13 августа, 2014 Поделиться Опубликовано 13 августа, 2014 А вы вот мне пишете как надо сделать это у вас все нормально работает мой проэкт с вашими изменениями?А то я вот записал и так и так и опять ошибки...Error 3 error LNK1281: Unable to generate SAFESEH image. ...\RenderD3DText\Release\RenderD3DText.dll RenderD3DTextError 1 error LNK2026: module unsafe for SAFESEH image. ...\RenderD3DText\RenderD3DText\detours.lib(detours.obj) RenderD3DTextError 2 error LNK2026: module unsafe for SAFESEH image. ...\RenderD3DText\RenderD3DText\detours.lib(disasm.obj) RenderD3DTextНу выруби ты SAFESEH в настройках компилятора, ё-маё! Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 13 августа, 2014 Автор Поделиться Опубликовано 13 августа, 2014 Да да, все нагуглил и сделал, во общем dll'ка скомпилировалась но тольку просто ноль, после инжекта ничего нету.. Креша нету это норм, но и текста нету тоже.. Хотя на видео из которого я этот код и взял все норм работало... Попробую покопаться в коде, надо хоть посмотреть перехватывает ли во обще endSceen.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Laziz Опубликовано 14 августа, 2014 Поделиться Опубликовано 14 августа, 2014 Вот такой вот подход подойдет?https://yadi.sk/d/6slQHKnlZbccgесли че... C#в проекте, в Preferences добавляешьDXC.dllEasyHook.dllSharpDX.D3DCompiler.dllSharpDX.Direct3D10.dllSharpDX.Direct3D11.dllSharpDX.Direct3D11.Effects.dllSharpDX.Direct3D9.dllSharpDX.dllSharpDX.DXGI.dllостальные кидаеш в папку с exe.CaptureProcess _captureProcess; int processId = 0; Process _process; private void button1_Click(object sender, EventArgs e) { if (_captureProcess == null) { button1.Enabled = false; AttachProcess(); } else { HookManager.RemoveHookedProcess(_captureProcess.Process.Id); _captureProcess.CaptureInterface.Disconnect(); _captureProcess = null; } if (_captureProcess != null) { button1.Text = "Detach"; button1.Enabled = true; } else { button1.Text = "Atach"; button1.Enabled = true; } } private void AttachProcess() { string exeName = textBox2.Text; // Имя процесса Process[] processes = Process.GetProcessesByName(exeName); foreach (Process process in processes) { // Simply attach to the first one found. // If the process doesn't have a mainwindowhandle yet, skip it (we need to be able to get the hwnd to set foreground etc) if (process.MainWindowHandle == IntPtr.Zero) { continue; } // Skip if the process is already hooked (and we want to hook multiple applications) if (HookManager.IsHooked(process.Id)) { continue; } Direct3DVersion direct3DVersion = Direct3DVersion.Direct3D10; direct3DVersion = Direct3DVersion.AutoDetect; CaptureConfig cc = new CaptureConfig() { Direct3DVersion = direct3DVersion, ShowOverlay = true }; processId = process.Id; _process = process; var captureInterface = new CaptureInterface(); try { _captureProcess = new CaptureProcess(process, cc, captureInterface); } catch (Exception ex) { MessageBox.Show(ex.Message); } break; } System.Threading.Thread.Sleep(10); if (_captureProcess == null) { MessageBox.Show("В списке процессов не найдень: '" + exeName + "'"); } } private void button2_Click(object sender, EventArgs e) { _captureProcess.CaptureInterface.DisplayInGameText("Текст который надо показат в чужом окне", 20, 20, 20); // цыферки положения размер }Код целиком не мой, взял с интернета, (http://spazzarama.co...ct3d-api-hooks/ (имя автора не нашел)) Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 14 августа, 2014 Автор Поделиться Опубликовано 14 августа, 2014 Пробовал на играх:Lineage2 C6 - работаетB&S (RU) - зависает после аттачаNeed for speed shift - работаетNeed for Speed Rivals - зависает после аттачаCS 1.6(D3DMode) - не происходит ничего после аттача. Ссылка на комментарий Поделиться на другие сайты Поделиться
Laziz Опубликовано 14 августа, 2014 Поделиться Опубликовано 14 августа, 2014 Пробовал на играх:Lineage2 C6 - работаетB&S (RU) - зависает после аттачаNeed for speed shift - работаетNeed for Speed™ Rivals - зависает после аттачаCS 1.6(D3DMode) - не происходит ничего после аттача.забыл сказать, "Корректно работает в играх, где DirectX9 версия" 10 и 11 версия пока не корректно, возможно вообще не будет работать.Может из за этого? Версии директ икса проверь. Ссылка на комментарий Поделиться на другие сайты Поделиться
SiriusED Опубликовано 14 августа, 2014 Автор Поделиться Опубликовано 14 августа, 2014 Ну B&S'ка и CS 1.6 на d3dx9.dll работают вроде бы... Ну а по остальным возможно и да, особенно NFS Rivas точно не на d3dx9... Ну а так то по тебе я нашел короче какойт-то код, который ищет d3dDevice не по таблице а по сигнатуре, и вот он как раз нормально во всех играх работает(кроме NFS Rivas). Сейчас буду его ковырять что б оставить только кусок кода который выводит текст, а то там что-то типа менюшки при чом даже функциональная. И кстати код на C++.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения