zorinchel
-
Постов
9 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные zorinchel
-
-
В 14.11.2014 в 21:12, Xipho сказал:
Вот такой алгоритм, если вкратце. Читай про указанные функции, и применяй на практике.
а таким образом можно вывести не текст, а например окно другой программы?
-
Привет!
Может кто-нибудь подскажет как нормально вывести окно одной игры поверх другой, а то у меня получается совсем не то что нужно
Спойлер#include <iostream> #include <windows.h> #include <string> #include <conio.h> #include <fstream> #include <iomanip> #include <stdio.h> #include <io.h> #include <fcntl.h> #include <mmsystem.h> #include <tlhelp32.h> #pragma comment(lib, "winmm") using namespace std; DWORD WINAPI GtaSA_thread (LPVOID); DWORD APIENTRY DllMain (HMODULE hModule, DWORD ul_reason_for_call, LPVOID ipReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: CreateThread (NULL, NULL, GtaSA_thread, NULL, NULL, NULL); case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return true; } DWORD WINAPI GtaSA_thread(LPVOID) { { for (;; Sleep(1000)) { if (GetAsyncKeyState(VK_NUMPAD0) & 0x8000) { ShellExecute(NULL, "open", "c:\\GSR_1.5\\GAMES\\MK4\\MK4.exe", NULL, NULL, SW_SHOWMAXIMIZED); } } } }
вот что получилось в итоге
-
Если ты инжектишь эту длл-ку в адресное пространство игры, то на кой тебе сдались ReadProcessMemory и WriteProcessMemory?
- 1
-
Спасибо конечно за ответы, но как-бы прошло более года =) Я разобрался во всем через месяц
тогда объясни, как получать значения указателей, потом читать их как адрес, например: 0xBA1300 базовый адрес, значение в этом адресе 0xCF0000, плюс смещение 0x384 получаем адрес 0xCF0384 в нем значение 0xCA0002, в этом адресе значение 188, как до него добраться?
-
Немного бреда(но работать должно):
DWORD WINAPI GtaSA_thread (LPVOID){while(true){INT value = *(DWORD*)(*(DWORD*)(*(DWORD*)(0xBA18FC)+0x384)+0x00);if(value==188){DWORD*var = (DWORD*)(0x6CC3B2);DWORD*var2 = (DWORD*)(0x6C9103);DWORD*var3 = (DWORD*)(0x406AF3);DWORD*var4 = (DWORD*)(0x6c9690);DWORD*var5 = (DWORD*)(0x6C9F1C);DWORD*var6 = (DWORD*)(0x6C8F10);*var -= 0x2c0000;*var2 -= 0x2c0000;*var3 -= 0x2c0000;*var4 -= 0x2c0000;*var5 -= 0x2c0000;*var6 -= 0x2c0000;}Sleep(500);}return 0;}
попробовал так. компилируется, но крашится при запуске
NullAlex: Читай FAQ по тегам. И цитировать большие сообщения полностью - необязательно.
-
Насколько я понял, тебе нужно взять из базового указателя значение, прибавить к нему смещение, считать из полученного значения следующий адрес, прибавить к нему смещение, и так далее.
DWORD WINAPI GtaSA_thread (LPVOID){ DWORD* pl = (DWORD *)0xBA18FC; DWORD value = *pl; CreateConsole (); { for (;;Sleep (1000)) printf (" ID = %p", *pl); return 0; }
*p1 равно нужному адресу, а как дальше прочитать этот адрес и прибавить смещение?
-
Если ты инжектишь эту длл-ку в адресное пространство игры, то на кой тебе сдались ReadProcessMemory и WriteProcessMemory?
так тоже не получается
DWORD WINAPI GtaSA_thread (LPVOID){ DWORD Cp1 = *(DWORD*)(0xBA18FC); DWORD Cp2 = *(DWORD*)(Cp1 + 0x384); }
так тоже не получается
DWORD WINAPI GtaSA_thread (LPVOID){ DWORD Cp1 = *(DWORD*)(0xBA18FC); DWORD Cp2 = *(DWORD*)(Cp1 + 0x384); }
и так тоже
DWORD p1 = ((DWORD)0xBA18FC);DWORD p2 = *(DWORD *)(p1 + 0x384);
так мы к адресу 0xBA18FC прибавляем, а мне нужно к значению в адресе (которое тоже адрес), в общем я уже запутался
-
цепочка указателей в таблице
код такой
на консоль выводятся p4 = 00000000, то есть не то что нужно, как мне в p4 получить нужное значение и сравнить его с 188,
NullAlex: Тег спойлера не просто так придуман. Читай правила и FAQ.
#include <iostream>#include <windows.h>#include <string>#include <conio.h>#include <fstream>#include <iomanip>#include <stdio.h>#include <io.h>#include <fcntl.h>#include <mmsystem.h>#pragma comment(lib, "winmm")using namespace std; DWORD WINAPI GtaSA_thread (LPVOID); DWORD APIENTRY DllMain (HMODULE hModule, DWORD ul_reason_for_call, LPVOID ipReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: CreateThread (NULL, NULL, GtaSA_thread, NULL, NULL, NULL); case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return true;} void CreateConsole (){int hConHandle = 0;HANDLE lStdHandle = 0;FILE *fp = 0;AllocConsole ();SetConsoleTitle ("ID ");lStdHandle = GetStdHandle (STD_OUTPUT_HANDLE);hConHandle = _open_osfhandle (PtrToUlong (lStdHandle), _O_TEXT);fp = _fdopen (hConHandle, "w");*stdout = *fp;setvbuf (stdout, NULL, _IONBF, 0);}DWORD WINAPI GtaSA_thread (LPVOID){ DWORD base = 0xBA18FC; DWORD p1 = 0; DWORD p2 = 0; DWORD p3 = 0; DWORD p4 = 0; DWORD old_prot = 0; VirtualProtectEx(GtaSA_thread, (LPVOID)base, sizeof(base), PAGE_EXECUTE_READWRITE, &old_prot); ReadProcessMemory(GtaSA_thread, (LPVOID)base, &p1, sizeof(base), NULL);//прочитали, записали в p1 p2 = p1 + 0x384;// прибавили смещение ReadProcessMemory(GtaSA_thread, (LPVOID)p2, &p3, sizeof(p2), NULL);//прочитали адрес p2, записали в p3 p3 = p2 + 0x00; ReadProcessMemory(GtaSA_thread, (LPVOID)p3, &p4, sizeof(p3), NULL); if (p4 == 188) {// если равно, то DWORD*var = (DWORD*)(0x6CC3B2); DWORD*var2 = (DWORD*)(0x6C9103); DWORD*var3 = (DWORD*)(0x406AF3); DWORD*var4 = (DWORD*)(0x6c9690); DWORD*var5 = (DWORD*)(0x6C9F1C); DWORD*var6 = (DWORD*)(0x6C8F10); *var -= 0x2c0000; *var2 -= 0x2c0000; *var3 -= 0x2c0000; *var4 -= 0x2c0000; *var5 -= 0x2c0000; *var6 -= 0x2c0000; WriteProcessMemory(GtaSA_thread, (void*)var, var, sizeof(4), NULL);WriteProcessMemory(GtaSA_thread, (void*)var2, var2, sizeof(4), NULL);WriteProcessMemory(GtaSA_thread, (void*)var3, var3, sizeof(4), NULL);WriteProcessMemory(GtaSA_thread, (void*)var4, var4, sizeof(4), NULL);WriteProcessMemory(GtaSA_thread, (void*)var5, var5, sizeof(4), NULL);WriteProcessMemory(GtaSA_thread, (void*)var6, var6, sizeof(4), NULL); } CreateConsole (); { for (;;Sleep (1000)) printf (" ID = %p", p4); return 0; } }
[С++] Вывод окна одной игры поверх другой
in Высокоуровневое программирование
Опубликовано
Есть код, который выводит текст поверх приложения
вот этот участок выводит текст
выглядит это вот так
directx hook
нужно, чтобы выводился не текст, а хотя бы картинка, лучше видео, а еще лучше, окно другого приложения. Кто может что посоветовать?