元始天尊 发表于 2015-9-2 16:49:17

对QQPCHW.sys的分析

QQPCHW.sys
IoCtlCode:
0x222024
        初始化线程id表
        buffer= 用Rabbit算法加密过得线程id表   sizeof=传入缓冲区大小
       
0x222004
        读取PCI数据                结构体成员含义参见HalGetBusDataByOffset参数
        buffer=                sizeof=0x18
        +00        ULONG BusNumber                <==>   ULONG ret
        +04        BYTE data1
        +08        BYTE data2   data2低3位和data1低5位组成SlotNumber
        +0C        PVOID Offset
        +10        ULONG Length
        +14        PVOID Buffer       

0x222008
        设置PCI数据   结构体成员含义参见HalSetBusDataByOffset参数
        buffer=                sizeof=0x18
        +00        ULONG BusNumber                <==>   ULONG ret
        +04        BYTE data1
        +08        BYTE data2   data2低3位和data1低5位组成SlotNumber
        +0C        PVOID Offset
        +10        ULONG Length
        +14        PVOID Buffer
       
0x22200C
        读取msr寄存器
        buffer=                sizeof=9
        +00        DWORD msrindex存储读取序号 <==>LONGLONG 读取到的数据
       
0x222010
        写入msr寄存器
        buffer=                sizeof=0xC
        +0        DWORD msrindex
        +4        LONGLONG value要写入的值

0x222014
        读取端口
        buffer=         sizeof=9                        READ_PORT_UCHAR/USHORT/ULONG
        +0        BYTE readsize 0:UCHAR/1:USHORT/2:ULONG                <==>        DWORD ret
        +5        PVOID Port
       
        写入端口
        buffer=                sizeof=8                        WRITE_PORT_UCHAR
        +0        PVOID Port        端口号
        +4        UCHAR Value 数据                <==>         DWORD TAG=0x87654321写入成功标志
       
0x222018
        读取端口
        buffer=                sizeof=8                        READ_PORT_UCHAR
        +0 PUCHAR* Port 端口号                <==>    UCHAR取出的数据
        +4 =>DWORD TAG=0x87654321写入成功标志
       
0x22201C
        写入端口
        buffer=                sizeof=8                        WRITE_PORT_UCHAR
        +0        PVOID Port        端口号
        +4        UCHAR Value 数据                <==>         DWORD TAG=0x87654321写入成功标志

0x222020
        写入端口
        buffer=         sizeof=9                        READ_PORT_UCHAR/USHORT/ULONG
        +0        BYTE writesize 0:UCHAR/1:USHORT/2:ULONG                <==>        DWORD ret
        +5        PVOID Port
       
0x222028
        改写PCI conf1设备空间的一个数据??实在找不到资料了!不知道在干啥
          WRITE_PORT_ULONG((PULONG)0xCF8, 0x8000F8F0);
    v13 = READ_PORT_ULONG((PULONG)0xCFC);
    Buffer = v13;
    if ( v13 == -1
      || (Buffer = (v13 & 0xFFFFC000) + 0x3418,
          PhysicalAddress.LowPart = Buffer,
          (v14 = (ULONG *)MmMapIoSpace((PHYSICAL_ADDRESS)Buffer, 4u, 0)) == 0)
      || (READ_REGISTER_BUFFER_ULONG(v14, &Buffer, 1u),
          Buffer &= 0xFFFFFFF7,
          MmUnmapIoSpace(v14, 4u),
          (v15 = (ULONG *)MmMapIoSpace((PHYSICAL_ADDRESS)*(unsigned int *)&PhysicalAddress, 4u, 0)) == 0) )
    {
      v2 = 0xC0000001;
      goto LABEL_4;
    }
    WRITE_REGISTER_BUFFER_ULONG(v15, &Buffer, 1u);
    MmUnmapIoSpace(v15, 4u);

0x222040
        创建物理地址内存映射 \\Device\\PhysicalMemory
        buffer=
        +00 HANDLE hSection
        +04
        +08        PVOID BaseAddress内存映射地址

0x222044
        取消物理地址内存映射
        buffer=
        +00 HANDLE hSection
        +04        PHYSICAL_ADDRESS BusAddress 物理地址
        +0C        PVOID BaseAddress 对齐内存映射地址
页: [1]
查看完整版本: 对QQPCHW.sys的分析