这个分数可能归我了,解释看你满意不?
1. Win32应用程序就是由一个个模块dll构成的,每次程序运行时,由loader装入组装成应用程序.所以说它是动态的,不过,每个模块装入的地址一般都是固定的
2. 这个地址由谁指定呢?在模块的export项中,把以loader在装入dll时,这些dll的指定的装入地址不会有冲突,loader就会把dll模块装入指定区域,否则loader必须重装入,并且修改其它模块的import项,这样,很耽误时间呀.
3. VC编译器生成的exe模块的输出地址:0x00400000
4. VC编译器生成的dll模块的输出地址:0x10000000
5. 系统dll的地址一般为:0x770000000
6. 每个编译器可以改变缺省输出地址,可以指定另外的一个输出装入地址
7. 想知道每个模块装入的起始地址及结束地址,可以用depends查看.
8. 在Debug运行下,也可以看到各模块动态装入的地址
1. Win32应用程序就是由一个个模块dll构成的,每次程序运行时,由loader装入组装成应用程序.所以说它是动态的,不过,每个模块装入的地址一般都是固定的
2. 这个地址由谁指定呢?在模块的export项中,把以loader在装入dll时,这些dll的指定的装入地址不会有冲突,loader就会把dll模块装入指定区域,否则loader必须重装入,并且修改其它模块的import项,这样,很耽误时间呀.
3. VC编译器生成的exe模块的输出地址:0x00400000
4. VC编译器生成的dll模块的输出地址:0x10000000
5. 系统dll的地址一般为:0x770000000
6. 每个编译器可以改变缺省输出地址,可以指定另外的一个输出装入地址
7. 想知道每个模块装入的起始地址及结束地址,可以用depends查看.
8. 在Debug运行下,也可以看到各模块动态装入的地址
解决方案 »
- VS2008如何同时去掉多个断点,并非去掉所有断点???
- 树控件中的图标不能显示
- 如何隐藏计算器等程序?
- vc++6.0 CPU 2.0G 内存 DDR2667 2000万次循环大概多久
- 如何改变向导对话框中按钮的style
- 下周去华为面试,大家给提点意见~~~
- 刚学VC不久,有个问题请教大家,我在使用CArchive类时,为是么我不能向文件中追加数据呢呢,希望大家能帮帮我,我在线等待,谢谢了
- 请问,在多个不同页面(数据不同)调用activex控件,却会显示同样的记录数据
- 各位大虾帮一下忙
- 红眼大虾们:吐血大送分,进来看看!
- win调试!
- 如何创建一个目录共享(只读)请看下面代码中的??????????????????部分(紧急,请高手指点)
我的作品里的进程列表。注:win9X下不能运行。
#define DEVICE_MAIN
#include "heap.h"
Declare_Virtual_Device(HEAP)
#undef DEVICE_MAINHeapVM::HeapVM(VMHANDLE hVM) : VVirtualMachine(hVM) {}HeapThread::HeapThread(THREADHANDLE hThread) : VThread(hThread) {}BOOL HeapDevice::OnSysDynamicDeviceInit()
{
PVOID plin=0;
MEMHANDLE hMem=0;
hMem=GetNulPageHandle();
dout<<"NULL page Handle: "<<hMem<<endl;
if(!(plin=HeapAllocate(100,HEAPZEROINIT)))
{
dout<<"HeapAllocate Error"<<endl;
return FALSE;
}
dout<<"HeapAllocate Address: "<<(DWORD)plin<<endl;
MEMORY_BASIC_INFORMATION mbi;
memset(&mbi,0,sizeof(mbi));
if(!(PageQuery((DWORD)plin,&mbi,sizeof(mbi))))
{
dout<<"PageQuery Error"<<endl;
return FALSE;
}
Show_Mem_Info(&mbi);
char *srcdata="123456789";
char *desdata=0;
memset(desdata,0,10);
_asm
{
pushad
mov eax,plin
mov edi,eax
mov eax,srcdata
mov esi,eax
mov ecx,10
rep movsb
mov eax,plin
mov esi,eax
mov eax,desdata
mov edi,eax
mov ecx,10
rep movsb
popad
}
dout<<"srcdata: "<<srcdata<<endl;
dout<<"desdata: "<<desdata<<endl;
if(!(HeapFree(plin,0)))
{
dout<<"HeapFree Error"<<endl;
return FALSE;
}
return TRUE;
}void HeapDevice::Show_Mem_Info(PMEMORY_BASIC_INFORMATION mbi)
{
dout<<"Basic_Address: "<<mbi->mbi_BaseAddress<<endl;
dout<<"AllocationBase: "<<mbi->mbi_AllocationBase<<endl;
dout<<"AllocationProtect: ";
Show_Info(mbi->mbi_AllocationProtect);
dout<<"RegionSize: "<<mbi->mbi_RegionSize<<endl;
dout<<"State: ";
Show_Info(mbi->mbi_State);
dout<<"Protect: ";
Show_Info(mbi->mbi_Protect);
dout<<"Type: ";
Show_Info(mbi->mbi_Type);
}void HeapDevice::Show_Info(DWORD info)
{
if(info&MEM_COMMIT) dout<<"Memory Commited"<<endl;
if(info&MEM_FREE) dout<<"Memory Free"<<endl;
if(info&MEM_RESERVE) dout<<"Memory Reserve"<<endl;
if(info&MEM_PRIVATE) dout<<"Memory Private"<<endl;
if(info&PAGE_NOACCESS) dout<<"Memory NoAccess"<<endl;
if(info&PAGE_READONLY) dout<<"Memory ReadOnly"<<endl;
if(info&PAGE_READWRITE) dout<<"Memory ReadWrite"<<endl;
}
这是Vxd的查看系统那内存地址的代码!
有没有别的方法啊?