在Windows操作系统中,获取网页游戏窗口句柄(PID)通常需要使用一些底层的API函数,例如FindWindow、EnumWindows或者GetWindowThreadProcessId等。以下是一个简单的示例,使用C++和Windows API来获取指定进程的窗口句柄:
```cpp
#include
LRESULT CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { DWORD pid = 0; if (GetWindowThreadProcessId(hwnd, &pid) && pid == YOUR_PROCESS_ID) { // YOUR_PROCESS_ID是你要找的进程ID DWORD dwProcessId; GetWindowThreadProcessId(hwnd, &dwProcessId); if (dwProcessId == YOUR_PROCESS_ID) { HWND windowHandle = hwnd; // 找到了目标窗口,可以在这里进行后续操作,比如窗口标题、大小等 // 然后返回窗口句柄 return TRUE; } } return FALSE; }
int main() { PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) }; HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnapshot == INVALID_HANDLE_VALUE) { printf("Failed to create snapshot\n"); return 1; }
if (Process32First(hSnapshot, &pe32)) { do { if (pe32.th32ProcessID == YOUR_PROCESS_ID) { EnumWindows(EnumWindowsProc, 0); // 如果找到了目标进程,关闭工具帮助32句柄 CloseHandle(hSnapshot); return 0; } } while (Process32Next(hSnapshot, &pe32)); }
CloseHandle(hSnapshot); printf("Failed to find the process\n"); return 1; } ```
请注意,这个示例需要管理员权限运行,因为获取其他进程的信息需要相应的权限。同时,`YOUR_PROCESS_ID`需要替换为你需要查找的进程ID。
另外,获取特定进程的窗口句柄并不总是容易的,因为网页游戏窗口可能会使用无边框、透明或者没有标题栏的窗口,这需要更复杂的技巧来识别。如果你是开发者,你可能需要查看游戏的源代码或者使用专门的工具来帮助定位。
游戏辅助 -- 跨进程注入(C++版)
OpenProcess()成功打开目标进程后,会返回目标进程的句柄,紧接着我们会利用这个句柄进行下一步操作,利用VirtualAllocEx()函数,在目标进程的内存地址空间中,开辟一个新的内存空间,供我们后续的注入行为使用。
getpid()创建的注意事项就是这些啦,到这里我们的getpid()函数就已经创建完毕了。看不懂没关系,文章末尾有拿源码方式!
网页游戏窗口句柄pid获取
注意上图中箭头指向的代码块,其中name是我们输入的目标进程名,属于多字节字符集,而存放进程名字的结构成员szExeFile存放的进程名却是unicode字符集,直接让这两个变量进行比较,编译器是不会报错的,实际上,wcscmp()函数永远都无法正确比较name和zExeFile是否相等,为了避免这个问题,我们要将这两个变量的字符集类型转换成相同的,小编这里将多字节字符集转换成了unicode字符集。
第一次查找用到Process32First()函数,接下来的查找就需要Process32Next()函数了手机网页游戏无需下载游戏,在这两个函数的基础上,我们加上一个while()循环就能找到我们的目标进程了。什么你说你看不懂?没事文章末尾有源码学习哦!
首先我们要获取所有进程的快照,然后使用Process32First()来第一次查找列表中的第一个进程,这个函数有两个参数,一个是之前获得的进程快照,一个是存放进程信息的结构体,这个结构中的szExeFile是进程的名字信息,而我们会用这个名字信息与我们想要查找的进程名进行比较。
在整个注入程序中,我们需要引用三个头文件,分别是stdio.h、windows.h、TlHelp32.h,getpid()能接受一个参数,那就是进程的名字。
首先,我们需要用OpenProcess()函数来打开目标进程,但是OpenProcess()函数需要三个函数,这三个参数中,有两个是已知的,有一个是未知的—— 目标进程的PID,为了能够使用OpenProcess()函数,我们就先得得到目标进程的PID,所以我们要创建一个函数—— getpid(),它的作用是遍历进程列表并返回指定进程PID。
好了,现在开始教大家如何制作DLL注入程序,首先呢,注入程序涉及的细节比较多,所以我们将分成两三篇文章来讲。在下文中,我们要注入的进程就简称为“目标进程”。
坏人可以利用CreatremoteThread(),把一个精心设计好的dll注入到系统进程里,这个dll就寄生在系统进程中一样,除非系统进程关闭,否则这个dll基本上是移除不了的,即使这个dll已经被发现,那也很难把它清除。不过现在的计算机安全软件基本上都能防御DLL注入攻击
好在国内的杀毒软件都已经及时的更新,遏制了QQ尾巴的蔓延,而dll注入漏洞也成为了各大杀毒软件的重点“看护”对象,严格的来讲,dll远程注入并不是一个漏洞,dll远程注入是利用windows内部的函数CreatremoteThread()进行的,这个函数在开发人员手里可以用来维护软件,在坏人手里是用来破坏系统的。
这两天我们的文章都是围绕着“DLL远程注入”进行的,上一篇文章我们讲了,如何去创建、编写我们远程注入是需要的dll文件,并且教大家如何去解决“堆被破坏”的问题,现在我们已经有了“箭”,但是我们的“弓”还没做好呢,今天小编就教大家如何去制作“弓”,也就是——注入程序。
分析表明,Remcos会通过启动三个线程来启动键盘记录程序,日志数据保存在本地文件“%Appdata%\remcos\ logs.dat”中。
如上图所示,资源文件夹包含有Remcos的所有配置数据,如C&C服务器主机、许可证编号、加密数据的密码、RAT功能的默认开关(“0”禁用、“1”启用)、在系统注册表中的主键名称等。
FortiGuard威胁研究与响应实验室此次捕获的Remcos的版本为“2.5.0 Pro”,于2019年9月20日发布。
2.使用先前接收到的参数(“.exe”文件扩展名)、系统公用(%PUBLIC%)文件夹和一个随机字符串,生成可执行文件的绝对路径(C:\Users\Public\<随机字符串>.exe);
ZIP文件包含一个Windows快捷方式(.lnk)文件,但它实际上是一个.txt文件,用于获取并执行一个PowerShell脚本。
2016年下半年,Remcos远控木马开始在暗网交易市场公开售卖,并且支持定制服务。在过去的几年里,它经常被用作信息窃取器和键盘记录器。
分析表明,Remcos会通过启动三个线程来启动键盘记录程序生存战争2中国方块游戏盒子下载,日志数据保存在本地文件“%Appdata%\remcos\ logs.dat”中。
如上图所示,资源文件夹包含有Remcos的所有配置数据,如C&C服务器主机、许可证编号、加密数据的密码、RAT功能的默认开关(“0”禁用、“1”启用)、在系统注册表中的主键名称等。
FortiGuard威胁研究与响应实验室此次捕获的Remcos的版本为“2.5.0 Pro”,于2019年9月20日发布。
2.使用先前接收到的参数(“.exe”文件扩展名)、系统公用(%PUBLIC%)文件夹和一个随机字符串,生成可执行文件的绝对路径(C:\Users\Public\<随机字符串>.exe);
ZIP文件包含一个Windows快捷方式(.lnk)文件,但它实际上是一个.txt文件,用于获取并执行一个PowerShell脚本。
2016年下半年,Remcos远控木马开始在暗网交易市场公开售卖,并且支持定制服务。在过去的几年里,它经常被用作信息窃取器和键盘记录器。
专题: 三国单机类游戏 老游戏单机三国 游戏单机版三国上一篇运行网页游戏时经常 崩溃
下一篇io游戏 移动端 网页版