
调用CE驱动是一个比较困难的事情,主要体现在两个方面:
首先是加载驱动:正常加载CE驱动时程序会读取RegistryPath下的A/B/C/D项作为“DriverString”“DeviceString”“ProcessEventString”和“ThreadEventString”

其次的部分是最难的,不要以为驱动加载起来之后就完事大吉。




CE驱动的功能非常的多(DBVM技术,VT技术,读写什么的都有)
看了一下驱动中DispatchIoctl部分的代码,大致写了一点接口出来:
1.IOCTL_CE_READMEMORY:


2.IOCTL_CE_WRITEMEMORY:
3.IOCTL_CE_OPENPROCESS

4.IOCTL_CE_OPENTHREAD
5.IOCTL_CE_QUERY_VIRTUAL_MEMORY

6.IOCTL_CE_GETPETHREAD
7.IOCTL_CE_GETPEPROCESS
8.IOCTL_CE_GETPHYSICALADDRESS


9.IOCTL_CE_READPHYSICALMEMORY
10.IOCTL_CE_WRITEPHYSICALMEMORY
11.IOCTL_CE_CREATEAPC

12.IOCTL_CE_SUSPENDTHREAD
13.IOCTL_CE_RESUMETHREAD
14.IOCTL_CE_SUSPENDPROCESS
15.IOCTL_CE_RESUMEPROCESS
16.IOCTL_CE_ALLOCATEMEM
17.IOCTL_CE_EXECUTE_CODE

18.IOCTL_CE_READMSR
19.IOCTL_CE_WRITEMSR
20.IOCTL_CE_MAP_MEMORY

IOCTL_CE_UNMAP_MEMORY