我正在编写一个小型仪器工具。我必须在二进制文件中插入检测例程。一个好的方法应该是将这些例程插入到单独的代码段和单独的数据段中,您能解释一下如何实现这一点吗?此外,如何修改原始文件中代码段的大小?
最好的,
我正在编写一个小型仪器工具。我必须在二进制文件中插入检测例程。一个好的方法应该是将这些例程插入到单独的代码段和单独的数据段中,您能解释一下如何实现这一点吗?此外,如何修改原始文件中代码段的大小?
最好的,
在 Shaun Clowes 的 Black Hat 演讲中,Shaun 采用了两种策略来修改 ELF 可执行文件:
在文件补丁中 - 通过扩展段来做到这一点
在核心补丁中(即时) - 通过利用由于段对齐而可用的内存空间来做到这一点。
它被称为“Black Hat USA 2002 - Fixing/Making Holes in Binaries”(Youtube)
我必须在二进制文件中插入检测例程。一个好的方法应该是将这些例程插入到单独的代码段和单独的数据段中
什么是binary file
? 为可重定位 ( ) 目标文件执行此操作与为完全链接的可执行文件 ( ) 或共享库 ( ) 执行此操作之间存在很大差异。ET_REL
ET_EXEC
ET_DYN
你能解释一下如何做到这一点吗?
对于 an ET_REL
,它应该相当简单:您读取文件头,它指向节头,它告诉您节的位置.data
和.text
位置。然后,您编写一个新文件,扩展您想要的部分,复制其他所有内容,并调整部分标题以反映新的部分偏移量和大小。
对于ET_DYN
or ET_EXEC
,这个问题很可能太难了:你需要调整重定位表、哈希表、程序头;保持所有结构自洽并正确对齐。