首页
社区
课程
招聘
[求助]wince下怎样获得进程的base addr或得到输入表
发表于: 2009-8-20 12:38 6808

[求助]wince下怎样获得进程的base addr或得到输入表

2009-8-20 12:38
6808
rt, 谢过先!
用HANDLE hHandle = GetModuleHandle(NULL);能够获得当前进程的句柄
在win32下模块的句柄数值上等于在内存中装入的起始地址base addr
但在wince下用remote process viewer看下来句柄值却等于进程的pid
请问wince下有没有api能够根据进程的hHandle或者pid来得到其内存装入地址呢
想通过得到base  addr进而得到image_dos_header和image_NT_header,再得到import table
不知道这种方法能不能走得通
或有没有其他方法得到进程的pe内存映像的输入表呢

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 126
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
windows ce 5 以及以下版本可以先通过pid获取本进程所在的slot,获取base addr,读之即可。
ce 6下要绕几个弯子。建议楼主先研究下windows ce的内存结构。
2009-8-21 10:01
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mowenli,十分感谢!
我是要在wince5.0下弄这件事情,能不能再具体点呢
msdn上也搜了一下,没有找到相应的api诶

wince 的内存结构是看了一些时间
2009-8-21 13:43
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
并没有找到像mowenli所说的用pid得到slot number的方法
要是哪位高手知道的话还望告之啊 3x
现在变通地通过用Toolhelp32Snapshot的方法遍历比较得到目标进程的slot number和base addr
	HANDLE hProcessSnap;
	PROCESSENTRY32 pe32;
	int slot;
	DWORD *dwBaseAddr;
	hProcessSnap = 
		CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS|TH32CS_SNAPNOHEAPS, 0 );
	if( hProcessSnap != INVALID_HANDLE_VALUE )
	{
		memset(&pe32,0x00,sizeof(PROCESSENTRY32));
		pe32.dwSize = sizeof( PROCESSENTRY32 );

		if( Process32First( hProcessSnap, &pe32 ) )
		{
			do
			{
				//hDestMoudle目标进程的句柄,wince5.0下也即pid
				if (pe32.th32ProcessID == (DWORD)hDestMoudle)
				{
					//slot number 
					slot = pe32.th32MemoryBase/0x02000000;
					//base addr基地址
					dwBaseAddr = (DWORD *)pe32.th32MemoryBase;
					
					//尝试得到目标进程在内存中映像的dos头或pe头 但发现结构中均为0
					PIMAGE_DOS_HEADER pDOSHeader = (PIMAGE_DOS_HEADER)dwBaseAddr;

					if (IsBadReadPtr(pDOSHeader,sizeof(IMAGE_DOS_HEADER)))
					{
						PIMAGE_NT_HEADERS pNTHeader = (PIMAGE_NT_HEADERS)dwBaseAddr;
						if (IsBadReadPtr(pNTHeader,sizeof(PIMAGE_NT_HEADERS)))
							return;
					}
				}
			} while( Process32Next( hProcessSnap, &pe32 ) );
		}

		CloseToolhelp32Snapshot( hProcessSnap );
	}


为了简便试验中的目标进程就是当前进程
现在想得到进程的输入表,就想通过base addr得到pe在内存映像中的dos头或pe头,但是未果。
不知是不是因为wince下加载pe文件的方式不同还是?
还望高手指点!3x
要是谁有wince 下pe内存映射的资料麻烦贴一下,谢过先
2009-8-21 17:35
0
雪    币: 108
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
自己up一下
期待高手指点
2009-9-17 10:09
0
游客
登录 | 注册 方可回帖
返回
//