从反汇编中看exe程序的运行原理谢谢了,大神帮忙啊

从源代码到编译连接之后生成exe文件之后我想知道exe文件究竟是怎么加载带内存之上来运行的。帮我分析一下下面一行的反汇编之后的代码: ::00401075:: 8B4D FC MOV ECX,[EBP-4] ::00401078:: C1E1 02 SHL ECX,2 ::0040107B:: 51 PUSH ECX 这个是用C32Asm反编译的,后面的汇编代码就没什么好解释的了,主要是:前面的00401075这个地址是程序运行时加载到内存中的地址吗?这个地址后面的是偏移地址吗?

每一个windows进程都映射到独立的4G(32位)的虚拟地址空间里面的,而不是直接访问物理内存的。 也就是说,每个进程都有属于她自己独立的私有空间,他们不可能被加载到同一个物理内存位置的,假设进程1在0x00401075这个地方有代码,进程2在0x00401075这个地方也有代码,他们也不是可能是重复的。 而win2000以后的系统(32位非3G模式)用户方式下的内存是由0x00010000开始的,exe文件映像被加载到其中起始地址为0x00400000的空间里面(个人觉得这个0x00400000可能是为了兼容win98的程序的原因,因为win98的用户方式地址分区是由0x00400000开始的)。 所以这里的0x00400000就是楼上说的那个基地址。而他们怎么加载就要看exe文件头里面的定义了。

满意请采纳
温馨提示:答案为网友推荐,仅供参考