我调CreateProcess

iwillalwaysloveyou 2009-07-27 04:18:02

PROCESS_INFORMATION pi;
CreateProcess(_T("test.exe"),NULL,NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,NULL,NULL,&pi);//ok
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,pi->dwProcessId);//ok

MODULEINFO mi;
GetModuleInformation(hProcess,NULL,&mi,sizeof(mi));//failed

上面的最后一步,得到的模块信息有问题。mi.SizeOfImage和mi.EntryPoint有正确的结果,但mi.lpBaseOfDll无效。

原因应该是系统在创建一个进程的时候,如果是以暂停方式创建,系统没有加载进程代码。

如何让进程在以暂停方式创建时,加载其可执行程序的代码?
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwillalwaysloveyou 2009-07-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 greatws 的回复:]
我也这样想过,根本就不好用,而且不知道什么原因。
http://topic.csdn.net/u/20090427/16/3147cd76-4d00-4298-86ed-c4b47c4bb76c.html
[/Quote]

我也是hook CreateProcess
greatws 2009-07-27
  • 打赏
  • 举报
回复
我也这样想过,根本就不好用,而且不知道什么原因。
http://topic.csdn.net/u/20090427/16/3147cd76-4d00-4298-86ed-c4b47c4bb76c.html
iwillalwaysloveyou 2009-07-27
  • 打赏
  • 举报
回复
我原始代码里是有LPSTARTUPINFO的,

如果进程不暂停,结果是正确的
路人乙2019 2009-07-27
  • 打赏
  • 举报
回复
如果在时宜程管理器中看得到test.exe那就应该加载了啊.是不是参数少了一个LPSTARTUPINFO的引起的.
iwillalwaysloveyou 2009-07-27
  • 打赏
  • 举报
回复
有没有什么办法在ResumeThread之前,让hProcess加载其可执行程序的代码?
1. 创建进程 CreateProcess() 调用的核心参数是可执行文件运行时的文件名及其命令行。下表详细地列出了每个参数的类型和名称。 CreateProcess() 函数的参数 2. 正在运行的进程 如果一个进程拥有至少一个执行线程,则为正在系统中运行的进程。当调用ExitProcess() API函数,通知系统终止它所拥有的所有正在运行、准备运行或正在挂起的其他线程。当进程正在运行时,可以查看它的许多特性。 首先可利用GetCurrentProcessId() 函数来查看的进程特性是进程标识符 (PID),返回的PID在整个系统中都可使用。其他的可显示当前进程信息的API函数如GetStartupInfo()和GetProcessShutdownParameters() 可给出进程的配置信息。 通常,一个进程需要它的运行期环境的信息。例如API函数GetModuleFileName() 和GetCommandLine() ,可以给出用在CreateProcess() 中的参数以启动应用程序。 用GetGuiResources() 来查看进程的GUI资源。此函数既可返回指定进程中的打开的GUI对象的数目,也可返回指定进程中打开的USER对象的数目。进程的其他性能信息可通过GetProcessIoCounters()、GetProcessPriorityBoost() 、GetProcessTimes()、GetProcessWorkingSetSize() 和GetProcessVersion()得到。 3. 终止进程 所有进程都是以调用ExitProcess() 或者TerminateProcess() 函数结束的。最好用前者而不要用后者,因为进程是在完成了它的所有的关闭任务之后以正常的终止方式来调用前者的。而外部进程通常调用后者即突然终止进程的进行,由于关闭时的途径不太正常,有可能引起错误的行为。
PCHunter中文版是一款非常牛系统信息查看工具,也是非常好用的手动杀毒神器,它可以通过例如:进程管理、驱动模块、内核钩子、网络管理,注册表、文件管理、启动项等,通过这些系统信息来找到恶意软件并从系统中清除它们。 PC Hunter 功能特点: 1、进程、线程、进程模块、进程窗口、进程内存信息查看,杀进程、杀线程、卸载模块等功能 2、内核驱动模块查看,删除驱动、卸载驱动、支持内核驱动模块的内存拷贝 3、SSDT、Shadow SSDT、FSD、KBD、TCPIP、Nsiproxy、Tdx、Classpnp、Atapi、Acpi、SCSI、IDT、GDT信息查看,并能检测和恢复ssdt hook和inline hook 4、CreateProcess、CreateThread、LoadImage、CmpCallback、BugCheckCallback、Shutdown、Lego等近20多种Notify Routine信息查看,并支持对这些Notify Routine的删除 5、端口信息查看,目前不支持2000系统 6、查看消息钩子 7、内核模块的iat、eat、inline hook、patches检测和恢复 8、磁盘、卷、键盘、网络层等过滤驱动检测,并支持删除 9、注册表编辑 10、进程iat、eat、inline hook、patches检测和恢复 11、文件系统查看,支持基本的文件操作 12、查看(编辑)IE插件、SPI、启动项、服务、Hosts文件、映像劫持、文件关联、系统防火墙规则、IME 13、ObjectType Hook检测和恢复 14、DPC定时器检测和删除 15、MBR Rootkit检测和修复 16、内核对象劫持检测 17、WorkerThread枚举 18、Ndis中一些回调信息枚举 19、硬件调试寄存器、调试相关API检测 20、枚举SFilter/Flgmgr的回调 21、系统用户名检测

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧