首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CreateRemoteThread导致进程崩溃,没有错误代码

CreateRemoteThread是Windows操作系统提供的一个函数,用于在一个进程中创建一个远程线程。它的作用是在目标进程的地址空间中创建一个新的线程,并在该线程中执行指定的函数。

然而,使用CreateRemoteThread函数可能会导致目标进程崩溃,而没有明确的错误代码。这种情况通常是由于以下原因之一引起的:

  1. 权限问题:如果当前进程没有足够的权限来在目标进程中创建线程,那么CreateRemoteThread函数将会失败,并且不会返回明确的错误代码。解决这个问题的方法是确保当前进程具有足够的权限,例如以管理员身份运行程序。
  2. 目标进程状态:如果目标进程处于不正常的状态,例如已经崩溃或正在关闭过程中,那么CreateRemoteThread函数可能会导致进程崩溃。在这种情况下,需要先确保目标进程处于正常运行状态,然后再尝试使用CreateRemoteThread函数。
  3. 目标进程架构不匹配:如果当前进程和目标进程的架构不匹配,例如当前进程是32位的,而目标进程是64位的,那么CreateRemoteThread函数可能会导致进程崩溃。在这种情况下,需要确保当前进程和目标进程的架构一致。

总结起来,CreateRemoteThread函数导致进程崩溃而没有明确的错误代码可能是由于权限问题、目标进程状态异常或者进程架构不匹配等原因引起的。在使用CreateRemoteThread函数时,需要确保当前进程具有足够的权限,并且目标进程处于正常运行状态,并且架构匹配。如果问题仍然存在,可以考虑使用其他方法来实现相同的功能,或者进一步调查目标进程的状态和环境。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

上海展盟网络科技有限公司的 gamebox 组件注入进程导致软件崩溃

gamebox 组件将会进行进程注入,在一些软件的进程上,会因为 gamebox_shell.dll 访问了不可访问的内存后,引发 C0000005 错误被系统强行结束 因此如果软件崩溃了,可以尝试拿到...调试方法如下 先下载微软极品工具箱 ProcDump 然后使用以下命令启动 procdump 程序 procdump -ma -a 进程PID 上面的 进程PID 可在软件启动后拼手速快速输入 拿到完整的几百兆的...那么证明是此问题 以下是确定会带上海展盟网络科技有限公司的 gamebox 组件,同时会影响其他软件的软件: 小黑记事本 快压 可能还有更多软件会有此问题,因为他们贴了个合作方链接 以下是可能未确定是否会导致问题的软件列表...: 蓝光护眼大师 (卸载之后,需要手动删除 %appdata%\Heinote\gamebox 文件夹,是其中的 迷你新闻 带入 ) 以上这几个软件也许会让自己的软件在运行过程中没有处理好的情况下崩溃,...本质来说和以上这些软件没有很大的关系,是自己的软件没有处理好。

99841

createthread函数详解_createremotethread

CreateRemoteThread和WriteProcessMemory技术 示例程序:WinSpy 另一种注入代码到其他进程地址空间的方法是使用WriteProcessMemory API。...这次你不用编写一个独立的DLL而是直接复制你的代码到远程进程(WriteProcessMemory)并用CreateRemoteThread执行之。...这是要在其中创建线程的进程的句柄。 ●CreateRemoteThread的lpStartAddress参数必须指向远程进程的地址空间中的函数。...这样,远程进程中的ThreadFunc就会执行不存在的内存数据(至少没有在它自己的内存空间中)。 3. 去掉编译器的/GZ编译选项。这个选项是默认的(看附录B)。 4....“ ); return 0 ; } zhuangyu1982@hotmail.com: 我用你的程序在windows xp下运行, 弹出messagebox之后, 只要点击确定宿主进程就会崩溃

54330

利用SilentProcessExit机制dump内存

比如之前就有一篇文章,介绍的就是利用蓝屏崩溃来绕过卡巴斯基dump lsass进程(https://www.mrwu.red/web/2000.html),而在win7之后,windows引入一些进程退出的相关机制...另外就是第二个注册表,这个主要是设置dump内存的一些细节问题,比如dump的位置、崩溃后操作的类型,这类选择的是LOCAL_DUMP,即0x2也就是为导致终止的进程和终止的进程创建一个转储文件,而需要注意的是...下面就是使进程崩溃了,而lsass进程为系统进程,强制关闭,系统则会蓝屏。...然后,WER服务将启动WerFault.exe,该文件将转储现有进程。值得注意的是,调用此API不会导致进程退出。...作者的代码中,提供了两种方法来实现崩溃,一种是直接调用RtlReportSilentProcessExit,而另一种则是使用CreateRemoteThread()来进行实现,后来在测试过程中发现,第二种并不能成功的

1.8K30

CC++ 远程线程DLL注入

{ if(strcmp(process.szExeFile, lpProcessName) == 0){return process.th32ProcessID;} } cout << "没有找到进程...//我提权了之后,发现还是不行,之后上网查了 //发现是32位注入到64位中会有问题,所以我换了个x64,然后显然线程运行成功了, //但是现在远程进程崩溃了...,估计是DLL是32的,我换个DLL编译方式再试试 //我编译了64位的DLL,然后还是崩溃的,之后我发现了应该是我函数地址传的有问题 //因为32位的...dwErr = GetLastError(); return ; } 注入器 //DLL的代码,用DLL方式生成一下,拉到前面EXE目录,或者系统目录都行,跟前面代码中DLL名字有没有加绝对路径有关...来CreateRemoteThread, 另外DLL也应该是64位 32位进程,就得用32位的EXE来CreateRemoteThread, 另外DLL也应该是32位 把CreateRemoteThread

54320

memset栈空间出现段错误

,经过仔细检查并不是memset越界导致的。...先看一下错误代码的输出: image.png 再看一下ulimit -a命令列出的系统对shell 启动进程所占用的资源限制,列出结果如下: image.png 看图片标红的位置,再对比错误代码的输出的结果中变量的大小...2.ulimit命令简介 你是否曾遇到过在程序里面创建线程提示你资源不够,你是否曾遇到过在gcc中加入-g选项,程序崩溃时却没有任何core文件产生。如果就,那你就要注意到ulimit命令了。...本次错误也是由于系统对进程资源的限制导致了以上的奇怪的错误结果。memset栈空间出现段错误是由于系统分每个进程分配的空间不足导致的。 ulimit 通过一些参数选项来管理不同种类的系统资源。...3.错误解决办法 错误代码中局部变量head的大小占用了8.7M的栈空间,已经超过了系统对shell进程的栈空间的限制。

3.3K20

如何使用cThreadHijack实现远程进程注入研究

关于cThreadHijack cThreadHijack是一个针对远程进程注入信标对象文件(BOF),该工具主要通过线程劫持技术实现其功能,并且不会生成任何远程线程,仅限研究使用。...运行机制 cThreadHijack可以根据用户提供的监听器参数来生成原始信标Shellcode,并根据用户提供的PID参数将其注入至远程进程中,这一步主要利用的是VirtualAllocEx和WriteProcessMemory...接下来,cThreadHijack并不会通过CreateRemoteThread或其他API生成一个新的远程线程,而是识别目标进程中的第一个线程,挂起目标线程之后,它便会通过一个CONTEXT结构体来获取线程...CreateThread程序封装在一个名叫NtContinue的函数调用程序,可以允许之前被劫持的线程在不导致远程进程崩溃的前提下恢复运行。...cThreadHijack的信标Payload在生成时会带有一个“线程退出函数”,以允许进程在信标退出之后继续执行。 信标监听器的名称如果包含空格的话,必须放在引号中。

47020

LOL换肤 学习交流

.参数 进程句柄, 整数型, , 句柄必须拥有对被注入进程的完全操作权限。注入后如果没有其他用处可以关闭该句柄。....参数 参数2, , 可空, 非整数型参数需传递变量的内存数据指针,该指针必须是在目标进程内的。 .参数 参数3, , 可空, 提供的参数请与所执行的函数的参数个数一致,否则被注入的进程绝对会崩溃!...() .变量循环尾 () 地址 = 写入内存数据_ (hProcess, MakeCallCode (指针, 参数)) .如果真 (地址 = 0) 返回 (0) .如果真结束 线程句柄 = CreateRemoteThread...(最好不要卸载,卸载的话被注入的进程很容易崩溃) .如果真 (hModule = 0) 返回 (假) .如果真结束 启动线程_Ret (hProcess, FreeAddr, hModule)...局部变量 句柄, 整数型 .如果真 (只运行一次) 返回 (真) .如果真结束 .如果真 (hProcess = 0) 只运行一次 = 真 返回 (假) .如果真结束 句柄 = CreateRemoteThread

1.3K00

DLL依赖查看神奇CFF Explorer

使用CFF Explorer可以查看和修改PE文件的资源,可以查看dll文件可供调用的函数,修改函数入口地址达到制造崩溃屏蔽功能的目的。...Windows 下实现API HOOK的方法 关于API HOOK,就是截获API调用的技术,在对一个API调用之前先执行自己设定的函数,根据需要可以再执行缺省的API或者进行其他处理,假设如果想截获一个进程对网络的访问...使用JMP语句的方法是比较灵活的,所以通过API CreateRemoteThread 可以把自己的DLL注入到另一个进程,然后再使用JMP方法来实现API的截获,这种技术的另一个用处就是隐藏进程,很多病毒木马也是利用这个技术来隐藏自己...但是通过 CreateRemoteThread 注入DLL的技术在Win系统中已经不能简单的使用了,Win系统在很多方面都加强了安全性,限制了很多的API的调用,那么如何简单的来做到DLL注入和API...使用这个技术可以做很多“坏事”,比如刚才提到的截获进程的网络收发数据,还有就是对软件的破解或者去时除限制,举例:假设一个软件是试用软件,试用7天,最笨的办法就是改本机时间,但如果用API HOOK技术就可以很容易做到

3.5K40

DLL injection

比如说进程B修改了地址为0x4000000的数据,那么进程C的地址为0x4000000处的数据并未随着B的修改而发生改变,并且进程C可能并不拥有地址为0x4000000的内存(操作系统可能没有进程C映射这块内存...因此,如果某进程有一个缺陷覆盖了随机地址处的内存(这可能导致程序运行出现问题),那么这个缺陷并不会影响到其他进程所使用的内存。   ...4.控制进程运行DLL文件 主要用到的几个函数: OpenProcess、VirtualAllocEx、WriteProcessMemory、CreateRemoteThread 既然是dll注入,那么我们肯定需要一个...在上面的注入方式中,我们使用了CreateRemoteThread来进行dll注入,而这个方式在具有Sysmon的系统中会留下Event ID 8的痕迹。...因为没有使用LoadLibrary函数,要想实现DLL的加载运行,我们需要在DLL中添加一个导出函数,ReflectiveLoader,这个函数实现的功能就是加载自身。

2.2K40

恶意软件开发——突破SESSION 0 隔离的远线程注入

一、前言 在Windows XP,Windows Server 2003以及更早的版本中,第一个登录的用户以及Windows的所有服务都运行在Session 0上,这样的做法导致用户使用的应用程序可能会利用...2516793-20210914214752824-554766548.png 二、突破SESSION 0 思路 由于SESSION 0隔离机制,导致传统远程线程注入系统服务进程失败。...和传统的CreateRemoteThread函数实现的DLL远线程注入的唯一一个区别就是,我们调用的是更为底层的ZwCreateThreadEx来创建线程, 虽然CreateRemoteThread函数到底层也是调用...三、代码实现 ZwCreateThreadEx在 ntdll.dll 中并没有声明,所以我们需要使用 GetProcAddress 从 ntdll.dll 中获取该函数的导出地址。...,在目标进程空间中申请内存空间,然后把我们的DLL写入到内存空间中,最后创建线程等待执行。

62220

技术分享 | DLL注入之远线程注入

返回值: 成功:返回不为0 失败:返回0 ---- CreateRemoteThread 作用: 在另一个进程的虚拟地址空间中创建运行的线程。...函数声明: HANDLE WINAPI CreateRemoteThread(     _In_  HANDLE                 hProcess,     _In_  LPSECURITY_ATTRIBUTES...4、通过CreateRemoteThread函数加载LoadLibrary函数的地址,进行DLL注入。...在CreateRemoteThread函数调用ZwCreateThreadEx函数时,由于ZwCreateThreadEx第七个参数为1,会导致线程创建后一直处于挂起状态,因此我们需要设置ZwCreateThreadEx...由于在ntdll.dll中,ZwCreateThreadEx并没有被声明,因此需要使用GetProcAddress导出地址 函数声明: win64下: DWORD WINAPI ZwCreateThreadEx

82640

远程进程Shellcode注入调试技巧

注入已有进程: OpenProcess —> WriteProcessMemory —> CreateRemoteThread; 创建进程注入: CreateProcess —> WriteProcessMemory...找到上下文地址后,只需要断在CreateRemoteThread或ResumeThread函数上,使用WinHex打开程序要注入的进程,将该上下文地址处的代码修改为JMP到当前地址(或0xCC,此处可以发散一下...,只要是能够想办法断下来即可),再单步步过(F8)CreateRemoteThread/ResumeThread,使用OD附加到注入的进程,断在上下文地址处,再将代码修改回原来的代码即可继续执行。...调试宏代码,该样本的宏代码没有经过混淆,可以清晰的看到其将shellcode硬编码赋值给一个数组,这里的数据长这样: ?...如果修改为0xCC,需要注意,应该把调试器的实时调试设置选成“附加前无需确认”,这样进程启动后才会自动附加到OD进行调试(记得将内存修改回原值,如果没有自动附加,就手动附加一下进程): ?

1.6K21

技术分享 | DLL注入之远线程注入

0x00 远线程注入 远线程注入是指一个进程在另一个进程中创建线程的技术。 0x01 函数介绍 OpenProcess 作用: 打开现有的本地进程对象。...返回值: 成功:返回不为0 失败:返回0 ---- CreateRemoteThread 作用: 在另一个进程的虚拟地址空间中创建运行的线程。...4、通过CreateRemoteThread函数加载LoadLibrary函数的地址,进行DLL注入。...在CreateRemoteThread函数调用ZwCreateThreadEx函数时,由于ZwCreateThreadEx第七个参数为1,会导致线程创建后一直处于挂起状态,因此我们需要设置ZwCreateThreadEx...由于在ntdll.dll中,ZwCreateThreadEx并没有被声明,因此需要使用GetProcAddress导出地址 函数声明: win64下: DWORD WINAPI ZwCreateThreadEx

1.2K20

进程注入 OPSEC tips

这篇文章将分析最经典的注入方法: VirtualAllocEx WriteProcessMemory CreateRemoteThread 内存分配 VirtualAllocEx将在目标进程中分配一个新的内存区域...执行 Shellcode CreateRemoteThread在目标进程中创建一个将执行 shellcode 的新线程。线程的起始地址将指向保存 shellcode 的内存区域。...如果我们进一步检查目标进程中的内存区域,可以看到每个RX 区域都由磁盘上的一个模块支持,但是明显包含 shellcode 的区域并没有任何的。如果使用了 RWX,那么它很可能是整个内存中唯一的RWX。...注入模式这种,两个主要 OPSEC 问题是 RX 内存区域和没有磁盘模块支持的执行线程。...与以前不同的是,我们没有额外的线程不会返回到模块,并且Get-InjectedThread检测不到。 PS C:\Tools> ipmo .

46930
领券