ring0一直是程序员大家的一个目标,由于其相当的复杂
性,对大部分人来说,这不是一件很容易的事。使用vxd
和vmd更加不容易。这里给出了一些东东,希望有所裨益。
这里引用了一个WinIo Libraray,它主要由8个函数构成
1、bool _stdcall InitializeWinIo()
2、void _stdcall ShutdownWinIo()
3、bool _stdcall GetPortVal(WORD wPortAddr, PDWORD pdwPortVal, BYTE bSize);
4、bool _stdcall SetPortVal(WORD wPortAddr, DWORD dwPortVal, BYTE bSize);
5、PBYTE _stdcall MapPhysToLin(PBYTE pbPhysAddr, DWORD dwPhysSize, HANDLE *pPhysicalMemoryHandle)
6、bool _stdcall UnmapPhysicalMemory(HANDLE PhysicalMemoryHandle, PBYTE pbLinAddr)
7、bool _stdcall GetPhysLong(PBYTE pbPhysAddr, PDWORD pdwPhysVal);
8、bool _stdcall SetPhysLong(PBYTE pbPhysAddr, DWORD dwPhysVal);
一看就知道意思,我就不哆嗦了,
而对GDT,LDT或IDT的操作,随便一本WIN32的书
都有介绍,相信对大家不是难事。
给出WinIO libraray的连接:WIN LIB