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

把dll模块注入到游戏进程的方法_基于文件修改的注入方式

1、概述

      本文主要是介绍两种基于文件修改的注入方式,一种是“DLL劫持”,另一种是“修改导入表”。这两种注入方式都是利用操作系统加载PE时的特点来实现的,我们在实现这两种注入方式时只需专注于注入dll的实现,而不用花费额外的精力去关注注入器的实现。要想深入了解这两种方式,需要先对PE Loader的原理以及PE结构有所了解。

2、DLL劫持注入

2.1原理

每个PE文件都有一个“导入表”,pe文件在加载时,会优先加载“导入表”中的PE文件。进程在运行时,会从“导入表”中获取要加载的DLL的名称,然后按照指定的目录顺序去加载这些dll。“导入表”中有系统dll,也有程序自带的dll,因此dll劫持可再细分为系统dll劫持和程序自带dll劫持两类。

DLL在被加载时有个搜索顺序,当注册表HKLM\System\CurrentControlSet\Control\Session Manager键值下的属性SafeDllSearchMode的值设置为1时,DLL搜索顺序如下:(引用自 DLL搜索路径和DLL劫持_利用dll劫持网址-CSDN博客)

      1、应用程序EXE所在的路径。

           2、系统目录。

           3、16位系统目录

           4、Windows目录

           5、当前目录

           6、PATH环境变量指定的目录

当SafeDllSearchMode的值为0时,dll搜索顺序又会变为:

       1、应用程序EXE所在的路径。

           2、当前目录

           3、系统目录。

           4、16位系统目录

           5、Windows目录

           6、PATH环境变量指定的目录

通过观察这两种模式下的搜索路径,我们会发现进程在启动时会优先加载该进程exe所在路径下的dll,因此我们可以通过替换应用程序exe所在路径下的dll或将注入dll改名为系统dll并放在应用程序exe所在路径下的方式来实现注入,即”DLL“劫持。

然而在实际的”系统dll劫持“操作中,我们会发现并不是所有dll都能被劫持,xp和win7及win7以后的系统劫持效果也有所不同。Win7及以后的系统增加了HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs 来拒绝部分系统dll被劫持。该注册表中的dll名称不允许被劫持,即系统dll劫持会失败。

 不过,微软又莫名其妙的允许用户在上述注册表路径中添加“ExcludeFromKnownDlls”注册表项,排除一些被“KnownDLLs注册表项”机制保护的DLL。也就是说,只要在“ExcludeFromKnow

http://www.xdnf.cn/news/62011.html

相关文章:

  • SQL语言的三大分类及其应用详解
  • 欧拉-国产操作系统替代产品如何
  • FreeRTOS中的优先级翻转问题及其解决方案:互斥信号量详解
  • ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(显示输出类外设之IS31FL3216)
  • DeepSeek+Cursor+Devbox+Sealos项目实战
  • IP精准检测“ipinfo”
  • Flask API 项目 Swagger 版本打架不兼容
  • ADC数据不稳定的解决方案
  • Java学习手册:HTTP 协议基础知识
  • 【Maven基础】
  • 霍尔效应的应用领域
  • QT 5.15 程序打包
  • 【无人机】无人机方向的设置,PX4飞控方向,QGC中设置飞控的方向/旋转角度。PX4使用手册飞行控制器/传感器方向
  • [原理分析]安卓15系统大升级:Doze打盹模式提速50%,续航大幅增强,省电提升率5%
  • Android Studio 国内镜像使用与 SDK 下载速度优化指南
  • list的学习
  • 超详细mac上用nvm安装node环境,配置npm
  • 基于RK3588+FPGA+AI YOLO全国产化的无人船目标检测系统(二)平台设计
  • Java 性能优化:如何利用 APM 工具提升系统性能?
  • 每日一题(小白)回溯篇7
  • python测试框架之pytest
  • 基于STC89C52RC和8X8点阵屏、独立按键的匹配消除类小游戏
  • 线上救急-AWS限频
  • SQL Server基础
  • 在ARM Linux应用层下驱动MFRC522
  • spark和hadoop区别联系
  • AI软件栈:LLVM分析(六)
  • ‌射频功率放大器的核心工作机制与组件设计
  • Gmssl实战
  • 【NLP 68、R-BERT】