简体   繁体   English

OpenGL调用锁定/冻结

[英]OpenGL Calls Lock/Freeze

I am using some dell workstations(running WinXP Pro SP 2 & DeepFreeze) for development, but something was recenlty loaded onto these machines that prevents any opengl call(the call locks) from completing(and I know the code works as I have tested it on 'clean' machines, I also tested with simple opengl apps generated by dev-cpp, which will also lock on the dell machines). 我正在使用一些Dell工作站(运行WinXP Pro SP 2和DeepFreeze)进行开发,但是某些东西被重新加载到这些计算机上,从而阻止了任何opengl调用(调用锁定)的完成(而且我知道代码已经按照我的测试进行了工作)在“干净”的计算机上,我还用dev-cpp生成的简单opengl应用程序进行了测试,该应用程序也会锁定在Dell机器上)。

I have tried to debug my own apps to see where exactly the gl calls freeze, but there is some global system hook on ZwQueryInformationProcess that messes up calls to ZwQueryInformationThread(used by ExitThread), preventing me from debugging at all(it causes the debugger, OllyDBG, to go into an access violation reporting loop or the program to crash if the exception is passed along). 我尝试调试自己的应用程序,以查看gl调用在何处冻结,但是ZwQueryInformationProcess上存在一些全局系统钩子,使对ZwQueryInformationThread(由ExitThread使用)的调用混乱了,从而使我根本无法调试(这会导致调试器, OllyDBG,进入访问冲突报告循环,或者如果传递了异常,则程序崩溃。 the 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

the messed up function + call: 混乱的功能+呼叫:

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

So firstly, anyone know what if anything would lead to OpenGL calls cause an infinite lock,and if there are any ways around it? 因此,首先,任何人都知道如果导致OpenGL调用的任何事情会引起无限锁定,以及是否有任何解决办法? and what would be creating such a hook in kernal memory ? 在内核内存中创建这样的钩子又会是什么?

Update: After some more fiddling, I have discovered a few more kernal hooks, a lot of them are used to nullify data returned by system information calls(such as the remote debugging port), I also managed to find out the what ever is doing this is using madchook.dll(by madshi) to do this, this dll is also injected into every running process(these seem to be some anti debugging code). 更新:经过一番摆弄之后,我发现了更多的内核钩子,其中许多钩子用于使系统信息调用(例如远程调试端口)返回的数据无效,我还设法找出了正在做的事情这是使用madchook.dll(由madshi创建)来执行的,该dll也被注入到每个正在运行的进程中(这些似乎是一些反调试代码)。 Also, on the OpenGL side, it seems Direct X is fine/unaffected(I ran one of the DX 9 demo's without problems), so could one of these kernal hooks somehow affect OpenGL? 另外,在OpenGL方面,似乎Direct X很好/不受影响(我运行了DX 9演示程序之一,没有问题),那么这些内核挂钩之一会以某种方式影响OpenGL吗?

After some research, it seems that there is something actively blocking user->kernel mode calls for OGL, probably an option of DeepFreeze. 经过研究,似乎有一些东西在积极阻止对OGL的用户->内核模式调用,这可能是DeepFreeze的选项。 DirectX works flawlessly though, so I've switched over to that. DirectX可以完美地工作,所以我切换到了这一点。

This smells awfully like some malware trying to hide itself on your system (and getting it wrong). 这听起来很像某些恶意软件试图将自己隐藏在系统中(并弄错了)。 Have you tried scanning your system with an up-to-date antivirus? 您是否尝试过使用最新的防病毒软件扫描系统?

Edit: A quick Google search for madchook.dll reveals that it's used by various spyware/dialers/other malware. 编辑:快速搜索madchook.dll的Google搜索表明,各种间谍软件/拨号程序/其他恶意软件都在使用它。 DO run your antivirus ASAP. 请尽快运行防病毒软件。

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

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