demontronpc Опубликовано 18 июля, 2019 Поделиться Опубликовано 18 июля, 2019 Кто нибудь помогите разобраться с этим пожалуйста . Написал код winapi messagebox Спойлер // Создаем окно при помощи шаблона // Visual Studio C++ WinApi // Подключаем библиотеки Windows для Win32 #include <windows.h> // Объявляем прототип CALLBACK функции LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); // Функция WinAPI для точки входа в программу int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { // Регистрация класса окна // Объявляем переменную типа WNDCLASSEX WNDCLASSEX wClass; ZeroMemory(&wClass, sizeof(WNDCLASSEX)); // Обнуляем память // Заполняем структуру WNDCLASSEX wClass.cbSize = sizeof(WNDCLASSEX); // Размер равен размеру структуры wClass.hbrBackground = (HBRUSH)COLOR_WINDOW; // Определяем фон окна wClass.hInstance = hInstance; // hInstance window wClass.lpfnWndProc = (WNDPROC)WndProc; // Процедура обработки окна wClass.lpszClassName = "My Window Class"; // Имя класса // Если произошла ошибка, то выводим сообщение if (!RegisterClassEx(&wClass)) { int nResult = GetLastError(); MessageBox(NULL, "Класс окна не был создан!", "Ошибка", MB_ICONERROR); } // Создаем окно при помощи функции WinApi CreateWindowEx HWND hWindow = CreateWindowEx(NULL, "My Window Class", // Имя класса, который мы определили ранее "Мое первое окно с WinApi", // Заголовок окна WS_OVERLAPPEDWINDOW, 300, // x координата по горизонтали 200, // y координата по вертикали 640, // ширина создаваемого окна 480, // высота создаваемого окна NULL, NULL, hInstance, // переменная экземпляра приложения NULL); // Если окно не было создано, то выдаем сообщение if (!hWindow) { int nResult = GetLastError(); MessageBox(NULL, "Окно не было создано!", "Ошибка", MB_ICONERROR); } // Показываем окно ShowWindow(hWindow, nShowCmd); // Объявляем переменную для сообщений типа MSG MSG msg; // Обнуляем память по размеру структуры MSG ZeroMemory(&msg, sizeof(MSG)); // Цикл обработки сообщений while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } // определяем процедуру обратного вызова (WinApi) LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CREATE: { HWND hButton = CreateWindow( "BUTTON", "MessageBox!", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 0, 150, 30, hwnd, reinterpret_cast<HMENU>(1337), nullptr, nullptr ); HWND lButton = CreateWindow( "BUTTON", "MessageBoxA!", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 480, 0, 150, 30, hwnd, reinterpret_cast<HMENU>(1336), nullptr, nullptr ); HWND pButton = CreateWindow( "BUTTON", "MessageBoxW!", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 350, 150, 30, hwnd, reinterpret_cast<HMENU>(1335), nullptr, nullptr ); HWND RRButton = CreateWindow( "BUTTON", "MessageBeep!", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 480, 350, 150, 30, hwnd, reinterpret_cast<HMENU>(1334), nullptr, nullptr ); // Здесь будем создавать элементы управления окна break; } case WM_COMMAND: { switch (LOWORD(wParam)) { case 1337: { MessageBox(hwnd, "MessageBox", "ne",MB_OK); } break; case 1336: { MessageBoxA(hwnd, "MessageBoxA", "ne", MB_OK); } break; case 1335: { MessageBoxW(hwnd, L"MessageBoxW", L"ne", MB_OK); } break; case 1334: { MessageBeep(MB_OK ); } break; // Обработка команд (нажатие кнопок, мыши, полей ввода и т.д.) } break; } case WM_DESTROY: // Обработка нажатия кнопки закрытия окна { // команда Закрыть окно PostQuitMessage(0); return 0; break; } } return DefWindowProc(hwnd, uMsg, wParam, lParam); } Сделал библиотеку с их сайта Спойлер #include <Windows.h> #include "MinHook.h" #if defined _M_X64 #pragma comment(lib, "libMinHook.x64.lib") #elif defined _M_IX86 #pragma comment(lib, "libMinHook.x86.lib") #endif typedef int (WINAPI *MESSAGEBOXW)(HWND, LPCWSTR, LPCWSTR, UINT); // Pointer for calling original MessageBoxW. MESSAGEBOXW fpMessageBoxW = NULL; // Detour function which overrides MessageBoxW. int WINAPI DetourMessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType) { return fpMessageBoxW(hWnd, L"Hooked!", lpCaption, uType); } int main() { // Initialize MinHook. if (MH_Initialize() != MH_OK) { return 1; } // Create a hook for MessageBoxW, in disabled state. if (MH_CreateHook(&MessageBoxW, &DetourMessageBoxW, reinterpret_cast<LPVOID*>(&fpMessageBoxW)) != MH_OK) { return 1; } // or you can use the new helper function like this. //if (MH_CreateHookApiEx( // L"user32", "MessageBoxW", &DetourMessageBoxW, &fpMessageBoxW) != MH_OK) //{ // return 1; //} // Enable the hook for MessageBoxW. if (MH_EnableHook(&MessageBoxW) != MH_OK) { return 1; } // Expected to tell "Hooked!". MessageBoxW(NULL, L"Not hooked...", L"MinHook Sample", MB_OK); // Disable the hook for MessageBoxW. if (MH_DisableHook(&MessageBoxW) != MH_OK) { return 1; } // Expected to tell "Not hooked...". MessageBoxW(NULL, L"Not hooked...", L"MinHook Sample", MB_OK); // Uninitialize MinHook. if (MH_Uninitialize() != MH_OK) { return 1; } return 0; } Заинжектил с помощью extremeinject (cheat engine не инжектил писал ошибку.) Но ничего не происходит пытался менять код этой длл от minihook ничего не понимаю . Кто может обьяснить что надо сделать , что бы поменять мессадж бокс хоть один ? Примеров в интернете вообще нет нормальных . Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 18 июля, 2019 Поделиться Опубликовано 18 июля, 2019 3 часа назад, demontronpc сказал: Заинжектил с помощью extremeinject (cheat engine не инжектил писал ошибку.) И не заинжектит. Потому что в коде под "Сделал библиотеку с их сайта" у тебя, по сути, обычный экзешник, а не dll. В DLL точка входа DllMain, например. Устал уже объяснять, что без знания основ нефиг лезть в более сложные вещи. Ссылка на комментарий Поделиться на другие сайты Поделиться
demontronpc Опубликовано 18 июля, 2019 Автор Поделиться Опубликовано 18 июля, 2019 Xipho посоветуй с чего начать изучать это буду признателен . Видео или еще чего . Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 19 июля, 2019 Поделиться Опубликовано 19 июля, 2019 Начни с основ языка Ссылка на комментарий Поделиться на другие сайты Поделиться
demontronpc Опубликовано 22 июля, 2019 Автор Поделиться Опубликовано 22 июля, 2019 В 19.07.2019 в 08:47, Xipho сказал: Начни с основ языка Спойлер #include <windows.h> #include <process.h> void DLLProject(PVOID) { while (true) { Sleep(1); if (GetAsyncKeyState(VK_END)) { while (GetAsyncKeyState(VK_END)) { Sleep(1); } MessageBoxA(GetForegroundWindow(), "Hello World!", "DarkP1xel", NULL); } } } BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpReserved) { if (fdwReason == DLL_PROCESS_ATTACH) { _beginthread(DLLProject, NULL, NULL); } return TRUE; } вот тут все нормально с другим инжектором но в чит енгине все равно длл не енжектит и пишет ошибку вот dllinject failed failed ingecting the dll force load module failed failed finding address of vcruntime140!_vcrt_GetModuleNameW Можешь сказать , что он хочет что бы зинжектить ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 23 июля, 2019 Поделиться Опубликовано 23 июля, 2019 Так он же тебе все написал. 11 часов назад, demontronpc сказал: failed finding address of vcruntime140!_vcrt_GetModuleNameW Вот же. Он не смог найти адрес в рантайм библиотеке. Либо сам рантайм у тебя не установлен, либо, возможно, неправильную разрядность используешь (типа, пытаешься внедрить х64 библиотеку в х86 код). Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения