就像动态库函数能被运行中的程序实时调用一样,可执行程序的全局符号函数也可以被用来单独执行。在底层的机器世界中,所谓的函数执行,只不过是将函数对应首条指令的内存地址加载到PC寄存器上执行而已。

利用dlsym函数,可以获取 .dynsym section 全局符号对应的内存地址,然后就可以执行这个地址(函数).

在这个特性的基础上,可以开发很多上层调试类业务代码。比如查看进程的重要结构体内容,或者 执行一个程序中的添加链表节点的函数。
本文介绍了如何借助dlsym函数获取并执行程序的全局符号函数,这种特性为上层调试和分析提供了便利,例如查看进程结构体或实现特定功能。通过加载内存地址到PC寄存器,可以实现函数的即时调用。
就像动态库函数能被运行中的程序实时调用一样,可执行程序的全局符号函数也可以被用来单独执行。在底层的机器世界中,所谓的函数执行,只不过是将函数对应首条指令的内存地址加载到PC寄存器上执行而已。

利用dlsym函数,可以获取 .dynsym section 全局符号对应的内存地址,然后就可以执行这个地址(函数).

在这个特性的基础上,可以开发很多上层调试类业务代码。比如查看进程的重要结构体内容,或者 执行一个程序中的添加链表节点的函数。
1516

被折叠的 条评论
为什么被折叠?