Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
加载器如何引用共享库中的变量?
我现在了解如何通过过程链接表引用动态函数 如下所示 Dump of assembler code for function foo plt 0x0000000000400528
sharedlibraries
ELF
如何手动加载并执行 ELF 二进制可执行文件?
假设二进制文件是PIC 如何将其加载到内存并执行入口点 我这样做是为了熟悉 ELF 所以execve不允许 这些是基本步骤 阅读程序头以查找 LOAD 指令并确定您需要的映射的总长度 以页为单位 将最低地址的 LOAD 指令映射到总长度 可
c
ELF
修改编译共享库中符号的可见性
我的项目依赖于一个第三方库 该库导出了更多应有的符号 其中一些符号被其他库和主程序无意地覆盖 如何更改已编译共享对象的函数和变量的可见性 如何更改已编译共享对象的函数和变量的可见性 您可以通过修改动态符号部分来更改符号的可见性 dynsym
sharedlibraries
visibility
ELF
更改 elf 调试信息中列出的源文件
基本上我希望能够更改 elf 二进制文件中 debug dwarf 部分中源文件的路径 基本上我希望能够更改 elf 二进制文件中 debug dwarf 部分中源文件的路径 什么东西阻止你 该路径存储在 debug str二进制文件的一部
ELF
dwarf
Clang 使用 -nostdlib 生成崩溃代码
我正在尝试为可执行文件设置自己的运行时环境 但无法使用 clang v3 4 1ubuntu1 目标 x86 64 pc linux gnu 来生成没有段错误的可执行文件 我已将问题简化为以下内容 如果我有一个文件 crt1 c 除了满足
c
gcc
Assembly
Clang
ELF
将静态链接的 elf 二进制文件转换为动态链接的
我有一个 elf 二进制文件 它已静态链接到 libc 我无权访问其 C 代码 我想使用 OpenOnload 库 它在用户空间中实现了套接字 因此与标准 libc 版本相比提供了更低的延迟 OpenOnload 实现标准套接字 api 并
c
Linux
ELF
openonload
在执行期间访问.eh_frame数据
我正在尝试访问以下内容 eh frame正在运行的程序的一部分 具体来说 该程序是 Linux 内核 2 6 34 8 这 eh frame包含用于异常处理的有用数据 我想在内核代码内部使用它 该部分已经由以下人员编写gcc readelf
Kernel
Linuxkernel
c
glibc
ELF
为什么 objdump 不显示 .bss、.shstratab、.symtab 和 .strtab 部分?
我目前正在用 C 语言实现我自己的 objdump 实现 For my s选项 我必须显示 ELF 文件各部分的完整内容 我做得很好 但我显示的部分比 真正的 objdump 更多 事实上 它并没有输出 bss shstrtab symta
c
ELF
objdump
访问附加到 ELF 二进制文件的数据
我有一个静态 ELF 二进制文件 它从 zip 文件中读取数据 为了简化分发 我想将 zip 文件附加到二进制文件中 如下所示 cat mydata zip gt gt mybinary 我知道这样做不会损坏 mybinary 但我不知道如
Linux
gcc
Build
ELF
符号查找错误未定义符号,但所有符号似乎都存在
可执行文件似乎无法解析链接库中的符号 LD DEBUG libs 的相关输出表明加载了正确的库 6557 usr lib libcharon so 0 error symbol lookup error undefined symbol a
Linux
ld
ELF
加载linux内核的基地址
我对内核如何加载到内存有一些疑问 检查后 proc kallsyms我能够找到内核中各种符号的地址 cat proc kallsyms head n 10 00000000 t vectors start 80008240 T asm do
Linux
Linuxkernel
kernelmodule
ELF
virtualmemory
objdump 输出中的“Algn”2**2 和 2**0 意味着什么?
下面的文件中这是什么意思 2 2 and 2 0 objdump h main o main o file format elf32 i386 Sections Idx Name Size VMA LMA File off Algn 0 t
c
ELF
objdump
为什么 Linux/gnu 链接器选择地址 0x400000?
我正在 Linux x86 64 上试验 ELF 可执行文件和 gnu 工具链 我已经链接并剥离 手动 Hello World 测试 global start text start mov 1 rax 转换为 267 字节 ELF64 可执
Linux
x86
x8664
ld
ELF
静态库 (.a) 和共享库 (.so) 之间的文件格式差异?
我知道关于共享库和静态库的用例有很多问题 这个问题与此无关 我问的是磁盘上存储的文件格式的差异 为什么问题是 两者之间有什么区别 或者它们完全相同 只是用途不同 我相信它们是不一样的 因为在共享库上运行 nm 需要 D 标志 显然它需要做一
Linux
Linker
sharedlibraries
staticlibraries
ELF
在运行时访问 build-id
我试图弄清楚如何访问链接器在运行时生成的构建 ID 从这个页面开始 https linux die net man 1 ld https linux die net man 1 ld 当我构建一个测试程序时 例如 gcc test c o
c
gcc
Linker
ELF
linkerscripts
读取 ELF 部分的内容(以编程方式)
我正在尝试检索 ELF 二进制文件中附加部分的内容 此时 我使用以下代码来检索每个部分的名称 include
c
Linux
file
Ubuntu
ELF
我可以执行驻留在数据段(ELF 二进制)中的代码吗?
在理解二进制文件 虚拟内存布局 执行 等 的方式中 我写了一个C声明一个全局字符串的代码 其中包含可执行代码的字节 然后我覆盖了返回地址main 通过声明一个指针 PTR in main 这是保留在堆栈上的本地内存区域 距离返回地址较远 2
c
memory
segmentationfault
ELF
Shellcode
GCC-汇编错误:针对“.data”重定位 R_X86_64_32S
情况 环境 Arch Linux x86 64 4 2 3 1 ARCH GCC 海湾合作委员会 海湾合作委员会 5 2 0 Command gcc Wall g o asm printf asm printf s Error usr bi
gcc
Assembly
Linker
ELF
relocation
将ELF文件加载到内存中
我正在尝试将 elf 文件放入内存然后执行它 步骤如下 1 要放入内存的文件 int main printf Hello world n return 0 2 编译它gcc o hello hello c static ELF Header
c
Assembly
static
arm
ELF
可用的 ELF 可执行文件需要哪些部分?
我正在创建一个 ELF 可执行文件 我需要知道操作系统需要哪些部分才能加载和执行它 Details OS Ubuntu 10 04 64 bit Kernel version 2 6 32 24 Architecture i386 我意识到
ELF
executableformat
sections
1
2
3
4
5
6
7
»