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

SiriusED

Пользователи
  • Постов

    65
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Весь контент SiriusED

  1. Все таки проблема во общем не в передаче данных, через StringBuilder все нормально передается, но проблема получается черт знает в чем даже, во общем вот код: extern "C" __declspec(dllexport) void SetOptions(char* string);#pragma data_seg("sms")char* viewString = "Test1";#pragma data_seg()#pragma comment(linker, "/section:sms,RWS")extern "C" __declspec(dllexport)void SetOptions(char* string = "Test1"){ MessageBox(NULL, string, "FromDll", 0); // Выводит правильно viewString = string; MessageBox(NULL, viewString, "FromDll", 0); // Выводит правильно тоже...}// А вот проблема скорее всего вот тут:HRESULT WINAPI hookedEndScene(LPDIRECT3DDEVICE9 pDevice){ RECT pRect = RECT{ 50, 50, 150, 150 }; // Вот скорее всего вот в этих строках создания и вывода текста. D3DXCreateFont(pDevice, 16, 0, FW_NORMAL, 0, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, DEFAULT_PALETTE | FF_DONTCARE, "Arial", &font); font->DrawText(NULL, viewString, -1, &pRect, 0, D3DCOLOR_ARGB(255, 230, 230, 230));}Во общем гляньте в чом может быть косяк?
  2. Во общем почитал, написал код и работает все просто замечательно. но как всегда есть проблема... Короче как из c# передать char* в dll'ку? пробовал передавать: string, StringBuilder, IntPtr ничего не работает, на одних зависает игра, на других кракозябры вместо текста... Подскажите как нужно писать в коде(c#) что б передать строку(char*) в dll'ку.
  3. Имеешь введу там реализовано тоже через "shared memory section"? Ну а так то я понимаю что возможно там и будет работать но я как бы учусь, и интересно реализовать самому, при том что уже как бы есть рабочая dll'ка с хуком... Во общем понятно, буду копать инфу об "shared memory section", если что еще спрошу по этой теме.
  4. Ну меня в чем задумка то... Хочу сделать dll'ку которая будет просто выводить заданный текст по заданным координатам в окне игры. И что б эту dll'ку можно было инжектить в процесс игры, изменять значение выводимого текста, координат, размера шрифта итд,.. Например: Пишу приложение на C#, инжектю мою dll'ку в процесс игры, запускаю свое приложение написанное на C#, ввожу в поле нужный мне текст "OneTwoThre", dll'ка принимает этот текст и в окне игры выводит его, меняю текст на другой, жму применить, и dll'ка выводит уже другой текст... Вот какой мне метод под такую идею подойдет лучше всего? Думаю тут только "shared memory section" и прокатит...
  5. Ага, вот теперь понял. Ну как с этой секцией работать думаю найду примеры в инете что б вас уже не доставать, если что не пойму то еще спрошу. И так для справки, это единственный способ взаимодействия в заинжекченной дллкой?
  6. Так, правильно ли я понял, есть игра, я инжектю в нее длл которая создает "shared memory section" и потом я из своего совсем левого приложения программно могу что-то записать в эту секцию и моя заинжекченная дллка это сможет прочесть и заюзать да?
  7. Во общем есть dll'ка, она инжектится к D3D9 игре и через D3D хук, выводит там текст "000" по координатам. Вопрос такой: каким образом я могу изменить этот текст и координаты из своего приложения что б dll'ка не выводила один и тот же текст а на пример я мог его как то задавать непосредственно из своего приложения? Или такое сделать нельзя?
  8. Не ну я собственно так и делаю, особенно хорошо получается когда есть реально рабочий код, мне реально проще код читать, изменять и смотреть результат чем читать туториалы... Но все равно иногда что б прямо наверняка уже закрепить инфу надо спросить у профи Ну а так ищу инфу на забугровых ресурсах нашел несколько форумов а один так во обще чисто по директу и хукам по нему... так что по техоньку вьезжаю в тему... Просто не понимая ничерта очень сложно так вот сразу разобратся в терминах итд, А обычно все видосы и мануалы делаются что б показать как умело и легко их авторы умеют делать ту или иную вещь, но еденицы из них перед написанием кода объясняют логику работы и даже рисуют картины(пример: Keng) что б не знающий человек понял не как писать код а каким образом это все работает, вот этим людям огроменное спасибо, просто от души. Ну и по теме еще, во общем на данный момент написал dll на C++ которая инжектится в D3D9 приложение и выводит там заданный текст по координатам. И такой вопрос, а как мне эти значения изменить, на пример что б значение выводимой строки не было статическим а данные брались от куда то и выводились, ну если грубо так сказать то как мне управлять этой dll'кой то? Одно что я придумал пока что это читать данные из файла или регистров, но это же не то я уверен... Инфы даже пока по этому не искал так что это стандартная тема и полно инфы в гугле извеняйте..
  9. Да, подменять d3d9.dll мне предлагали тоже на одном форуме... Ну а так в принципе понял все кроме "4. Загрузчик для программы.". И как вижу оригинального способа нету в любом случае нужно сначала узнавать версию DX, и потом уже исходя из этой информации искать адрес устройства. Ну в таком случае 5й вариант так ниче выглядит... Просто хочу сделать информен аля RivaTuner overlay что б его было видно во всех играх независимо от версии используемых ими DX. И да я тоже так думал что статик адресс был запилен именно под ту игру что он демонстрировал.
  10. Да, все верно Вы поняли. Я просто тут сейчас раздупляюсь с темой DX hook'а, И нашел вот этот вот код, но он почему-то не работает, ну вернее я знаю почему он не работает а именно потому, что тут указатель на девайс задается статически "pDevice = (PDIRECT3DDEVICE9) *(int*) 0x21BEC28; ". Черт знает как у того чувака он работал, может быть он под его игру суто его подобрал просто я хз. Ну одним словом я заменил эту часть кода на поиск адреса девайса по паттерну(ну который в ольке делается), паттерн тоже нашел в инете кстати. ну и во общем после этого все заработало. И я на конец то хоть чуток догнал каким образом это все работает, а надо было просто найти рабочий код и прочесть его а не читать всякие гамнотуториалы... Во общем на счет функции спасибос, попробую все равно этот способ. Ну и еще пару вопросов по этой теме: 1. Правильно ли я понял что существует всего лишь два способа найти адрес DX девайса, а именно через создание своего девайса в нужном процессе, ну и собственно по паттерну в d3d модуле нужного процесса или есть еще какие способы? 2. И я вот сейчас сделал поиск по паттерну для d3d9 а есть у кого для d3d10 и 11 может паттерны, очень был бы признателен за них.
  11. Собственно сабж. Вот код на пример: bool APIENTRY DllMain(HMODULE hModule, DWORD dwReason, LPVOID lpReserved) { if (dwReason == DLL_PROCESS_ATTACH) { LPDIRECT3DDEVICE9 pDevice; pDevice = (PDIRECT3DDEVICE9) *(int*) 0x21BEC28; If (pDevice is D3DDevice) // Типа вот так } }
  12. Ну B&S'ка и CS 1.6 на d3dx9.dll работают вроде бы... Ну а по остальным возможно и да, особенно NFS Rivas точно не на d3dx9... Ну а так то по тебе я нашел короче какойт-то код, который ищет d3dDevice не по таблице а по сигнатуре, и вот он как раз нормально во всех играх работает(кроме NFS Rivas). Сейчас буду его ковырять что б оставить только кусок кода который выводит текст, а то там что-то типа менюшки при чом даже функциональная. И кстати код на C++..
  13. Пробовал на играх: Lineage2 C6 - работает B&S (RU) - зависает после аттача Need for speed shift - работает Need for Speed Rivals - зависает после аттача CS 1.6(D3DMode) - не происходит ничего после аттача.
  14. Да да, все нагуглил и сделал, во общем dll'ка скомпилировалась но тольку просто ноль, после инжекта ничего нету.. Креша нету это норм, но и текста нету тоже.. Хотя на видео из которого я этот код и взял все норм работало... Попробую покопаться в коде, надо хоть посмотреть перехватывает ли во обще endSceen..
  15. А вы вот мне пишете как надо сделать это у вас все нормально работает мой проэкт с вашими изменениями? А то я вот записал и так и так и опять ошибки... Error 3 error LNK1281: Unable to generate SAFESEH image. ...\RenderD3DText\Release\RenderD3DText.dll RenderD3DText Error 1 error LNK2026: module unsafe for SAFESEH image. ...\RenderD3DText\RenderD3DText\detours.lib(detours.obj) RenderD3DText Error 2 error LNK2026: module unsafe for SAFESEH image. ...\RenderD3DText\RenderD3DText\detours.lib(disasm.obj) RenderD3DText
  16. Да, если записать так тогда вылазит две ошибки: Error 1 error C2440: 'type cast' : cannot convert from 'HRESULT (__stdcall DirectFunctions::* )(LPDIRECT3DDEVICE9)' to 'PBYTE' ....\RenderD3DText\DllMain.cpp 13 1 RenderD3DText Error 2 error C2660: 'DetourFunction' : function does not take 1 arguments ....\RenderD3DText\DllMain.cpp 13 1 RenderD3DText
  17. Сейчас попробую. Но я так вроде уже писал и все равно была ошибка.
  18. Во общем надыбал d3d хук, по статье он должен быть рабочий(выводить текст) на 100%, но у меня ошибка: "error C2373: 'DirectFunctions::temporaly_EndScene' : redefinition; different type modifiers" Посмотрите код, в чом может быть проблема, а то вроде все нормально и только одна вот эта ошибка все портит. В плюсах опыта просто ноль что б самому разобратся, подозреваю это из-за какой нить настройки которых я не знаю вообще... http://webfile.ru/09...20cf44a94339272
  19. Не ну в принципе на C++ тут даже видео есть как хукать EndScene в директиксе, но я думал есть уже готовые решения под шарп типа что б в две строчки можно было рисовать в приложения DirectX... Не ужели придется самому пилить dll на плюсах и потом использовать в шарпе.. Или тут еще почитал про EasyHook библиотеку, пока что гуглю пример, но если у кого есть ссылка на пример ее работы киньте.
  20. А есть у кого ссылка на именно пример рабочий, а то я уже просто обгуглился ни в доках ни в гугле не могу найти рабочий пример использования или хотя бы даже логики использования данной либы... По ходу должно же быть все просто регнул девайс, регнул текст и установил его параметры и потом DrawText(); но не работает...
  21. А есть где почитать примеры как с ней работать? А то по докам не нашел примеров...
  22. Подскажите, есть ли возможно уже готовая библиотека для того что б просто вывести заданный текс в окне игры по координатам относительно этого окна? Имею введу что то типа: c#: DllImport функции из библиотеки. Для примера функция будет RenderText(IntPtr pHandle, string text, int coordX, int coordY); Ну и потом простое ее использование в c#.
  23. Инглиш так и не выучил толком что б читать свободно( И знаю что это вселенская печаль для меня.. Ну на пальцах вроде догнал, надо еще догнать в коде и реверсинге и будет во обще норм. Пока разбираюсь по техоньку с адресами памятью, пространствами, читаю как это во обще все работает и дизасемблер учу, короче очень все интересно и думаю через месяц уже со мной можно будет говорить адекватным языком) Закончу разбираться с этим буду пробовать хуки и отпишусь о результате. На разе спасибос за инфу, реально форум у вас, конечно, эпичный.
  24. хмм, даже так... Очень познавательно, почитаю обязательно об этом тоже. Второе предложение - забей.
×
×
  • Создать...

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

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