能力值:
( LV2,RANK:10 )
|
-
-
2 楼
這歌我帮不上忙。不过帮你顶一下。让好心的大虾们看到。帮楼主解答一下。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
在PE中可以看到啊
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
vc2008
每个 程序可使用的内存空间是2g 分页的 不连续的 程序的内存地址不是物理内存的地址 是种映射关系
我获取内存结构的一段代码
放入m_list1 (listbox)
// m_procombobox.GetItemData(csnum)是pid
DWORD ret;
DWORD st;
st=0;
int csnum;
MEMORY_BASIC_INFORMATION mBuffer;//内存结构
HANDLE hhand=OpenProcess(PROCESS_QUERY_INFORMATION,0,m_procombobox.GetItemData(csnum));//由程序的pid获取句柄
ret=VirtualQueryEx(hhand,(LPCVOID)st,&mBuffer,sizeof(mBuffer));//获取第一段内存的信息
m_list1.ResetContent();
while (ret>=sizeof(mBuffer))
{
if(mBuffer.State==MEM_COMMIT)//这段是已分配内存或者系统页文件
{
//if (mBuffer.Protect==PAGE_READWRITE)//这段内存保护模式是可读写
//{
CString temp;
temp.Format(_T("%16x"),(DWORD)mBuffer.BaseAddress);
int listnum=m_list1.GetCount();
if (listnum==-1)
listnum=0;
m_list1.InsertString(listnum,temp);
m_list1.SetItemData(listnum,(DWORD)mBuffer.RegionSize);
//}
//CString temp;
// temp="起始地址:"+mBuffer->BaseAddress.+"大小:"+mBuffer->RegionSize;
// m_list1.InsertString(temp);
}
st=(DWORD)mBuffer.BaseAddress+mBuffer.RegionSize;//下一段内存的起点
ret=VirtualQueryEx(hhand,(LPCVOID)st,&mBuffer,sizeof(mBuffer));//获取下一段内存的信息
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
学习
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
非常感谢doufu!我试试看先!
|
|
|