首页
社区
课程
招聘
[求助]Windows7下GdiQuerytable函数的怪问题
发表于: 2012-9-15 00:04 5528

[求助]Windows7下GdiQuerytable函数的怪问题

2012-9-15 00:04
5528
为了使用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直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
win8 测试正常
2012-9-15 01:23
0
游客
登录 | 注册 方可回帖
返回
//