繁体   English   中英

OpenGL调用锁定/冻结

[英]OpenGL Calls Lock/Freeze

我正在使用一些Dell工作站(运行WinXP Pro SP 2和DeepFreeze)进行开发,但是某些东西被重新加载到这些计算机上,从而阻止了任何opengl调用(调用锁定)的完成(而且我知道代码已经按照我的测试进行了工作)在“干净”的计算机上,我还用dev-cpp生成的简单opengl应用程序进行了测试,该应用程序也会锁定在Dell机器上)。

我尝试调试自己的应用程序,以查看gl调用在何处冻结,但是ZwQueryInformationProcess上存在一些全局系统钩子,使对ZwQueryInformationThread(由ExitThread使用)的调用混乱了,从而使我根本无法调试(这会导致调试器, OllyDBG,进入访问冲突报告循环,或者如果传递了异常,则程序崩溃。 钩子:

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调用的任何事情会引起无限锁定,以及是否有任何解决办法? 在内核内存中创建这样的钩子又会是什么?

更新:经过一番摆弄之后,我发现了更多的内核钩子,其中许多钩子用于使系统信息调用(例如远程调试端口)返回的数据无效,我还设法找出了正在做的事情这是使用madchook.dll(由madshi创建)来执行的,该dll也被注入到每个正在运行的进程中(这些似乎是一些反调试代码)。 另外,在OpenGL方面,似乎Direct X很好/不受影响(我运行了DX 9演示程序之一,没有问题),那么这些内核挂钩之一会以某种方式影响OpenGL吗?

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

这听起来很像某些恶意软件试图将自己隐藏在系统中(并弄错了)。 您是否尝试过使用最新的防病毒软件扫描系统?

编辑:快速搜索madchook.dll的Google搜索表明,各种间谍软件/拨号程序/其他恶意软件都在使用它。 请尽快运行防病毒软件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM