【发布时间】:2016-08-19 11:07:09
【问题描述】:
根据this ELF 规范:ELF 对象文件包含各种sections,其中之一是symbol table section .symtab,其中包含所有符号(文件、函数、对象等)的信息。
ELF 包含符号表中每个符号的名称、属性标志、类型、值和绑定等信息。
文件、函数或对象(数组、变量、字符串)等对象的名称实际上暴露了代码的内部信息。这样,任何人都可以分析 ELF(使用 strings、objdump 或 readelf 工具)并查看此信息并了解代码内部应该保密的内容。
为了可读性和可维护性,我们编写了开发人员可以理解的代码。因此,我们需要继续使用正确的文件名和变量名等。我们不能使用code obfuscation 来掩盖它们,因为这会使其难以维护。
问题(已编辑): 有什么方法可以隐藏或删除可执行 ELF 的符号表中的符号“名称”,这样就没有人可以了解代码和可执行文件还在营业吗?
【问题讨论】:
-
晦涩的符号表是什么意思?一旦elf文件是具有完全解析符号的完全可执行文件,符号表(虽然不是动态的)就没有用了,我不确定你所说的“混淆”是什么意思 - 使其免受RE和代码分析并保持代码完全可执行?
-
@DrPrItay 是的,隐藏或删除这些符号的“名称”(文本字符串)并使其仍然可执行。是否可以去掉符号的名称?
标签: unix elf object-files symbol-table