jjzjj

CreateRemoteThread

全部标签

windows - CreateRemoteThread 如何在幕后工作?

CreateRemoteThread做了什么来实际创建远程线程? 最佳答案 在内核中,最底层的线程创建函数实际上只是创建一个线程对象,将它连接到一个进程并使其可运行。CreateThread和CreateRemoteThread实际上是相同的API并且工作方式相同,唯一的区别是CreateThread只允许您在当前进程中创建线程,而CreateRemoteThread允许您指定一个进程来创建线程。这意味着CreateThread与CreateRemoteThread(GetCurrentProcess(),....)几乎相同

c++ - CreateRemoteThread 因 ERROR_NOT_ENOUGH_MEMORY 而失败

这是一个很奇怪的问题,但我相信,这是SO的主题。简介:我有一个用C#编写的服务,它调用我的C++库。C++库通过WinExec执行一些3rdparty软件。第3方软件通过CreateRemoteThread注入(inject)DLL。我没有此软件的源文件。主要部分我有2台电脑-Win2008和Win10。对于Win10-这个科学怪人工作完美,服务运行DLL,DLL运行3rdpartyDLL注入(inject)器,DLL注入(inject)器注入(inject)东西。对于Win2008,情况有所不同。如果我从CMD运行3rdpartyDLL注入(inject)器-它可以完美运行。但是,如

C++ - CreateRemoteThread DLL 注入(inject) [Windows 7]

无论我在哪里看,通过CreateRemoteThread注入(inject)的方法都是一样的,但是获取进程ID的方法却不同......我的函数将返回正确的进程ID,我对这方面的任何帮助都不感兴趣,所以我会将那部分作废,只包括实际注入(inject)。我只是刚刚学习DLL注入(inject),并试图在notepad.exe上进行。如果注入(inject)有效,记事本的标题将从“Untitled-Notepad”变为“Hooked”。#defineDLL_NAME"injectme.dll".....BOOLInjectRemoteThread(DWORDProcessID){HANDLE

windows - 是否需要调整 token 权限才能成功调用 CreateRemoteThread?

我正在为我的应用程序开发一个调试工具来帮助我诊断死锁。该应用程序在我客户的机器上运行,因此我希望有广泛的操作系统、安全策略等。我使用的技术是在目标应用程序中实现一个函数,该函数为所有线程生成堆栈跟踪以及其他诊断信息。然后将其写入内存映射文件。我还创建了一个实用程序,用于触发诊断报告的创建,然后从内存映射文件中读取它。因为目标应用程序预计会死掉,所以实用程序无法向它发送消息来触发诊断收集。相反,我正在使用CreateRemoteThread,这样我就可以确保获得一个事件线程来完成工作。请注意,这与通常使用LoadLibrary作为CreateRemoteThread的线程过程的DLL注入

c++ - 通过调用 CreateRemoteThread : crash 弹出 dll

我正在尝试为自己制作一个从进程中提取/释放dll的工具。我已经体验过LoadLibrary和注入(inject),但这次逻辑似乎不适用。这是我的代码:HMODULEfindModuleOffset(HANDLEproc,char*mod_name){//Findsmoduleaddressinspecifiedprocess.0ifnotfoundHMODULEhMods[2048];DWORDmodules_byte_size;if(EnumProcessModules(proc,hMods,sizeof(hMods),&modules_byte_size)){for(unsigne

c++ - 在注入(inject)的 DLL 中调用函数

我想在我创建的注入(inject)DLL的远程进程中调用一个函数。我已经成功地将我的DLL注入(inject):CreateRemoteThread(pHandle,NULL,0,(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("kernel32"),"LoadLibraryA"),pLibRemote,0,NULL);DllMain被执行,DLL以待机模式运行。我想做的是以某种方式调用远程加载的DLL以完成一些工作。我试过像这样导出函数:extern"C"__declspec(dllexport)voidMyFunc(vo

windows - 仅注入(inject)函数并通过 CreateRemoteThread 运行它? C++

我正在尝试注入(inject)这个函数:voiddoubleValue(intpointer){*((int*)pointer)*=2;}通过VirtualAllocEx&WriteProcessMemory进入进程:intsize=1024*1024*4;HANDLEh=GetCurrentProcess();void*func=&doubleValue;intarg=(int)&HP;DWORDadr=(DWORD)VirtualAllocEx(h,0,size,MEM_COMMIT,PAGE_EXECUTE_READWRITE);WriteProcessMemory(h,(LPV

c++ - 使用 CreateRemoteThread 注入(inject) DLL

如果您看一下以下简单DLL注入(inject)的工作代码://Openthetargetprocesswithread,writeandexecutepriviledgesProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_QUERY_INFORMATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_VM_OPERATION,FALSE,ID);//GettheaddressofLoadLibraryALoadLibrary=(LPVOID)GetProcAddress(GetModuleHandl

c++ - 使用 CreateRemoteThread 注入(inject) DLL

如果您看一下以下简单DLL注入(inject)的工作代码://Openthetargetprocesswithread,writeandexecutepriviledgesProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_QUERY_INFORMATION|PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_VM_OPERATION,FALSE,ID);//GettheaddressofLoadLibraryALoadLibrary=(LPVOID)GetProcAddress(GetModuleHandl

c++ - CreateRemoteThread:内存管理

我想知道CreateRemoteThread的LPVOIDlpParameter参数功能。因为进程不共享内存,所以远程线程无法访问我们进程中的结构。那么,函数是复制参数并自行管理还是我们需要用VirtualAllocEx分配内存?然后调用WriteProcessMemory实际将结构复制到远程进程中? 最佳答案 CreateRemoteThread不会对lpParameter进行任何自动管理。您是对的,开发人员有责任确保lpParameter是目标进程上下文中的有效指针。VirtualAllocEx和WriteProcessMemo
12