gpt4 book ai didi

linux - 奇怪的 ELF 二进制文件

转载 作者:IT王子 更新时间:2023-10-29 00:36:11 24 4
gpt4 key购买 nike

我有一个奇怪的 ELF 二进制文件。我可以在 32 位 Linux 中运行这个二进制文件。

但是如果我用 IDA 反汇编器打开这个二进制文件,IDA 会提示“入口点无效”。

readelf结果如下:

root@meltdown-VirtualBox:/home/meltdown# readelf -S -l SimpleVM 

There are no sections in this file.

Elf file type is EXEC (Executable file)
Entry point 0xc023dc
There are 2 program headers, starting at offset 52

Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
LOAD 0x000000 0x00c01000 0x00c01000 0x013c7 0x013c7 RWE 0x1000
LOAD 0x00019c 0x0804b19c 0x0804b19c 0x00000 0x00000 RW 0x1000

没有部分。我以为这个二进制文件是打包的。但是,第一个 LOAD 段的最后一个虚拟地址是 0xc023c7。入口点的虚拟地址是0xc023dc,超出范围...

谁能告诉我发生了什么事?

提前谢谢你。

  • /proc/PID/maps如下(创建了两个进程...)

    root@meltdown-VirtualBox:/proc/3510# cat maps
    00110000-00111000 rwxp 00000000 00:00 0
    006c0000-006c1000 r-xp 00000000 00:00 0 [vdso]
    007d2000-007d4000 rwxp 00000000 00:00 0
    00c01000-00c02000 rwxp 00000000 08:01 3801242 /home/meltdown/SimpleVM
    00ca4000-00e43000 r-xp 00000000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so
    00e43000-00e45000 r-xp 0019f000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so
    00e45000-00e46000 rwxp 001a1000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so
    00e46000-00e49000 rwxp 00000000 00:00 0
    08048000-0804b000 r-xp 00000000 00:00 0
    0804b000-0804c000 rwxp 00000000 00:00 0
    b77a7000-b77c7000 r-xp 00000000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so
    b77c7000-b77c8000 r-xp 0001f000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so
    b77c8000-b77c9000 rwxp 00020000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so
    bfa90000-bfab1000 rwxp 00000000 00:00 0 [stack]

    root@meltdown-VirtualBox:/proc/3511# cat maps
    00110000-00111000 rwxp 00000000 00:00 0
    006c0000-006c1000 r-xp 00000000 00:00 0 [vdso]
    007d2000-007d4000 rwxp 00000000 00:00 0
    00c01000-00c02000 rwxp 00000000 08:01 3801242 /home/meltdown/SimpleVM
    00ca4000-00e43000 r-xp 00000000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so
    00e43000-00e45000 r-xp 0019f000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so
    00e45000-00e46000 rwxp 001a1000 08:01 17171359 /lib/i386-linux-gnu/libc-2.15.so
    00e46000-00e49000 rwxp 00000000 00:00 0
    08048000-0804b000 r-xp 00000000 00:00 0
    0804b000-0804c000 rwxp 00000000 00:00 0
    b77a7000-b77c7000 r-xp 00000000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so
    b77c7000-b77c8000 r-xp 0001f000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so
    b77c8000-b77c9000 rwxp 00020000 08:01 17171339 /lib/i386-linux-gnu/ld-2.15.so
    bfa90000-bfab1000 rwxp 00000000 00:00 0 [stack]

最佳答案

这可能是因为映射长度的粒度。映射的长度将四舍五入为页面大小的倍数。在我的系统上,页面大小为 4k,因此映射将四舍五入为 4k 并包含入口点。即使页面大小为 1k,长度也会四舍五入到 0x1400,足以包含入口点。如果文件足够长,那么额外的字节可能来自文件而不是页面初始化。

关于linux - 奇怪的 ELF 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14144786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com