主题:[讨论]00401020这个地址有什么特别含义吗 ?
vfdff
[专家分:740] 发布于 2010-08-09 00:15:00
我发现如果源代码中只要一个主函数main和一个子函数时,这个子函数的入口地址在VC下编译得到总是00401020,不知道这个值是不是有什么特别的地方 ?
回复列表 (共6个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2010-08-09 16:37:00
没啥,你可以在编译选项里设置基址,这样出来的就不是这数了:)
板凳
强强 [专家分:4740] 发布于 2010-08-09 17:34:00
在保护模式下不用关心这个问题,看着是这个地址但是经过内存映射后不知道被映射到哪去了
3 楼
cgl_lgs [专家分:21040] 发布于 2010-08-09 23:06:00
反解壳及PE结构分析时会有点儿用:)
楼主注意到这细节还是不错的:)
如果多一些这样的思考,再加上一个精于做架构的人,那“中国制造”的编译器就不远了:)
4 楼
vfdff [专家分:740] 发布于 2010-08-10 00:21:00
谢谢夸奖,真的是一个基址吗?我发现release版本就不使用这个地址
5 楼
cgl_lgs [专家分:21040] 发布于 2010-08-10 00:34:00
你可以在编译选项里找到这个东西:
0x00400000
这东西就是程序起始地址。
当然,这个还不是main的地址,它是MainLoader——也就是CRT0main的起始地址(不同的编译器名称不一样,它用于初始化全局变量及调用OnExit、OnStatup、main等函数,还有清理现场,根据main函数的返回值设置进程返回值等功效(知道为啥main函数要有返回值了吧,呵呵)
:)
6 楼
vfdff [专家分:740] 发布于 2010-08-14 23:51:00
[quote]你可以在编译选项里找到这个东西:
0x00400000
这东西就是程序起始地址。
当然,这个还不是main的地址,它是MainLoader——也就是CRT0main的起始地址(不同的编译器名称不一样,它用于初始化全局变量及调用OnExit、OnStatup、main等函数,还有清理现场,根据main函数的返回值设置进程返回值等功效(知道为啥main函数要有返回值了吧,呵呵)
:)[/quote]
您说的这些应该就是startupfile做的事情
我来回复