Я установил инъекцию dll для перехвата swapbuffers в gdi32.dll.
Инжекция работает отлично и запускает мою функцию hook_swapbuffers ().
Я хочу, чтобы hook_swapbuffers поместил оверлей (сейчас красный полупрозрачный квад) поверх процесса жертвы - в данном случае игра на основе opengl.
hook_swapbuffers () вызывает следующее:
// инициализирует состояния gl
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClearDepth(1.0f);
glDisable(GL_DEPTH_TEST);
glDepthFunc(GL_ALWAYS);
glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
// Draw
glClear( GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
glPushMatrix(); // store current matrix settings
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// set the limits of our ortho projection
glOrtho(-1.0, 1.0, -1.0, 1.0, 0.1, 100);
glBegin(GL_QUADS);
glColor4f(1.0f, 0.0f, 0.0f, 0.5f); // Red
glVertex3f(1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(1.0f, -1.0f, 1.0f);
glEnd();
glPopMatrix(); // restore original matrix
// Очистка состояний gl
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
Затем вызывается обычная функция SwapBuffers.
Если я закомментируюВ моих играх отрисовываются коллы, хук-дро прекрасно работает, и я получаю красный полупрозрачный экран с выровненным квадратом, отображаемый в моей игре (так как все розыгрыши закомментированы, игра фактически представляет собой черный холст, теперь темно-красный с наложенным моим квадом).
К сожалению, в ту минуту, когда я возвращаю свои игры, мой выровненный по экрану квад больше не рендерится ???Я могу настроить glClear на очистку цветового буфера, и это происходит правильно, поэтому ловушка работает, и opengl принимает команды из ловушки.
Я думаю, что в игре есть какое-то мошенническое состояние, влияющее на игруничья в функции крюка.Может быть, окно просмотра / камера или некоторые связанные данные, которые не должны существовать для моего теста ловушки.
Любая помощь или указатели будут очень получены.