RT,
之前询问的帖子,www.v2ex.com/t/786837
编译成的 ko 模块 (github.com/0neday/OptiXstarHS8145X6/tree/main/persist-root-shell
),在海思中运行提示 错误。
module PLT section(s) missing
修改 linux 官方内核 4.4.197 中 arch/arm/kernel/module.lds
的内容,去掉 .core
SECTIONS {
.plt : { BYTE(0) }
.init.plt : { BYTE(0) }
}
运行不提示错误,用lsmod
查看,模块没有加载成功,状态 -1 。
这个问题困扰好久了。 应该需要给内核打补丁。
symbol
[root@haproxy persist-root-shell]# objdump -t getshell.ko
getshell.ko: file format elf32-little
SYMBOL TABLE:
d .core.plt .core.plt
d .init.plt .init.plt
dmesg
[ 196.377553] ------------[ cut here ]------------
[ 196.377602] WARNING: CPU: 1 PID: 3665 at kernel/module.c:1105 module_put+0x78/0x13c()
查看 module.c 1105 row, 加载 module 失败。
bool try_module_get(struct module *module)
{
bool ret = true;
if (module) {
preempt_disable();
/* Note: here, we can fail to get a reference */
if (likely(module_is_live(module) &&
atomic_inc_not_zero(&module->refcnt) != 0))
trace_module_get(module, _RET_IP_);
else
ret = false;
preempt_enable();
}
return ret;
}
elixir.bootlin.com/linux/v4.4.197/source/kernel/module.c#L1105