我正在寻找一些不常见的东西:一种允许将来自 2 个输出(HDMI、DVI、VGA 或任何其他类型的图像输出)的图像合并为屏幕上显示的最终图像的设备。输出可以是相同类型(例如2个HDMI)或不同类型,任何有效的都可以。如果不清楚,这里有一个简单的架构:
它可以以不同的方式工作,例如使用优先级系统(例如,输出 1 写入其图像,输出 2 覆盖非透明像素),不太理想的是通过加法(例如,如果输出 1 上有一个红色像素 0xFF0000 和一个绿色像素)像素 0x00FF00 位于输出 2 上的同一位置,该像素变为黄色 0xFFFF00),或任何其他方法。
我检查了可用的设备,似乎没有一个能够做到这一点。另一种解决方案是拥有一台单独的计算机,能够从主计算机的输出捕获视频输入,进行合并操作并将图像发送到屏幕进行显示。我发现的视频捕获设备只有一个输入和一个输出来记录然后显示图像(这些通常是游戏流设备),并且不允许我实时合并图像。我也找不到用于具有多个输入的计算机的视频捕获卡,我可以用它来合并图像。
如果您对如何实现此目标有任何想法,请告诉我。
谢谢你,祝你过得愉快。
我已经完成了shellcode执行的一些实验,其中我编写了自己的shellcode,将其写入目标程序的内存中,我希望它在其中执行并使用新线程或线程劫持执行它.
这很好用,但手动编写shellcode非常耗时,因此我正在寻找一种方法,能够用C或C++编写一个在编译后完全自包含的函数.这意味着任何编译的函数都应该是独立可执行的.这样我就可以直接将它写入我的目标程序,准备用WriteProcessMemory执行.因此,推送shellcode将使用如下代码:
#include <Windows.h>
#include <iostream>
using namespace std;
BOOL MakeABeep() {
return Beep(0x500, 0x500);
}
DWORD MakeABeepEnd() { return 0; }
int main() {
DWORD pid = 0;
cout << "PID: ";
cin >> dec >> pid;
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
if (!hProcess) { cout << "OpenProcess failed GLE = " << dec << GetLastError() << endl; return EXIT_FAILURE; }
void* buf = VirtualAllocEx(hProcess, NULL, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (!buf) { cout << "VirtualAllocEx failed GLE = …Run Code Online (Sandbox Code Playgroud)