首页
社区
课程
招聘
[旧帖] [求助]Linux下OpenGL相关-截获并替换libGL.so中得一个函数 0.00雪花
发表于: 2007-4-5 21:45 4968

[旧帖] [求助]Linux下OpenGL相关-截获并替换libGL.so中得一个函数 0.00雪花

2007-4-5 21:45
4968
某软件的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日开班!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 340
活跃值: (957)
能力值: ( LV9,RANK:220 )
在线值:
发帖
回帖
粉丝
2
不是开源的软件?
2007-4-5 22:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
开源就好了:)

close-source的。
2007-4-5 22:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
自己解决了:)
2007-4-7 14:11
0
游客
登录 | 注册 方可回帖
返回