回 帖 发 新 帖 刷新版面

主题:[讨论]00401020这个地址有什么特别含义吗 ?

我发现如果源代码中只要一个主函数main和一个子函数时,这个子函数的入口地址在VC下编译得到总是00401020,不知道这个值是不是有什么特别的地方 ?

回复列表 (共6个回复)

沙发

没啥,你可以在编译选项里设置基址,这样出来的就不是这数了:)

板凳

在保护模式下不用关心这个问题,看着是这个地址但是经过内存映射后不知道被映射到哪去了

3 楼

反解壳及PE结构分析时会有点儿用:)
楼主注意到这细节还是不错的:)

如果多一些这样的思考,再加上一个精于做架构的人,那“中国制造”的编译器就不远了:)

4 楼

谢谢夸奖,真的是一个基址吗?我发现release版本就不使用这个地址

5 楼

你可以在编译选项里找到这个东西:
0x00400000
这东西就是程序起始地址。
当然,这个还不是main的地址,它是MainLoader——也就是CRT0main的起始地址(不同的编译器名称不一样,它用于初始化全局变量及调用OnExit、OnStatup、main等函数,还有清理现场,根据main函数的返回值设置进程返回值等功效(知道为啥main函数要有返回值了吧,呵呵)
:)

6 楼

[quote]你可以在编译选项里找到这个东西:
0x00400000
这东西就是程序起始地址。
当然,这个还不是main的地址,它是MainLoader——也就是CRT0main的起始地址(不同的编译器名称不一样,它用于初始化全局变量及调用OnExit、OnStatup、main等函数,还有清理现场,根据main函数的返回值设置进程返回值等功效(知道为啥main函数要有返回值了吧,呵呵)
:)[/quote]

您说的这些应该就是startupfile做的事情

我来回复

您尚未登录,请登录后再回复。点此登录或注册