首页
社区
课程
招聘
[旧帖] [求助]此等菜鸟级SSDTHook问题,请大神不吝指教!别怪我不懂基础知识啊~ 0.00雪花
发表于: 2014-8-13 20:02 1779

[旧帖] [求助]此等菜鸟级SSDTHook问题,请大神不吝指教!别怪我不懂基础知识啊~ 0.00雪花

2014-8-13 20:02
1779
http://bbs.pediy.com/showthread.php?t=152337
看了这个。有一个很菜的问题,请教下大家。

原理是Hook ZwDeviceIoControlFile
源代码DriverEntry里这些代码:
[B][COLOR="SandyBrown"][COLOR="DarkRed"]if (MajorVersion == 0x5 && MinorVersion == 0x2)
    {
      ZwDeviceIoControlFile_num = 0x45;
    }
  else if (MajorVersion == 0x5 && MinorVersion == 0x1)
    {
      ZwDeviceIoControlFile_num = 0x42;
    }
  else
    {
      return STATUS_UNSUCCESSFUL;
    }[/COLOR][/COLOR][/B]
    memset(IeBuff, 0, 4 * IE_MaxNum);

  ZwDeviceIoControlFile_BaseAddress = (ULONG)KeServiceDescriptorTable->ServiceTableBase[B][COLOR="Red"] + ZwDeviceIoControlFile_num * 4; //xp 0x42 2003 0x45[/COLOR][/B] 
  ZwDeviceIoControlFile_value = *(PULONG)ZwDeviceIoControlFile_BaseAddress;
  ChangeMemory_inte(ZwDeviceIoControlFile_BaseAddress, (ULONG)LYH_ZwDeviceIoControlFile);


目的应该是判断操作系统类型,选用合适的ZwDeviceIoControlFile_num,找出ZwDeviceIoControlFile在表中的地址,然后更改吧。

现在想让驱动支持win7,可是源码里只给了xp和2000的值,不知道如何获得其他操作系统里的值?
别怪我问题太菜鸟啊,请多指教!我刚刚碰驱动!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 88
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没人??
2014-8-14 11:23
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
ZwDeviceIoControlFile 是导出函数啊
PVOID  HookSSDTFuncion(PCWCHAR wFunName, PVOID MyFunction)
{
    UNICODE_STRING FuncTionName;
    RtlInitUnicodeString(&FuncTionName, wFunName);
    LPVOID FunctionAddr = MmGetSystemRoutineAddress(&FuncTionName);
    if (FunctionAddr == NULL)
    {
        return NULL;
    }
    __try
    {
        DWORD dwIndex = *(DWORD*)((DWORD)FunctionAddr+1);

         // 抱歉,原来是Inline Hook的代码,直接copy了
        return HookProcByAddress((PVOID)(KeServiceDescriptorTable.ServiceTableBase[dwIndex]), MyFunction); 
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        return NULL;
    }
}

HookSSDTFuncion( L"ZwDeviceIoControlFile",  LYH_ZwDeviceIoControlFile);
2014-8-14 11:41
0
雪    币: 88
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
如果用那个代码里的ZwDeviceIoControlFile_num那种HOOK方法,win7该取多少?求教
2014-8-15 17:01
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我过来顶一下!新人来看看!
2014-8-15 17:13
0
雪    币: 90
活跃值: (60)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
去多看写教程吧!!
2014-8-15 21:07
0
雪    币: 293
活跃值: (287)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
仔细看代码
DWORD dwIndex = *(DWORD*)((DWORD)FunctionAddr+1);
这句就是取出你要的 ZwDeviceIoControlFile_num

还有你hook的根本不是 ZwDeviceIoControlFile 函数,而是他下层的 NtDeviceIoControlFile
2014-8-15 23:29
0
雪    币: 88
活跃值: (69)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
真的吗,我输出下试试,谢谢大神的帮忙!!
2014-8-17 18:43
0
游客
登录 | 注册 方可回帖
返回
//