WinNT/Win2000/WinXP中的远线程技术之一

HookAPI并且在Windows程序启动前注入dll (C++) 这是本人用C++ 在VS2019IDE 用控制台写的一个可以在程序启动前注入dll 和Hook系统api的函数。Hook的是knernelbase的CreateProcessInternalW函数,希望对大家有帮助 立即下载

WinNT/Win2000/WinXP中的远线程技术之一--DLL注入

    什么是远线程?我们知道用CreateThread可以在当前进程里建立一个线程,远线程与此类似,只不过是在其他进程中建立一个线程,用API函数CreateRemoteThread。这个远线程建立后就与建立它的进程无关了,而是进入了另外一个进程。举例说,进程A可以在进程B中建立一个远线程,这个远线程就是进程B中的线程了,而此时如果进程A结束了,也不会影响到那个远线程的运行,除非进程B也结束了,那个远线程才会结束。怎么样,是不是很神奇啊?现在我们来看看怎么建立远线程。

    最简单的远线程技术是DLL注入。好,先从这个讲起。所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分。要实现DLL注入,首先需要打开目标进程。

hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | //允许远程创建线程
    PROCESS_VM_OPERATION | //允许远程VM操作
    PROCESS_VM_WRITE, //允许远程VM写
    FALSE, dwRemoteProcessId )
由于我们后面需要写入远程进程的内存地址空间并建立远程线程,所以需要申请足够的权限(PROCESS_CREATE_THREAD、VM_OPERATION、VM_WRITE)。

如果进程打不开,以后的操作就别想了。进程打开后,就可以建立远线程了,不过别急,先想想这个远线程的线程函数是什么?我们的目的是注入一个DLL。而且我们知道用LoadLibrary可以加载一个DLL到本进程的地址空间。于是,自然会想到如果可以在目标进程中调用LoadLibrary,不就可以把DLL加载到目标进程的地址空间了吗?对!就是这样。远线程就在这儿用了一次,建立的远线程的线程函数就是LoadLibrary,而参数就是要注入的DLL的文件名。(这里需要自己想一想,注意到了吗,线程函数ThreadProc和LoadLibrary函数非常相似,返回值,参数个数都一样) 还有一个问题,LoadLibrary这个函数的地址在哪儿?也许你会说,这个简单,GetProcAddress就可以得出。于是代码就出来了。

char *pszLibFileRemote="my.dll";

PTHREAD_START_ROUTINE pfnStartAddr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA");

CreateRemoteThread( hRemoteProcess, NULL, 0, pfnStartAddr, pszLibFileRemote, 0, NULL);

    但是不对!不要忘了,这是远线程,不是在你的进程里,而pszLibFileRemote指向的是你的进程里的数据,到了目标进程,这个指针都不知道指向哪儿去了,同样pfnStartAddr这个地址上的代码到了目标进程里也不知道是什么了,不知道是不是你想要的LoadLibraryA了。但是,问题总是可以解决的,Windows有些很强大的API函数,他们可以在目标进程里分配内存,可以将你的进程中的数据拷贝到目标进程中。因此pszLibFileRemote的问题可以解决了。

char *pszLibFileName="my.dll";//注意,这个一定要是全路径文件名,除非它在系统目录里;原因大家自己想想。
//计算DLL路径名需要的内存空间
int cb = (1 + lstrlenA(pszLibFileName)) * sizeof(char);
//使用VirtualAllocEx函数在远程进程的内存地址空间分配DLL文件名缓冲区
pszLibFileRemote = (char *) VirtualAllocEx( hRemoteProcess, NULL, cb, MEM_COMMIT, PAGE_READWRITE);
//使用WriteProcessMemory函数将DLL的路径名复制到远程进程的内存空间
iReturnCode = WriteProcessMemory(hRemoteProcess, pszLibFileRemote, (PVOID) pszLibFileName, cb, NULL);
    OK,现在目标进程也认识pszLibFileRemote了,但是pfnStartAddr好像不好办,我怎么可能知道LoadLibraryA在目标进程中的地址呢?其实Windows为我们解决了这个问题,LoadLibraryA这个函数是在Kernel32.dll这个核心DLL里的,而这个DLL很特殊,不管对于哪个进程,Windows总是把它加载到相同的地址上去。因此你的进程中LoadLibraryA的地址和目标进程中LoadLibraryA的地址是相同的(其实,这个DLL里的所有函数都是如此)。至此,DLL注入结束了。
 

hook程序——注入线程中的dll代码 以dll方式注入到一个远程的线程中去,来实现hook相关api函数的功能 立即下载

相关推荐

B站截流工具,无卡密版本

B站截流工具B站截流工具,无卡密版本

解决由于找不到xxx.dll,无法继续执行代码的问题

在用vs写项目,或者你下载github上的C++代码的时候,是不是经常遇到由于找不到xxx.dll,无法继续执行代码的问题,其实很简单,解决方法如下: 首先,对应于不同的运行模式,debug和release,方法都是一样的,找到你项目目录下 项目名称/x64 下的两个文件夹debug和release 然后,找到你安装的库的文件夹,这里以pcl1.11.1这个库来举例,打开其中的bin目录,你会找到很多.dll文件,这些就包含你缺少的.dll文件,比如pcl_common.dll,pcl_commond

一只在cv道路上爬行的小乌龟~ 9万+

SIS解压打包工具

SIS解压打包工具 sis编辑工具 软件:siscontents 版本:1.2.5 build 43 作者:Aquarius http://symbiandev.cdtools.net 汉化:segalgx 日期:2009-5-4 http://www.cnpda.com.cn/forum-7-1.html http://mobile.0110.cn/forumdisplay.php?fid=39 一款PC上打包解包修改S60第三版sis软件,主题的PC工具,支持拖放,支持从文件夹创建新的sis文件,支持创建主题,支持命令行批量解包文件!!强烈推荐!!! 压缩包中含有leftup、binpda的证书签名方案!附件已经包含plugins插件,解包文件时,可执行文件(exe,dll等)会自动脱壳,方便修改(汉化)!! 功能: 1、支持解包打包S60第3版sis(x)文件,支持单独解压其中任意一个文件,支持拖放操作 2、编辑mif文件,删除,新增,保存,替换里面的图片 3、支持查看解压ngage游戏 4、支持查看修改exe,dll的权限 5、支持编辑sis,替换、新增、删除组件,重新打包 ,支持从文件夹创建新sis文件 5、导出pkg文件(支持中文) 6、识别带If,else语句的sis,解包出不同的源文件 7、查看文件是否已签名,查看证书信息,去掉签名 8、修改软件UID3和SID 9、支持软件签名 10、支持拖放操作 11、支持查看解包mbm文件里面的图片 12、支持打包主题,修改主题安装包信息 更新历史: ==1.2.5 build 43更新(2009-5-4) 1、增加附加组件编辑功能(?) 2、修改skn文件属性时改变了安装路径,软件会自动其他文件的路径 ==1.2.1 build 41更新(2009-4-12) 1、修正更新文件目标文件与源文件内容一致时出现的bug 2、新建文件增加兼容安装平台修正对话框 3、新增检查程序包含文件名称中的无效字符 ==1.2.0 build 40更新(2009-4-11) 1、新增支持编辑软件的可选安装选项 2、新增支持添加sis组件选项:选择是否检查手机已经安装了该组件,再决定是否安装该组件 3、新增支持新建mif文件:新建一0字节mif文件,添加到软件中,然后可以添加svg图片 ==1.1.6 build 37更新(2009-3-24) 1、增加AllowDuplicateFiles参数,设为1时,增强sis文件在Symbian 9.1系统平台安装的兼容性 2、其他Bug修正(?) ==1.1.5 build 36更新(2009-3-8)== 1、支持打包主题,修改主题信息 2、修正签名时,RSA 密匙长度超过1024时的bug ==1.1.0 build 35更新== 1、支持从文件夹创建新sis(x)文件 2、支持命令行批量解包sis文件 3、修正解包n-gage文件的bug 4、支持拖放操作(包括打开sis文件,解包文件) 5、其他bug修正 ==1.0.5 build 31更新== 1、支持mbm文件图片解包 ==1.0.3 build30更新== 1、支持修改可执行文件UID3和SID(方便制作共存版) 2、支持对软件签名(可以建立多种方案,对应不同的证书文件) 3、对unicode支持更好 ==0.9.6 build27更新== 1、新建sis安装文件 2、编辑mif文件(增加、替换、删除mif的图片) 3、修复0.9.5的bug

找不到XXXX.dll,无法继续执行代码重新安装程序可能会解决此问题

找不到dll,这个dll是同事

weixin_38973882的博客 11万+

FPGA时序分析中的工艺角:从PVT原理到建立保持时间验证

在数字电路设计中,静态时序分析(STA)是确保芯片功能正确和性能达标的核心验证手段。其基本原理是通过计算信号在逻辑路径上的传播延迟,检查建立时间和保持时间是否满足寄存器采样要求。这项技术的核心价值在于,它能在芯片制造前就预测并消除时序违规,极大提高设计成功率。然而,实际芯片性能会受到工艺波动、电压变化和温度漂移(合称PVT)的显著影响。为了覆盖这些不确定性,时序分析必须采用基于工艺角的边界模型——用最慢的工艺角模型验证建立时间,用最快的工艺角模型验证保持时间。这种分析方法广泛应用于FPGA和ASIC设计流程

weixin_30181209的博客 199

YOLO11实战 第001期-基于yolo11的CrowdHuman密集行人目标检测实战文档(yolo格式数据免费获取)

1.数据阶段在拥挤/遮挡场景下,使用crowdhuman数据集重训练后的yolo11,效果表现较好。crowdhuman数据集标签如下,有Head BBox、Visible BBox、Full BBox。如下图显示:数据集介绍CrowdHuman数据集是旷世发布的用于行人检测的数据集,图片数据大多来自于google搜索。CrowdHuman数据集数据量比较大,15000张,5000张,验证集4370张。训练集和验证集中共有470K个实例,约每张图片包含23个人,同时存在各种各样的遮挡。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 2168

使用windows钩子(HOOK)实现DLL注入

本文章介绍如何使用HOOK技术实现DLL注入。通过一个测试程序,记录你的任何键盘输入信息,见识到HOOK技术的强大之处。

new9232的博客 1万+

遥感影像分割实战:LoveDA数据集从下载到训练全流程指南(附避坑技巧)

本文以LoveDA数据集为例,提供了一份详尽的遥感影像语义分割实战指南。内容涵盖从数据下载、理解与预处理,到环境配置、模型选择与训练,再到性能调优与部署的全流程,并重点分享了多个关键环节的避坑技巧,旨在帮助开发者和研究者高效上手并解决实际问题。

cherry的博客 930

HOOK与注入

HOOK和注入技术经常被恶意代码使用。利用HOOK和注入技术,恶意代码提高了执行隐蔽性,增加了恶意代码分析难度,在某些情况下还能实现权限提升和内存常驻。 HOOK技术 挂钩(HOOK)就是在来往信息间安装“钩子”,钩取来往信息。 在用户层,常见的Hook技术有: ①消息钩子 ②Inline Hook ③IAT Hook 消息钩子 原理: 用户对应用程序的各种操作(eg:键盘输入、点击、移动等)都会产生事件;发生事件时,操作系统会把该事件对应的消息发送给相应的应用程序,应用程序分析收到的信息后执行相应的动作。

weixin_43781139的博客 5860

Openwork 入门指南:开源 AI 桌面助手快速上手

Openwork是一款开源的AI桌面代理工具,提供类似Claude Cowork的免费替代方案。它支持本地运行,确保隐私安全,并能高效处理文件整理、文档读写等任务。支持多种AI模型,通过MIT许可完全免费。安装简单,仅需运行命令行或下载桌面版,需配置API Key后即可使用。操作直观,支持多步骤规划和权限控制,适合自动化重复工作。目前主要支持macOS,未来将扩展至Windows/Linux。建议从简单任务入手,逐步掌握这一高效的数字助手工具。

3803

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

jacke121的专栏 2759

《由于找不到 xxx.dll, 无法继续执行代码》错误提示的解决方法

《由于找不到 xxx.dll, 无法继续执行代码》错误提示的解决方法

优秀的老黄的博客 4万+

SAP 系统中的数字签名解决方案及应用案例分析

在当前企业信息化及数字化转型的大背景下,数据安全与身份认证显得尤为重要。数字签名技术作为保障数据真实性和完整性的重要手段,在 SAP 系统中得到了广泛应用。本文将详细探讨 SAP 系统中部分应用场景如何利用数字签名技术满足业务需求,涵盖 SAP Single Sign-On、质量管理、过程工业生产计划以及 SAP ArchiveLink 内容服务器等方面,力求通过深入解读,帮助读者更好地理解和应用这一关键技术。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 529

WinNT/Win2000/WinXP中的远线程技术------DLL注入

我们知道用CreateThread可以在当前进程里建立一个线程,远线程与此类似,只不过是在其他进程中建立一个线程,用API函数CreateRemoteThread。这个远线程建立后就与建立它的进程无关了,而是进入了另外一个进程。举例说,进程A可以在进程B中建立一个远线程,这个远线程就是进程B中的线程了,而此时如果进程A结束了,也不会影响到那个远线程的运行,除非进程B也结束了,那个远线程才会结束。怎

贝雨 507

【YOLO26实战全攻略】10——YOLO26+SAM3实战:从检测到像素级分割的全流程指南(含PCB缺陷检测案例)

本文聚焦YOLO26与SAM3的融合应用,系统讲解“检测+分割”的三种核心模式:YOLO26原生分割(轻量高效)、YOLO26检测+SAM3精细分割(精度极致)、SAM3自动标注+YOLO26蒸馏(低成本冷启动)。从环境搭建、数据集准备、模型训练、性能优化到边缘部署,提供 step-by-step 实操教程,配套完整可运行代码与执行结果。结合虚拟PCB缺陷检测案例,展示像素级缺陷识别与几何参数测量的工业级应用流程。本文兼顾新手入门与进阶提升,注重实用价值,读者可直接参考搭建自己的分割系统。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 626

Unity最强动作战斗框架?Combat System Framework 深度解析

Combat System Framework 并不是一个简单的角色控制器,而是一套完整的动作游戏战斗开发框架。它借鉴了现代 AAA 游戏常见的架构思想,以 Gameplay Tag 为核心,结合 ScriptableObject 数据驱动设计,将技能、属性、Buff、伤害、武器、动画通知等系统有机整合在一起。同时,配套的可视化动画时间轴、Root Motion 工具和实时预览窗口,大幅优化了动作开发流程。当然,这套框架也有一定的学习门槛。

2403_88403568的博客 684

注入Hook技术 -- DLL注入

 WinNT/Win2000/WinXP中的远线程技术之一--DLL注入    什么是远线程?我们知道用CreateThread可以在当前进程里建立一个线程,远线程与此类似,只不过是在其他进程中建立一个线程,用API函数CreateRemoteThread。这个远线程建立后就与建立它的进程无关了,而是进入了另外一个进程。举例说,进程A可以在进程B中建立一个远线程,这个远线程就是进程B中的线程了,而

铜板的专栏 4177

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

忘记win2000/WinXP的Administrator密码的解决办法[整理]

网上摘录:忘记win2000/WinXP的Administrator密码的解决办法[整理] 整理一下大家提到的办法,首先声明我没有一一试过,漏掉的请大家跟帖1.对于未打sp2的,可以直接用输入法漏洞登陆,可以按照以下步骤操作1.启动时在登陆界面,光标置于用户名处 2.Ctrl+space调出输入法 3.在输入法图标点帮助 4.在选项卡上点主页 5.按住shift点检查网络配置也有人这样作:

≯≯★技术专栏欢迎你!★★≮≮ 8186

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

远线程技术之一--DLL注入

WinNT/Win2000/WinXP中的远线程技术之一--DLL注入         什么是远线程?我们知道用CreateThread可以在当前进程里建立一个线程,远线程与此类似,只不过是在其他进程中建立一个线程,用API函数CreateRemoteThread。这个远线程建立后就与建立它的进程无关了,而是进入了另外一个进程。举例说,进程A可以在进程B中建立一个远线程,这个远线程就是进程B中

tommy的专栏 808

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

一招制敌,清除win2000/XP的登录密码

方法如下:如果你的系统是FAT32的分区,就用DOS启动盘,进入DOS,然后转到安装WIN2000系统的那个盘符下,进入WINNT/SYSTEM32/CONFIG目录中,你会发现有两个SAM文件,这是存放用户密码用的。DEL掉这两个文件,然后重启,使用Administrator,密码为空,进行登录,你就可以正常进行了。如果你是NTFS分区,上面装有两个系统就更好办了,以另一个系统启动计算机,修改那

胡搅蛮缠专栏 5705

_WIN32_WINNT 值定义

转载自:https://blog.youkuaiyun.com/zing2008/article/details/111979942。_WIN32_WINNT 值定义。

summer的博客 1014

使用微软的FCI/FDI库进行文件压缩

使用微软的FCI/FDI库进行文件压缩 2007-07-24 15:47:03  作者:  来源:空  浏览次数:36  文字大小:【大】【中】【小】关键字:使用微软的FCI/FDI库进行文件压缩 document.getElementById("gg336").innerHTML=

jiangxinyu的专栏 1824

windows版本号常数 _WIN32_WINNT

编译一个工程发现好多函数找不到定义,后面发现是windows版本设置不对。高版本的函数在很多条件编译下都被注释掉了。只需要在预处理设置平台正确的版本号即可。eg.下图表示当前的版本是win10 // // _WIN32_WINNT version constants // #define _WIN32_WINNT_NT4 0x0400 // W...

lsfreeing的专栏 2390

【VS2026】_WIN32_WINNT 宏版本列表

用于指定目标 Windows 系统最低版本,头文件定义,编译时定义该宏会启用对应系统API、禁用低版本不兼容接口。

lijian2017的博客 251

如何判断winme,winxp,win2000等操作系统

开始——运行——winver,就可以知道了。GetVersionExSYSTEMVERSION   st;   GetVersionEx(...);enum   Win32Type{     Win32s,     WinNT3,     Win95,     Win98,     WinME,     WinNT4,     Win2000,     WinXP  };         Win3

Johnny的专栏 1052
上一篇: 跨进程实现在Tree中快速定位节点
下一篇: Win32的虚拟内存分配函数
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值