当前位置: 首页 > news >正文

把dll模块注入到游戏进程的方法_插APC注入

一、概述

APC是异步过程调用,系统创建线程的时候会为线程创建一个APC队列,当线程调用SleepEx,WaitSingleObjectEx等函数时,并把线程状态被设置为可提醒状态时,线程并不会睡眠,而是检查APC队列是否为空,如果不为空,转去执行APC队列中的每一项,因此给目标进程中的线程插入APC,就可以实现进程注入。

二、用到的Windows API函数

函数QueueUserAPC可以插入APC到目标进程的线程,其原型如下:

DWORD WINAPI QueueUserAPC(

   _In_ PAPCFUNC  pfnAPC,//APC回调函数的指针

   _In_ HANDLE    hThread,//目标线程的句柄

   _In_ ULONG_PTR dwData//传递给回调函数的参数

)

根据前一小结可知,可以调用API去读写目标进程,而本次APC注入需要线程句柄,进程句柄可以通过OpenProcess来获得,那么同理,线程句柄可以通过函数OpenThread来获得,函数原型如下:

HANDLE WINAPI OpenThread(

  _In_ DWORD dwDesiredAccess,//打开权限

   _In_ BOOL  bInheritHandle,//子进程是否继承该句柄

   _In_ DWORD dwThreadId//线程ID

)

其中线程ID的获取,可以通过枚举线程来完成。用到的API如下:

HANDLE WINAPI CreateToolhelp32Snapshot(

   _In_ DWORD dwFlags

相关文章:

  • 【金仓数据库征文】从云计算到区块链:金仓数据库的颠覆性创新之路
  • 秒出PPT推出更强版本,AI PPT工具进入新纪元!
  • 6.学习笔记-SpringMVC-拦截器(P71-P74)
  • # 代码随想录算法训练营Day37 | Leetcode300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组
  • 在 MySQL 中,索引前缀长度为什么选择为 191
  • Java24新增特性
  • OpenHarmony 开源鸿蒙北向开发——hdc工具使用及常用命令(持续更新)
  • 504 nginx解决方案
  • 机器学习基础 - 分类模型之SVM
  • “Daz to Unreal”将 G8 角色(包括表情)从 daz3d 导入到 UE5。在 UE5 中,我发现使用某个表情并与闭眼混合后,上眼睑出现了问题
  • PostgreSQL性能优化实用技巧‌
  • NLP高频面试题(五十二)——深度学习优化器详解
  • Java面试实战:电商场景下的Spring Cloud微服务架构与缓存技术剖析
  • 【hadoop】HBase shell 操作
  • NODE_OPTIONS=--openssl-legacy-provider vue-cli-service serve
  • Pikachu靶场-unsafe upfileupload
  • ASP.NET Core 主机模型详解:Host、WebHost与WebApplication的对比与实践【代码之美】
  • 微信小程序根据图片生成背景颜色有效果图
  • 【前端】【业务场景】【面试】在前端开发中,如何实现实时数据更新,比如实时显示服务器推送的消息,并且保证在不同网络环境下的稳定性和性能?
  • MCP开发实战(一)基于MCP协议的大模型网关——多个大模型API统一封装为标准化工具
  • 中信证券:“国家队”未曾减持ETF,应充分相信国家维稳决心
  • “养老规划师”实则售卖保险,媒体:多部门须合力整治乱象
  • 目前中美未进行任何经贸谈判,外交部、商务部再次表明中方立场
  • 中美正在就关税问题谈判甚至会达成协议?外交部:都是假消息
  • 中国工程院院士、歼八Ⅱ飞机系统工程副总设计师温俊峰逝世
  • 解放日报:上海一季度GDP同比增长5.1%,两大新动能助推经济“开门红”