首页
社区
课程
招聘
[求助]用OD附加一进程,列表里面竟然没有!但在任务管理器中可见!
发表于: 2008-4-16 16:59 5528

[求助]用OD附加一进程,列表里面竟然没有!但在任务管理器中可见!

2008-4-16 16:59
5528
在程序中用CreateProcess执行IE,但设了DEBUG_ONLY_THIS_PROCESS标志。

主要代码如下:
	while (::WaitForDebugEvent(&dbgEvent, INFINITE))
	{
		if (dbgEvent.dwDebugEventCode == EXIT_PROCESS_DEBUG_EVENT)
		{
			break;
		}		
		if (dbgEvent.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT)
		{
			//将IE的PE头读入,然后判断程序的入口点
			DWORD	numRead = 0;
			::ReadProcessMemory(pi.hProcess, dbgEvent.u.CreateProcessInfo.lpBaseOfImage, lpBuffer, 4096, &numRead);
			IMAGE_DOS_HEADER* pDosHeader = (IMAGE_DOS_HEADER*)lpBuffer;
			IMAGE_OPTIONAL_HEADER * pOptHeader =
				(IMAGE_OPTIONAL_HEADER *)((BYTE *)lpBuffer + pDosHeader->e_lfanew + 24);
			lpBaseAddr = pOptHeader->AddressOfEntryPoint;
			
			//在入口点,即WInMain处的第一个字节设为0xcc,即int 3中断
			SetBreakPoint(pi.hProcess, (LPVOID)lpBaseAddr, 0xcc);
			
			//继续执行进程
			ContinueDebugEvent(pi.dwProcessId, pi.dwThreadId, DBG_CONTINUE);
		}
		if (dbgEvent.dwDebugEventCode == EXCEPTION_DEBUG_EVENT)
		{
			//将入口点再改回原来的
			SetBreakPoint(pi.hProcess, (LPVOID)lpBaseAddr, b);
			ContinueDebugEvent(pi.dwProcessId, pi.dwThreadId, DBG_CONTINUE);
		}


我想用OD载入IE,然后看一下是否真的把入口点给改了,但是,附加进程里面没有iexplore.exe进程!!!
然后用WinDbg,F6之后,也没有!!!
但是,在任务管理器中却可见iexplore.exe进程!!!!

这是为什么呢???

3Q

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
哦,有人跟我说,任务管理器用的ZwQuerySystemInformation函数,而OD可能用的PSAPI
恩,应该是的吧

但现在的问题不考虑这个了

为什么这段代码执行的时候,好像死循环了~~~
我单步调试的时候发现:
当while 执行两次之后,程序就会停到那儿不动了,再执行也没反应了。

第一次if (dbgEvent.dwDebugEventCode == CREATE_PROCESS_DEBUG_EVENT)成立,然后改入口点的代码为0xcc
但继续运行之后,第二次:
if (dbgEvent.dwDebugEventCode == EXCEPTION_DEBUG_EVENT)不会成立!!!
晕,怎么会不成立呢?
int 3不就是产生的EXCEPTION_DEBUG_EVENT吗???

难道这地方有问题????
2008-4-16 17:57
0
游客
登录 | 注册 方可回帖
返回
//