-
-
[讨论]Linux下修改so动态库二进制中的函数名问题
-
发表于:
2019-11-25 22:10
5332
-
[讨论]Linux下修改so动态库二进制中的函数名问题
在X86平台的linux系统下,使用vi或sed强行编辑libxxx.so库的二进制文件,修改函数名(保持前后名称长度一致),如:
函数:method_abc 修改为:method_123
查找替换所有位置(一般是2个地方),保存so。
同时,修改该so的调用者test可执行程序,查找替换所有method_abc 为 method_123,保存test。
执行测试 ./test
结果系统报错:test: symbol lookup error: test: undefined symbol: method_123
此时使用 nm 或 readelf 查看 libxxx.so,都可以看到符号 method_123 显示正常。
我的问题是:为什么test无法调用lib中的rename后的方法?难道so有校验和机制?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!