相关疑难解决方法(0)

ELF文件格式中节和段的区别是什么

来自wiki 可执行文件和可链接格式:

这些段包含运行时执行文件所必需的信息,而段包含用于链接和重定位的重要数据.整个文件中的任何字节最多只能由一个部分拥有,并且可能存在不属于任何部分的孤立字节.

但是段和段之间有什么区别?在可执行的ELF文件中,段是否包含一个或多个部分?

linux debian gnu elf abi

60
推荐指数
3
解决办法
2万
查看次数

在.text部分中定义只读数据的原因是什么?

我正在学习汇编和低级编程,并阅读有关它.据说我们可以将任何数据放在elf文件的.text部分中,但当然我们不能因为页面/段的不同权限而改变它.但是没有告诉那里,因为在.text部分内部有数据的原因是什么.许多C++程序员也告诉我g ++编译器

static const char DATA[] = "SOME DATA";
Run Code Online (Sandbox Code Playgroud)

也在.text部分内.我想知道,为什么不将这些数据放在.rodata部分,目的是什么?如果使用.text,那么.rodata中应该存储什么?

主要问题是在长模式下的这种行为.

c++ assembly

4
推荐指数
1
解决办法
341
查看次数

x86汇编:文本部分中的数据

我不太明白变量如何存储在文本部分以及如何操作它们.不应该所有变量都在.data部分中,并且不是.text部分只读的所有部分吗?那么这段代码是如何工作的呢?

[代码取自Shellcoder的手册 ]

Section .text
global _start

_start:
    jmp short GotoCall

shellcode:
    pop esi
    xor eax, eax
    mov byte [esi + 7], al
    lea ebx, [esi]
    mov long [esi + 8], ebx
    mov long [esi + 12], eax
    mov byte al, 0x0b
    mov ebx, esi
    lea ecx, [esi + 8]
    lea edx, [esi + 12]
    int 0x80

GotoCall:
    call shellcode
    db '/bin/shJAAAAKKKK'
Run Code Online (Sandbox Code Playgroud)

assembly shellcode

3
推荐指数
2
解决办法
1797
查看次数

标签 统计

assembly ×2

abi ×1

c++ ×1

debian ×1

elf ×1

gnu ×1

linux ×1

shellcode ×1