Kayaker
December 31st, 2009, 21:02
Actually, the osinfo.dat file in theory supports, at least partially, supported OS's up to Server 2003 and perhaps Longhorn. As well as beta OS's that are defined in osinfob.dat.
I've been working on a parser for the mysterious osinfo.dat files, with the idea of being able to fix missing symbol definitions or hook locations. Such as those for MiAddValidPageToWorkingSet or EHCI_RemoveQueueHeadFromPeriodicList which has been discussed in other threads.
I have found a method to redefine some of the Mi* hook locations in the registry, which I should describe sometime, but I was trying for a more complete method that perhaps could even support Windows 7 (ha ha), though I'm sure the problems of running on that OS would go beyond symbols and hooks!
Anyway, here's a snapshot of the parser showing the version numbers that are defined within osinfo.dat. I'm still not sure what a lot of the values mean, I'm still trying to make sense of exactly how Sice uses the info.
The file itself is fairly logically laid out as a series of structures. Each structure begins with a Size field. There is a main header which gives the file offset of each of 4 different sections and the total number of symbols defined in each section. There are further similar header structures which tell the number of individual symbols within each section. There are 14 unique headers in total, which I believe separate eveything into OS version/build/service pack and free/check builds.
Sections 1 and 2 are similar in content and may define symbol information, Section 3 defines hooks, Section 4 I have no idea about..
Of course if this intrigues anybody and they want to play with idea further, they're welcome to the code. I was going to release it if it ever got to some point that made sense.
You'll notice in one of the snapshots that there is a version definition up to 6.0.4074 sp0
5.0.2195 Windows 2000
5.1.2600 Windows XP
5.2.3790 Windows Server 2003
6.0.6000 Windows Vista