-
-
[求助]Windows7下GdiQuerytable函数的怪问题
-
发表于:
2012-9-15 00:04
5527
-
[求助]Windows7下GdiQuerytable函数的怪问题
为了使用windows7下的GdiQuerytable这个函数,使用LoadLibrary函数和GetProcAddress函数来尝试获得它的地址,获得地址后,调用pGdiQueryTable()它后总是返回NULL,请问这是为什么?Ring3下代码如下:
HMODULE hGDI = LoadLibrary(_T("GDI32.dll"));
pGdiTableCell pGdiTable=NULL;
Proc0 pGdiQueryTable = (Proc0) GetProcAddress(hGDI, "GdiQueryTable");
if (pGdiQueryTable)
{
pGdiTable = (pGdiTableCell)pGdiQueryTable();
}
pGdiTable 总是为NULL。
我逆向了这个函数,在IDA F5后,得到如下结果:
int __cdecl GdiQueryTable()
{
int result; // eax@3
int v1; // [sp+0h] [bp-8h]@1
char v2; // [sp+4h] [bp-4h]@1
v1 = -1;
v2 = 0;
if ( NtVdmControl(14, &v1) >= 0 && v2 ) //v2==0不是显然和必然的么?
result = pGdiSharedHandleTable;
else
result = 0;
return result;
}
感觉好怪,难道IDA错了么?求解释。
谢谢 大家了
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课