标题是不言自明的,但可以更好地解释自己。我有一个 ELF 二进制 - 可加载内核模块,用符号编译。我想知道如何定位module_init()
函数的偏移量。
我可以使用 找到此信息readelf
吗?
如何从 Linux 内核模块的 ELF 头文件中定位 module_init() 偏移量?
逆向工程
拆卸
linux
小精灵
司机
入口点
2021-06-25 07:21:26
2个回答
用readelf读取参数是“-s”:
Options are:
-a --all Equivalent to: -h -l -S -s -r -d -V -A -I
-h --file-header Display the ELF file header
-l --program-headers Display the program headers
--segments An alias for --program-headers
-S --section-headers Display the sections' header
--sections An alias for --section-headers
-g --section-groups Display the section groups
-t --section-details Display the section details
-e --headers Equivalent to: -h -l -S
-s --syms Display the symbol table
--symbols An alias for --syms
--dyn-syms Display the dynamic symbol table
-n --notes Display the core notes (if present)
因此,使用readelf -s module.ko就足以读取符号。
首先拆解你的模块
objdump -xDsl module.ko > disassemble.txt
然后编辑文件并搜索部分init。它看起来像这样:
部分拆卸.init.text
:
002bdb01 <init_module>:
init_fct():