-
-
[旧帖]
[求助]Linux下OpenGL相关-截获并替换libGL.so中得一个函数
0.00雪花
-
-
[旧帖] [求助]Linux下OpenGL相关-截获并替换libGL.so中得一个函数
0.00雪花
某软件的linux版,运行的时候需要glWindowPos2i这个函数,不然起不来。
可问题是自己的linux上的GL共享库中(因为是ATI显卡,只能用ATI的fglrx驱动,问题就出在这个fglrx驱动上面,不用的话就没法用硬件加速了,用mesa软加速倒是能正常使用这个软件,可是不能忍受mesa的性能。只能通过截获替换的途径来达到正常使用硬件加速了。)并没有这个函数。
受之前的动态汉化的启发,就打算
截获并替换libGL.so中得这个函数,因为fglrx的GL库中提供了功能一样的glWindowPos2iARB函数,这俩个函数参数性态功能都一样,就是名字不一样。
问题来了,应该怎么写具体的程序呢?
我随便写了个空函数,啥也不干,编译成so然后preload,运行程序能起来,但是因为根本我写的程序中假的glWindowPos2i函数啥都没干,而软件的界面采用了opengl绘制,所以出现界面错乱问题。
继续下去就不会了,不知道如何才能让两个只有名字不同的函数通过我写
的这个小程序达到替换的目的。
看了网上一些关于用dlopen()和dlsym()的可是还是不太明白
最终应该是这样的:
软件->调用glWindowPos2i()--->我的Preload xxx.so-->实际调用
glWindowPos2iARB()
===================程序=========
main ()
{
}
glWindowPos2i()
{
}
=================
还有个办法,听说可以用修改elf可执行文件本身的plt-got表来进行,可对我来说好像难度更高
-------------------
大虾小虾们,伸出你援助的手吧
[培训]科锐逆向工程师培训第53期2025年7月8日开班!