LINUX编程,如何用动态链接库挂接一个可执行程序,并修改程序运行代码。 10
LINUX编程方面的问题。一个LINUX执行程序(比如网络游戏服务端),没有源代码。想用一个动态链接库(SO)来挂接服务端程序,让服务端运行动态链接库里的代码。并且动态链...
LINUX编程方面的问题。
一个LINUX执行程序(比如网络游戏服务端),没有源代码。想用一个动态链接库(SO)来挂接服务端程序,让服务端运行动态链接库里的代码。并且动态链接库里的函数可以调用服务端程序里的函数和变量。
这样就可以达到修改和扩展服务端的功能。
现在只知道是用LD_PRLOAD加载SO库改变服务端的环境。但只能改变服务端程序调用的其他动态链接库里的函数,服务端程序里的函数不知道如何改写。
求具体方法,和需要学习的知识。 展开
一个LINUX执行程序(比如网络游戏服务端),没有源代码。想用一个动态链接库(SO)来挂接服务端程序,让服务端运行动态链接库里的代码。并且动态链接库里的函数可以调用服务端程序里的函数和变量。
这样就可以达到修改和扩展服务端的功能。
现在只知道是用LD_PRLOAD加载SO库改变服务端的环境。但只能改变服务端程序调用的其他动态链接库里的函数,服务端程序里的函数不知道如何改写。
求具体方法,和需要学习的知识。 展开
1个回答
展开全部
这个实现有点难度吧,按你的意樱吵思这个只在服务端运行,运行时是可以加载库的,但运行中这个库怎么切换到新的库,切换过程中怎么保护。而且动态链接库的加载时刻是什么时候,这个和动态库的实现、编译动态库时的选项以及操作系统对动态库的处理都有关系。例如程序中用到的符号是在动态库加载时一次解析还是执行时用到再解析?动态库有没脊嫌侍有初始化函数?操作系统是直接将动态库拷贝到内存(若需要)还是做 memory mapping 后通过 virtual memory 系统按需调入?这样考虑下来,加载时间是什么是相当不明确的事情。
建议看下《程序员的自我修养-链接,装载与库一书》,讲解的还是不错者陵的。
建议看下《程序员的自我修养-链接,装载与库一书》,讲解的还是不错者陵的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询