elf相关内容

ELF标头魔术-为什么要放入0x7F?

我所阅读的有关ELF标头魔术的所有资源都指出它包含ASCII编码的"ELF",然后简要地提到0x7F被附加在它前面,没有任何解释. 有没有理由使用0x7F? 这是否是为了避免与现有格式冲突?现有标准合规性吗?用于检测有关磁盘或内存的东西吗? 解决方案 很明显,它是 leet . 7F听起来像精灵中的精灵.字母L可以用7表示.用F发音字母L,听起来像Elf.不能有其他字节, ..
发布时间:2021-05-04 18:30:29 服务器开发

当我们运行可执行文件时,是否所有部分都立即加载到内存中?

因此,可执行文件包含不同的部分和头. 在 ELF标头中,我们可以看到有关它们的一些元数据,例如不同标头的大小,起点等. 可执行文件的不同部分是否一次全部加载到内存中? 如果是,请如何/何时进行定义,以及在何处可以看到有关此信息的信息,因为 ELF标头在此问题上似乎没有任何参数 先谢谢了. 解决方案 对于ELF二进制文件,节不是决定二进制文件如何加载到内存中的因素.它 ..
发布时间:2021-05-04 18:30:26 服务器开发

dladdr不返回函数名称

我正在尝试使用dladdr.它可以正确找到该库,但是找不到函数名称.我可以调用objdump,做一些数学运算,然后获取传递dladdr的函数的地址.如果objdump可以看到它,为什么不能dladdr? 这是我的功能: const char * FuncName(const void * pFunc){Dl_info DlInfo;int nRet;//查找给定函数指针的函数名称如果(( ..
发布时间:2021-05-04 18:30:23 服务器开发

ELF,PIE ASLR以及两者之间的所有内容,尤其是在Linux中

在问我的问题之前,我想介绍一些技术细节,以确保我答对了. 位置独立可执行程序(PIE)是一种程序,无论加载到哪个内存地址,都可以执行,对吗? ASLR(地址空间布局随机化)几乎表明,为了保持地址静态,我们将以某种方式将其随机化, 我已经读到,特别是在基于Linux和Unix的系统中,无论我们的代码是PIE,还是PIE,所有的跳转,调用和偏移都是相对的,实现ASLR都是可能的,因此 ..
发布时间:2021-04-23 19:55:26 其他开发

段边界内的任何数据,但超出段范围

ELF格式中使用的两个透视图:段和节. 使用此透视图时,是否可以确保细分透视图查看文件的所有数据? 使用此透视图时,是否可以确保节透视图查看文件的所有数据? 换句话说: 有效的ELF格式的文件/图像是否可以包括位于该文件某些部分边界内的数据,但是超出该文件边界的所有段(不属于该文件的任何段)? 有效的ELF格式的文件/图像是否可以包括位于该文件的某个段边界内的数据,但 ..
发布时间:2021-04-15 19:36:23 服务器开发

Linux可执行文件.data节的默认行为在5.4和5.9之间更改?

故事 案例1 我不小心在 .data 部分中写了我的汇编代码.我编译并执行它.即使我未指定 execstack 之类的标志,该程序也可以在Linux 5.4.0-53-generic 下正常运行. 情况2: 之后,我在Linux 5.9.0-050900rc5-generic 下执行了该程序.该程序得到了 SIGSEGV .我通过阅读/proc/$ pid/maps 检查了 ..
发布时间:2021-04-11 20:52:39 服务器开发

Linux内核模块作弊-Qemu Baremetal Xilinx Zynq A9

我的目标是模拟运行裸机软件的Zynq-7000上的ARM A9处理器.我已经尝试了两种不同的方法来解决这两个问题.有关如何进行的任何建议将不胜感激. 有关StackOverflow的当前答案: 如何制作裸机ARM程序并在QEMU上运行它们? 链接到 的 Linux内核模块作弊(LKMC,使用v3.0) 使用 ./build --arch arm qemu-baremetal ..
发布时间:2021-04-09 19:29:11 其他开发

关于Thumb-2的ARM/Thumb互通混淆

一段时间以来,我一直在阅读与ARM ISA相关的文档,到目前为止,我相信我已经对ARM/Thumb互通的基础知识有了很好的了解.我将在下面快速总结一下: 指令可以是4字节对齐(ARM)或2字节对齐(Thumb). Thumb和ARM指令位于单独的区域,即,在没有显式处理器状态更改的情况下,它们不会混合在一起. 在执行 bx , blx , ldm , ldr 之一时,状态更改可能发生.在 ..
发布时间:2021-04-09 19:25:59 其他开发

在aarch64上运行32位elf

我已经在qemu 64位ARM上安装了Debian(阅读此帖子) 解决方案 如链接文章所建议,这要求在内核中启用CONFIG_COMPAT.另一方面,如果您的内核没有它,我会感到惊讶-我从该教程中学到的Debian 4.9.0-4内核确实设置了CONFIG_COMPAT.您可以通过查看客户机的/boot/中的配置文件来检查内核是否启用了它.如果缺少它,那么您需要一个新内核,而其他任何方法都 ..
发布时间:2021-04-09 19:25:41 其他开发

如何重命名arm elf .so文件中的动态符号?

我需要在Android APK中修改一个.任务是在so旁边重命名动态符号(这是函数名). 例如,从Java_com_example_abc _....更改为Java_com_yahoo_zzz _.... 我尝试使用WinHex直接搜索并替换文本单词,导致apk启动错误.似乎也需要更新.hash节,但我不知道如何更新.hash节. 我的问题是重命名动态符号的正确或首选方法是什么? ..
发布时间:2021-04-03 20:45:37 移动开发

如何从编译的elf文件中提取所有函数,即使函数没有符号

IDA可以做到这一点:某些没有符号的功能将以“ sub_address”命名。 如何在运行时执行此操作。 在此处输入图像描述 解决方案 如何提取所有功能在编译的elf文件中,即使函数没有符号 您也没有为您定义什么功能( 请注意,如果编译器具有 内联 一个函数,即使它存在于源代码中,它也不会出现在ELF文件中(整个程序可以通过链接时优化来构建,例如 g ++ -flt ..
发布时间:2020-10-28 21:33:46 其他开发

与MinGW建立Elf共享库

我正在尝试使用MinGW在Windows上构建共享库,请按照以下教程操作: Building_elf_shared_libraries 我运行此步骤: $ gcc -fPI在此处中心代码-c libfoo.c -o libfoo.o $ gcc -Wall -O2 -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0.0 libfoo ..
发布时间:2020-10-28 21:33:44 C/C++开发

从标题读取sh_name每次都会返回一个值

无论何时调用isstatic32,即使程序是动态编译的,它也将返回STATIC。我不知道该怎么做。我尝试过每次从sh_name检测到.dynamic时,都会将1加到变量中;如果该变量> 1,它将返回dynamic,但这是行不通的。 (不允许我在此处发布代码) #include #include #define动力学1 #define STAT ..
发布时间:2020-10-28 21:33:41 服务器开发

了解小精灵的hexedit

请考虑以下ELF文件的十六进制显示。 00000000 7F 45 4C 46 01 01 01 00 00 00 00 00 .ELF ........ 0000000C 00 00 00 00 02 00 03 00 01 00 00 00 ..................... 00000018 30 83 04 08 34 00 00 00 50 14 00 00 0 ..
发布时间:2020-10-28 21:33:37 其他开发

在某些情况下,链接器允许多个模块定义具有相同名称的全局符号?

我正在读一本教科书,上面写着: 我们看到了编译器如何使用看似随意的约定将符号分配给COMMON和.bss。实际上,此约定是由于在某些情况下链接程序允许多个模块使用相同的名称定义全局符号。 只能定义一次变量?在某些情况下,链接程序允许您多次定义变量? 解决方案 这始终存在,因此包括以下排列的实际构建: #-Makefile ----- 全部:1 2 3 12 13 23 ..
发布时间:2020-10-28 21:33:31 其他开发

elf文件中的.rodata.str1.8部分是什么意思

我知道 .rodata 部分将常量数据存储在ELF文件中。但是,当我转储内核模块的ELF时,我注意到有两个额外的部分分别名为 rodata.str1.8 和 rodata.str1。 1 。似乎这两部分也存储常数变量和字符串。但是这三个 rodata 之间到底有什么区别? 解决方案 它看起来 .rodata.str1.1 的字符串没有对齐要求,而 .rodata.str1.8 必须为8字节 ..
发布时间:2020-10-28 21:33:24 其他开发

共享库代码中找到ELF aux头(或envp)的编程方式?

我正在寻找一种编程方式来找到 powerpc cpu类型在Linux上。执行一些google搜索会找到一个答案,提示我建议使用mfpvr指令,该指令在 ELF AUX标头,并且肯定可以使用以下命令获取正在运行的计算机的POWER5字符串: #include #include int main(int argc,char ** argv,cha ..
发布时间:2020-10-28 21:33:22 其他开发