首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于ELF文件过滤Opengrok索引

基于ELF文件过滤Opengrok索引
EN

Stack Overflow用户
提问于 2021-04-18 19:49:45
回答 2查看 116关注 0票数 0

我有基于linux的嵌入式应用程序的项目。这里我有一个ELF文件,我想确保OpenGrok只使用ELF文件中的符号进行索引,排除项目文件中所有不相关的/未编译的部分。这可以通过OpenGrok索引来实现吗?如果是这样,那么生成此索引的命令是什么。目前,我使用下面的命令为整个源代码生成索引。java

-Djava.util.logging.config.file=/opengrok/etc/logging.properties

-jar /opengrok/dist/lib/opengrok.jar

-c /usr/local/bin/ctag

-s /opengrok/src -d /opengrok/data -H -P -S -G

-W /opengrok/etc/配置.xml -U http://localhost:8080/source

EN

回答 2

Stack Overflow用户

发布于 2021-04-26 09:51:11

如果您希望仅包含/忽略特定文件(在本例中为ELF)。您可以使用以下选项:

代码语言:javascript
复制
-I (--include) - Only files matching this pattern will be examined. Pattern supports wildcards (example: -I '*.java' -I '*.c'). Option may be repeated.
  

-i (--ignore) - Ignore matching files (prefixed with 'f:' or no prefix) or directories (prefixed with 'd:'). Pattern supports wildcards (example: -i '*.so' -i d:'test*'). Option may be repeated.
票数 0
EN

Stack Overflow用户

发布于 2021-05-14 03:50:22

我不清楚项目文件的非相关/非编译部分或非链接/编译符号到底是什么意思,所以我将描述OpenGrok中的ELF文件分析是如何工作的,您可以决定这是否适用于您的用例,或者是否需要提交新的问题。

ELF分析器会经历以下ELF部分:

  • .debug_str
  • .comment
  • .data
  • .data1
  • .rodata
  • .rodata1

加上sh_type等于SHT_STRTAB的所有节。后者包含由空字节分隔的字符串。分析器从这些部分的内容中提取所有可打印字符串(使用不可打印字符作为分隔符),并将它们与空格字符连接起来。因此,所有这些部分中的所有可打印字符串都累积为单个字符串,有效地由插入的空格表示。然后,这些令牌被存储在索引中,因此成为可搜索的。

使用这种方法,索引将不仅包含程序中定义的符号,还包含从程序引用的外部符号的名称(例如从动态库调用的函数),以及一些全局变量的内容(如果它们包含可打印的字符串)。

此外,当ELF二进制文件被剥离时,.symtab部分将被删除,程序中定义的符号名称将丢失给索引器。

现在,可以以更智能的方式遍历ELF部分,并排除外部引用(例如,对动态库函数的调用),但是这会阻碍最初的想法,即有一种方法来执行安全漏洞分析-如果知道哪个函数有问题,就可以搜索调用该函数的所有二进制文件,从而对安全影响有一些了解。或者,提取的标记可以被拆分成引用和定义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67148177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档