CreateRemoteThread与ERROR_NOT_ENOUGH_MEMORY失败

CreateRemoteThread与ERROR_NOT_ENOUGH_MEMORY失败,第1张

概述CreateRemoteThread与ERROR_NOT_ENOUGH_MEMORY失败

这是一个很奇怪的问题,但我相信这是SO的话题。

介绍:

我有一个用C#编写的服务,它调用我的C ++库。 C ++库通过WinExec执行一些第三方软件。

第三方软件通过CreateRemoteThread注入DLL。 我没有这个软件的源文件。

PID存在于netstat中,但在任务pipe理器中不存在

如何通过另一个windows服务创buildwindows服务

从.NET windows服务调用COM组件

windows服务的替代方法

Razor.ServiceStack – 视图不呈现,只是默认的“快照”

主要部分

我有2台电脑 – Win2008和Win10。

对于Win10-这个frankenstein工作正常,Service运行DLL,DLL运行第三方DLL注入器,DLL注入器注入东西。

对于Win2008来说,事情是不一样的。 如果我从CMD运行第三方DLL注入器 – 它的工作完美无瑕。 但是,如果我运行服务 – 注入器返回,他从CreateRemoteThread ERROR_NOT_ENOUGH_MEMORY。

服务正在从本地服务帐户工作,并在windows 10上一切正常。我正在寻找可能的想法线索,为什么有一个与服务(记住,CMD工作正常)的问题,只有windows 2008。

在Java等待一个windows服务启动/停止?

作为windows服务运行Jetty 7

windows服务代码在使用Pywin32 / PyInstaller时会产生线程错误

csRSS.exe过程是做什么的?

从C#中的windows服务打印HTML文档,无需打印对话框

这个问题可能与跨特权级别创建远程线程有关,如以下博客文章所述:

将代码注入特权Win32进程

对于XP SP2及更高版本(2003,Vista),一些新的安全措施会阻止传统的CreateRemoteThread()函数正常工作。 您应该能够打开进程,在其堆上分配内存,并将数据写入分配的区域,但是当尝试调用远程线程时,将会失败并显示ERROR_NOT_ENOUGH_MEMORY。

对于XP SP2,我做了一些调试,发现在CreateRemoteThread()里面有一个调用ZwCreateThread(),它是从ntdll.dll中导出的。 调用是在指定线程应该开始挂起的情况下进行的,但是在调用ZwResumeThread()之前,仍然在CreateRemoteThread()内部的路上,调用CsrClIEntCallserver()会失败并最终导致错误信息。

本文解释了在不同版本的windows上注入远程线程的一些不同方法,以避免错误,并以此结论结束:

此时,我们可以成功地将远程线程执行到所有目标平台上的特权进程中,但是如前所述,它非常混乱。 我们正在使用三种不同的,基本上没有记录的功能,并根据 *** 作系统版本自动检测使用哪一种功能。

更好的解决方案是创建一个辅助程序,将服务对象(您的注射器程序)添加到目标系统上的服务控制管理器数据库。 由于您是管理员,无论如何,您都可以添加这些条目并启动服务。 这将使喷油器程序能够以不同于普通代码的不同访问权限运行,而传统的CreateRemoteThread()可以在windows 2000,XP和2003 / Vista上正常运行。 用于添加和控制服务的API函数由MSDN记录,并在所有平台上保持一致。

因此,我们可以使用许多不同的函数将代码注入到特权远程进程中,包括XP SP2上的RtlcreateuserThread()和Vista上的NtCreateThreadEx(),但是最佳的方法是安装临时服务并允许CreateRemoteThread()是完成所有平台任务的单个API。

当然,这些都不重要,因为你没有注入器的源代码,所以不能改变它的工作方式。

而且,您也不能在会话边界上创建远程线程。 在服务中调用WinExec()在与服务相同的会话(即会话0 WinExec()中运行注入器进程。如果尝试注入正在用户会话中运行的进程,则永远不会工作。 这也解释了为什么从CMD运行注入器的工作原理,如果CMD运行在与注入进程相同的会话中。

总结

以上是内存溢出为你收集整理的CreateRemoteThread与ERROR_NOT_ENOUGH_MEMORY失败全部内容,希望文章能够帮你解决CreateRemoteThread与ERROR_NOT_ENOUGH_MEMORY失败所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1238706.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存