После пары запросов я выпускаю урезанную версию моего внутреннего средства захвата экрана. Это перехватывает функцию присутствия D3D11 и копирует задний буфер в текстуру. Затем часть этой текстуры копируется в общую память, позволяя любому другому процессу считывать значения пикселей. Это можно использовать для пиксельных ботов или просто для захвата снимков экрана или видео.

Как использовать:
Сначала вам нужно будет создать DLL с помощью Visual Studio. После успешной сборки вы можете внедрить DLL в процесс Overwatch, используя свой любимый инжектор. Резервный буфер копируется каждый кадр в общую память, пока поток не будет завершен. Вы можете нажать клавишу экрана печати на клавиатуре, чтобы сохранить снимок экрана на рабочем столе. По умолчанию он должен быть сохранен как capture.ppm. Вы можете нажать клавишу Caps Lock, чтобы завершить цепочку.

Чтение общей памяти:
Размер разделяемой памяти составляет capture_width * capture_height * 4 в байтах. Каждый байт - это канал пикселя. Пиксели хранятся в порядке RGBA строка за строкой. Вам нужно будет использовать MemoryMappedFile и MemoryMappedViewAccessor для чтения памяти. Например, в C #:

Код:
var size = WIDTH * HEIGHT * 4;
var handle = MemoryMappedFile.CreateOrOpen("screengrabber", size, MemoryMappedFileAccess.ReadWrite, MemoryMappedFileOptions.None, HandleInheritability.None);
var accessor = handle.CreateViewAccessor(0, size);
 
unsafe
{
    byte* ptr = null;
    accessor.SafeMemoryMappedViewHandle.AcquirePointer(ref ptr);
}
Общие замечания:
Я отметил области, которые вы, вероятно, захотите изменить с помощью ИЗМЕНИТЕ МЕНЯ. Вероятно, вам нужно будет только прикоснуться к файлу dllmain.cpp. Я использовал MinHook, чтобы подключить функцию присутствия D3D11. Похоже, что античит Overwatch не заботится о том, подключите ли вы эту функцию, скорее всего, потому, что многие программы для захвата экрана делают именно это. Я использую метод спуфинга от Aeternum для создания потока. Я не уверен, нужно ли это. В Overwatch нет ничего особенного. Вы должны иметь возможность использовать это практически с любой игрой, использующей Direct3D 11, при условии, что вы измените имя окна в верхней части функции MainThread.

Автор темы и кодер: skillnothax

Скачать
https://disk.yandex.ru/d/uTkDnTmrW-cCGw

Пароль от архива: best-hack.net