Mas*_*ask 10 x86 memory-management relocation disassembly
我正在拆解可执行文件:
(gdb) disas main
Dump of assembler code for function main:
0x004012d0 <main+0>: push %ebp
0x004012d1 <main+1>: mov %esp,%ebp
...
Run Code Online (Sandbox Code Playgroud)
每次内存地址相同:0x004012d0.
操作系统不是要动态分配的内存地址吗?
UPDATE
现在我看到它的虚拟空间,它可以在某些平台上随机化.
有人可以发布更改的gdb转储吗?
小智 -3
为什么操作系统会选择不同的地址?
当操作系统执行进程时,它将可执行文件加载到虚拟内存空间中。在此过程中,它将解析任何相对和/或符号引用。假设您有相同的可执行文件和相同的共享库,并以与上次相同的方式启动它,那么操作系统决定以不同的方式加载可执行文件会很奇怪。