Windows-注入技术学习总结

Windows Ring3层注入——输入法注入(六) Windows Ring3层注入——输入法注入(六)输入法介绍输入法注入原理输入法注入的相关知识输入法注入步骤输入法注入的函数原型及代码示例输入法注入操作描述流程图删除自己安装的输入法: 输入法介绍 输入法是一类特殊的程序,主要功能在程序中是进行文字的输入,一般有外挂式(早期的“万能五笔”)和输入法接口式两种实现方式。 外挂式比较简单,它的形式通常是一个EXE文件,通过模拟一些Windows输入... 阅读详情
AI摘要

本文详细解析远程线程注入、消息钩子、输入法、注册表、EIP、APC及SSDT替换等Windows系统常见的代码注入技术,包括原理、流程和注意事项,以及防注入策略的探讨。

目录

1.远程线程注入

2.消息钩子注入

3.输入法注入

4.注册表注入

5.EIP注入

6.APC注入

7.SSDT替换

总结


1.远程线程注入

原理:利用CreateRemoteThread()函数,将自己创建的的线程加载到远程空间进程里去执行。

CreateRemoteThread function (processthreadsapi.h) - Win32 apps | Microsoft Docs

注入流程:

  1. OpenProcess 打开被注入进程句柄。
  2. VirtualAllocEx 在注入进程里申请空间,用于存放注入插件路径的字符串,不然在注入进程里找不到参数。
  3. WriteProcessMemory 往申请的空间里写路径字符串
  4. CreateRemoteThread 注入进程,函数第四个参数写LoadLibrary,因为LoadLibrary函数地址在Kernel32.dll中,在每个进程中映射地址都一样,所以不需要再去注入进程查找该函数地址了。第五个参数写路径字符串地址,为LoadLibrary函数的参数。
  5. WaitForSingleObject 等待线程执行完成返回,VirtualFreeEx释放申请空间。

示例代码:

#define TARGETEXE L"notepad.exe"
WCHAR InjectDll[] = L"C:\\Users\\k\\source\\repos\\ConsoleApplication3\\x64\\Release\\TestDll.dll";

DWORD dTargetpid = 0;
 {
     HANDLE hSnapshot = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
     if (hSnapshot != INVALID_HANDLE_VALUE)
     {
         PROCESSENTRY32W pe32;
         pe32.dwSize = sizeof(PROCESSENTRY32W);

         if (Process32FirstW(hSnapshot, &pe32))
         {
             do {
                 if (wcscmp(pe32.szExeFile, TARGETEXE) == 0)
                 {
                     dTargetpid = pe32.th32ProcessID;
                     break;
                 }
             } while (Process32NextW(hSnapshot, &pe32));
         }
     }
     CloseHandle(hSnapshot);
 }

 HANDLE hTargethandle =  OpenProcess( PROCESS_ALL_ACCESS, FALSE, dTargetpid);
 if (hTargethandle != INVALID_HANDLE_VALUE)
 {
     //必须具备 PROCESS_VM_OPERATION  访问权限
     LPVOID vaAddress =  VirtualAllocEx(hTargethandle, NULL, sizeof(InjectDll), MEM_COMMIT, PAGE_READWRITE);
     if (vaAddress != nullptr)
     {
         if (WriteProcessMemory(hTargethandle, vaAddress, InjectDll, sizeof(InjectDll), NULL))
         {
             HMODULE hKernel32module = GetModuleHandle(L"kernel32.dll");
             if (hKernel32module)
             {
                 LPTHREAD_START_ROUTINE loadLibraryFunction = (LPTHREAD_START_ROUTINE)GetProcAddress(hKernel32module, "LoadLibraryW");
             
                 //必须具备 PROCESS_CREATE_THREAD、 PROCESS_QUERY_INFORMATION、 PROCESS_VM_OPERATION、 PROCESS_VM_WRITE和 PROCESS_VM_REA
抗艾程序员龚伦强谈:DLL注入之输入法注入C++实现源码 输入法注入是一种常见的DLL注入技术,利用系统在切换输入法时加载IME(Input Method Editor)模块的特性,将恶意的DLL文件注入到目标进程中,以实现攻击目的。 阅读详情

相关推荐

sql注入详解

目录前言? ?一、漏洞原因分析二、漏洞危害三、sql注入防范四、如何挖掘sql注入漏洞五、常见的注入手法联合查询(union注入)报错注入基于布尔的盲注基于时间的盲注HTTP头注入宽字节注入堆叠查询二阶注入六、sql注入getshell的几种方式结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言。SQL注入(SQL Injection)是一种常见的Web安全漏洞,主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没

m0_67392811的博客 7054

从R3nzSkin项目学习Windows游戏内存修改与DLL注入核心技术

动态链接库(DLL)注入与进程内存操作是Windows系统编程与软件安全领域的核心基础技术。其原理在于通过操作系统提供的API,将自定义代码模块加载到目标进程的地址空间,从而实现对目标程序运行时行为的监控与修改。这项技术的核心价值在于为软件调试、功能扩展、安全研究提供了底层能力支撑,广泛应用于合法场景,如软件插件开发、性能分析工具和反病毒研究。在游戏修改领域,这项技术常被用于实现内存数据读写(如修改角色属性)和函数钩子(Hook)。通过剖析类似R3nzSkin这样的开源项目,开发者可以直观学习到如何结合模式

weixin_30266885的博客 327

VC++实现Windows进程注入与文件隐藏技术:逆向学习与防御实践

进程注入是Windows系统安全领域的核心技术概念,它允许一个进程将代码加载到另一个进程的地址空间中执行。其原理通常涉及利用Windows API(如CreateRemoteThread和WriteProcessMemory)在目标进程中分配内存、写入数据并创建远程线程。掌握这项技术对于理解恶意软件行为、进行安全防御和授权渗透测试具有重要价值。在应用场景上,进程注入不仅被恶意软件用于隐蔽执行,也被合法软件(如调试器、安全工具和游戏外挂)广泛使用。本文通过VC++编程环境,深入剖析了DLL注入、文件隐藏和自启

weixin_33794672的博客 363

【安全技术】关于几种dll注入方式的学习

何为dll注入 DLL注入技术,一般来讲是向一个正在运行的进程插入/注入代码的过程。我们注入的代码以动态链接库(DLL)的形式存在。DLL文件在运行时将按需加载(类似于UNIX系统中的共享库(share object,扩展名为.so))。然而实际上,我们可以以其他的多种形式注入代码(正如恶意软件中所常见的,任意PE文件,shellcode代码/程序集等)。 全局钩子注入 在Windows大部分应用都是基于消息机制,他们都拥有一个消息过程函数,根据不同消息完成不同功能,windows通过钩子机制来截获和监视.

HBohan的博客 1454

Windows编程学习笔记(一)(Windows黑客编程技术详解第2、3章)

1.LRESULT:一种数据类型,long result,表示返回的长整型数据结果 2.lParam 和 wParam 是宏定义,一般在消息函数中带这两个类型的参数,通常用来存储窗口消息的参数。 wParam 通常用来存储小段信息,如标志, lParam 通常用于存储消息所需的对象 3.HINSTANCE 是“句柄型”数据类型。相当于装入到了内存的资源的ID。HINSTANCE对应的资源是inst...

qq_31255093的博客 1250

windows-DLL注入

DLL注入

天使也掉毛 2495

关于dll注入方式的学习(突破session 0的远程线程注入)

举个RING权限的最简单的例子:一个停止响应的应用程式,它运行在比RING0更低的指令环上,你不必大费周章的想着如何使系统回复运作,这期间,只需要启动任务管理器便能轻松终止它,因为它运行在比程式更低的RING0指令环中,拥有更高的权限,可以直接影响到RING0以上运行的程序,当然有利就有弊,RING保证了系统稳定运行的同时,也产生了一些十分麻烦的问题。比如一些OS虚拟化技术,在处理RING指令环时便遇到了麻烦,系统是运行在RING0指令环上的,但是虚拟的OS毕竟也是一个系统,也需要与系统相匹配的权限。

2201_75856701的博客 526

SCS 43. 利用Scissor算法从单细胞数据中挖掘临床表型关联的细胞亚群

本文详细介绍了Scissor算法在单细胞转录组数据分析中的应用,该算法能够精准挖掘与临床表型关联的细胞亚群。通过建立单细胞RNA测序数据与临床预测模型的直接关联,Scissor避免了传统聚类方法的局限性,为疾病机制研究和个性化医疗提供了新工具。文章还涵盖了数据预处理、模型选择、结果验证等实战技巧。

weixin_28736335的博客 490

Ubuntu 20.04 环境下Autoware.universe 与 Carla 0.9.13 联合仿真

安装内容: ROS Galactic Autoware.universe based on ROS Galactic Carla 0.9.13 UnrealEngine 4.26 Openplanner (additional files: op-bridge/op-agent/scenariorunner/map data)

mhl1107的博客 1798

PWM调节DCDC参数计算原理

SOC芯片的核电压、GPU电压、NPU电压、GPU电压等,都会根据性能和实际应用场景来进行电压和频率的调整。 即动态电压频率调整DVFS(Dynamic Voltage and Frequency scaling),优化性能和功耗。

电子绿洲的博客 3158

Deep Reinforcement Learning - 1. DDPG原理和算法

Deep Reinforcement Learning - 1. DDPG原理和算法 背景描述 DDPG的定义和应用场景 DDPG算法相关基本概念定义 DDPG实现框架和算法 DDPG对于DPG的关键改进 下一篇 以下用RL作为Reinforcement Learning 的简称。背景描述概括来说,RL要解决的问

kenneth_yu的博客 14万+

vislib_vex5:面向VEX V5的嵌入式视觉处理库

嵌入式视觉处理是机器人实时感知的核心能力,其本质是在资源受限环境下实现图像采集、色彩转换、阈值分割与目标定位的确定性流水线。原理上依赖硬件加速(如DMA2D)、定点运算优化与中断协同机制,以规避浮点开销和动态内存分配。技术价值在于提供亚毫秒级、无RTOS依赖、低延迟可预测的视觉基础能力,显著提升教育及竞赛机器人在动态场景下的响应鲁棒性。典型应用场景包括色块跟踪、目标居中控制、自动导航中的简易视觉伺服等。本文聚焦于专为VEX V5主控(STM32H743+图像协处理器)深度优化的轻量库vislib_vex5,

weixin_31185473的博客 605

YOLOv13改进策略【Head】| 引入RT-DETR中的RTDETRDecoder,替换检测头

本文记录的是基于RTDETRDecoder模块的YOLOv13目标检测改进方法研究。RT-DETR的模块通过,能为解码器提供高质量的初始,从而。相比v13原始的检测头,RT-DETR能,替换后能够更好的提高模型性能。

Limiiiing的博客 433

CAPL诊断功能实现

UDS(Unified Diagnostic Services)是一种用于汽车电子系统诊断的标准协议。它定义了一系列诊断服务,用于读取和写入车辆电子控制单元(ECU)中的数据,以及处理诊断故障码(DTC)。UDS协议通常运行在CAN总线上,使用ISO 15765-2(ISO-TP)协议进行数据传输。通过本文的学习,读者应该对CAPL诊断功能实现有了初步的了解,并能够编写复杂的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1516

lammps案例:reaxff势模拟Fe(OH)3高温反应过程

所有的reaxff模拟,如:氧化、腐蚀、热裂解、燃烧等模拟,均可采用此模拟框架,只需要更换data文件、势文件,代码中的control文件可以不写,电荷平衡文件也可以用reaxff替换。该案例主要模拟Fe(OH)3在高温下的反应过程,主要代码来自lammps自带的案例。lammps自带案例没有产物输出,故在此基础上稍加修改,增加了产物输出命令。如果需要系统学习反应势的模拟,可考虑报名培训课程。本文分享一个reaxff反应势的案例。in文件代码已经注释,以供参考。大家好,我是小马老师。

lammps_jiayou的博客 1965

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 160个Crackme -008解析
下一篇: PE文件格式学习
ID_EVER
博客等级 码龄7年 3粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值