[英]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.