gpt4 book ai didi

c++ - OpenGL 调用锁定/卡住

转载 作者:行者123 更新时间:2023-11-28 08:30:41 25 4
gpt4 key购买 nike

我正在使用一些戴尔工作站(运行 WinXP Pro SP 2 和 DeepFreeze)进行开发,但是最近加载到这些机器上的东西阻止了任何 opengl 调用(调用锁)完成(而且我知道代码像我一样工作已经在“干净”的机器上对其进行了测试,我还使用 dev-cpp 生成的简单 opengl 应用程序进行了测试,它也将锁定在戴尔机器上。

我已经尝试调试我自己的应用程序以查看 gl 调用卡住的确切位置,但是 ZwQueryInformationProcess 上有一些全局系统 Hook 会扰乱对 ZwQueryInformationThread(由 ExitThread 使用)的调用,从而阻止我进行调试(它导致调试器 OllyDBG 进入访问冲突报告循环或如果传递异常则程序崩溃)。钩子(Hook):

ntdll.ZwQueryInformationProcess 7C90D7E0       B8 9A000000          MOV EAX,9A
7C90D7E5 BA 0003FE7F MOV EDX,7FFE0300
7C90D7EA FF12 CALL DWORD PTR DS:[EDX]
7C90D7EC - E9 0F28448D JMP 09D50000
7C90D7F1 9B WAIT
7C90D7F2 0000 ADD BYTE PTR DS:[EAX],AL
7C90D7F4 00BA 0003FE7F ADD BYTE PTR DS:[EDX+7FFE0300],BH
7C90D7FA FF12 CALL DWORD PTR DS:[EDX]
7C90D7FC C2 1400 RETN 14
7C90D7FF 90 NOP
ntdll.ZwQueryInformationToken 7C90D800 B8 9C000000 MOV EAX,9C

困惑的函数 + 调用:

ntdll.ZwQueryInformationThread 7C90D7F0        8D9B 000000BA        LEA EBX,DWORD PTR DS:[EBX+BA000000]
7C90D7F6 0003 ADD BYTE PTR DS:[EBX],AL
7C90D7F8 FE ??? ; Unknown command
7C90D7F9 7F FF JG SHORT ntdll.7C90D7FA
7C90D7FB 12C2 ADC AL,DL
7C90D7FD 14 00 ADC AL,0
7C90D7FF 90 NOP
ntdll.ZwQueryInformationToken 7C90D800 B8 9C000000 MOV EAX,9C

所以首先,任何人都知道如果有任何事情会导致 OpenGL 调用导致无限锁定,是否有任何解决方法?什么会在内核内存中创建这样一个钩子(Hook)?

更新:经过一番摸索,我发现了更多的kernal hooks,其中很多是用来使系统信息调用返回的数据无效(比如远程调试端口),我也设法找出了what曾经这样做是使用 madchook.dll(由 madshi)来做到这一点,这个 dll 也被注入(inject)到每个正在运行的进程中(这些似乎是一些反调试代码)。此外,在 OpenGL 方面,似乎 Direct X 很好/不受影响(我运行了一个 DX 9 演示没有问题),那么这些内核 Hook 之一是否会以某种方式影响 OpenGL?

最佳答案

经过一些研究,似乎有一些东西在主动阻止用户-> 内核模式对 OGL 的调用,这可能是 DeepFreeze 的一个选项。不过 DirectX 工作完美,所以我已经切换到它。

关于c++ - OpenGL 调用锁定/卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2273934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com