symbol-table

访问从内核模块内部导出的所有符号的列表“/proc/kallsyms”?
symbol-table

访问从内核模块内部导出的所有符号的列表“/proc/kallsyms”?

我正在编写一个简单的内核模块,它似乎在最新的内核版本(我已经尝试过,,5.8)上不再导出和等功能,这意味着它们无法通过.那么,如何从内核模块访问包含所有内核符号及其地址的列表?最好的方法是什么?5.106.0kallsyms_lookup_namekallsyms_on_each_symbolkallsyms.h 我可以使用 shell 命令找到它们sudo cat /proc/kallsyms/,但现在我想能够从 ko 中找到它们 有什么建议吗? ...

Admin

ELF符号:GLOBAL+HIDDEN
symbol-table

ELF符号:GLOBAL+HIDDEN

基于例如。这个 Oracle 描述: STB_GLOBAL 全局符号。这些符号对所有目标文件都可见被合并。一个文件对全局符号的定义将满足另一个文件对同一全局符号的未定义引用。 ... STV_HIDDEN 当前组件中定义的符号如果其名称被隐藏对其他组件不可见。这样的符号必然受到保护。该属性用于控制组件的外部接口。如果将其地址传递到外部,则由此类符号命名的对象仍可以从另一个组件引用。 可重定位对象中包含的隐藏符号被删除或转换为 STB_LOCAL 绑定当可重定位目标文件包含在可执行文件或共享目标文件中时,由链接编辑器执行。 然而,查看readelf -...

Admin

系统调用的值在符号表中为0
symbol-table

系统调用的值在符号表中为0

我使用以下命令查看二进制文件的符号表: readelf -s mybinary 您可以看到下面的部分输出: 正如你所看到的,所有系统调用(例如 printf 和 exit)的值都是 00000000。但我想找到这个系统调用的地址。我应该怎么办?我搜索了很多,但没有找到任何东西。 ...

Admin

新编译的 libstdc++ 中没有版本符号
symbol-table

新编译的 libstdc++ 中没有版本符号

我正在使用以下配置编译 GCC 10.1 版本: ../configure --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --prefix=/home/user/toolchain/gcc --enable-checking=release --enable-languages=c,c++,fortran --disable-multilib --enable-shared --enable-gnu-unique-object --with-linker...

Admin

如何在不使用 objdump 反汇编的情况下列出 ELF 可执行文件的导入函数 (.plt)?
symbol-table

如何在不使用 objdump 反汇编的情况下列出 ELF 可执行文件的导入函数 (.plt)?

目前,我使用以下命令检查导入函数 ( .plt) objdump: objdump -D -j .plt myprog | grep '@plt' objdump但是,将输出带注释的反汇编来grep列出导入的 ( .plt) 函数似乎并不正确。 要检查导出的函数,我使用readelf -s myprog,但导入的.plt函数没有显示在此处? 如何列出.pltELF 可执行文件中所有导入的 ( ) 函数? ...

Admin

提取 ELF 中所有符号的大小和来源
symbol-table

提取 ELF 中所有符号的大小和来源

我正在尝试估计二进制文件各个组件的代码大小。我可以访问源代码和包含所有构建对象文件的生成目录。当然,我只想包含实际使用的符号,因此添加所有目标文件.text和.data部分的大小最终会高估实际值。 如何确定用于链接 ELF 文件的所有符号的大小和来源?像这样的东西会很有用: Symbol Size Origin func1 0x50 ../src/func1.o func2 0x75 ../src/func2.o ... 对于所有符号来说都是类似的.data。生成的.map文件似乎有一些这些数据,但似乎不完整。突出的两个部...

Admin

如何使用 enscript 处理重音?
symbol-table

如何使用 enscript 处理重音?

我无法弄清楚enscript将 txt 转换为 pdf 时如何处理重音: echo "élisée" | enscript -o - -X <encoding> | ps2pdf - output.pdf 我尝试了所有可能的编码,但没有一个能产生正确的结果。 我想我应该在第一个标准输出处添加一个 iconv 我尝试过的 enscript 编码列表: 88592 88593 88594 88595 88597 88599 885910 ASCII码 科学化 asciidkno 伊布姆普克 苹果 虚拟机 马力8 锦鲤8 附注 溶酶...

Admin

有向图
symbol-table

有向图

我想½在 vi 模式下输入,但它带有额外的字符½。我很紧迫ALT+0189。我已经搜索了很多相同的内容但未能找到。 ...

Admin

Linux 内核,缺少“__fentry__”符号
symbol-table

Linux 内核,缺少“__fentry__”符号

试图建立EtherCAT主站RT Linux (SL6.3) 上的驱动程序(实时 I/O 驱动程序) 在构建 EtherCAT 内核模块时,我不断遇到缺少符号的问题: # make modules make -C "/usr/src/kernels/3.8.13-rt27.40.el6rt.x86_64" M="/root/etherlabmaster-code-08aa7305b9baba37bdd9eb4d8c2a8762aa56a7e2" modules make[1]: Entering directory `/usr/src/kernels/3....

Admin

内核符号的地址会受到影响吗?结果?
symbol-table

内核符号的地址会受到影响吗?结果?

长话短说:在我的发行版 linux 3.08 内核中,使用cat /proc/kallsyms我可以发现,例如 _commit_creds 函数/符号位于地址 0xc1073fe0。当: 构建我的内核(选项 1) 通过调整内核二进制文件(选项 2) 是吗可能的影响这些地址? (即随机化以减轻对内核的攻击?) 我是否进一步正确地假设内核提供的系统调用需要保留在可预测/已知的地址,以免破坏内核提​​供的 ABI? 长版 在部分CVE-2016-0728所提供的某些 Linux 内核的漏洞概念验证使用这两行源代码: #define COMMIT_C...

Admin

函数符号编译后带有“.part”后缀
symbol-table

函数符号编译后带有“.part”后缀

当交叉编译Linux内核3.18.10时,编译器会.part.<N>在一些符号末尾添加后缀(请参见下面的示例)。<N>使用不同的 defconfig 时,数字会发生变化。有谁知道编译器在什么条件下在符号末尾添加部分后缀? $ arm-none-linux-gnueabi-readelf -a vmlinux | grep do_kernel_fault 给出 c03a48f8 116 FUNC LOCAL DEFAULT 2 __do_kernel_fault.part.10 ...

Admin

libreadline 的符号查找错误
symbol-table

libreadline 的符号查找错误

我最近开始在 Ubuntu20 上运行 sqlite3 或 awk 等程序时遇到问题。这些程序不会启动,只会显示此错误: symbol lookup error: /usr/local/lib/libreadline.so.8: undefined symbol: UP 我找到了几个解决方案,但这些解决方案通常会导致从源代码安装 libreadline 。我从 /usr/local 中删除了 libreadline 和 libhistory 及其符号链接,并遵循了现在无法在线获取的指南。 我安装了它,制作了所有符号链接,更新了 ENV 变量,但问题仍然存在。...

Admin

ELF 符号可见性级别之间有什么区别?
symbol-table

ELF 符号可见性级别之间有什么区别?

这NASM 文档上“elf全球指令的扩展”说, 您还可以选择控制符号的 ELF 可见性。只需添加可见性关键字之一:default、internal、hidden或protected。当然是默认default的。 这些是在哪里定义的?以及如何ld使用它们?我懂了C++ 中经常提到的访问级别包括受保护的,民众, 和 私人的,但不知道ELF指的是不是这个? 我的用例是 C 和汇编,因此如果您能让这与这两种语言和链接器相关,那就加分了。 ...

Admin