Jump to content

Welcome to MSFN Forum
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. This message will be removed once you have signed in.
Login to Account Create an Account



Photo

VxD versions in XP (and in DOS)

- - - - -

  • Please log in to reply
19 replies to this topic

#1
dencorso

dencorso

    Iuvat plus qui nihil obstat

  • Supervisor
  • 6,394 posts
  • Joined 07-April 07
  • OS:98SE
  • Country: Country Flag

Donator

The fact that one cannot get the version info for any Linear Executable (a.k.a.: LE, which extensions may be .386, .VXD or .PDR) because, since LEs are not executable on the NT-family OSes, the system doesn't provide the usual Properties- -> Version tab for them, is a minor annoyance for those of us who multiboot Win 9x/ME with Win XP (or other NT-family OSes). I've just thrown together a crude, but effective, DOS application that solves this issue by getting the required info without recourse to the Windows API, and can be downloaded from this post.
Bear in mind that the MS VS_VERSION_INFO structure has *four* version strings: a File Version and a Product Version as hexadecimal numbers, and a File Version and a Product Version as text strings, and that not necessarily do they contain the same info, so my little app lists all four of them. HTH. And thanks to LoneCrusader for providing the inspiration to finally get around to do it! :yes:

Attached Files




How to remove advertisement from MSFN

#2
LoneCrusader

LoneCrusader

    Resistere pro causa resistentiam.

  • MSFN Sponsor
  • 980 posts
  • Joined 11-May 09
  • OS:98SE
  • Country: Country Flag

Donator

Aha! Thanks dencorso :yes:

Edited by LoneCrusader, 26 December 2010 - 03:19 PM.


#3
dencorso

dencorso

    Iuvat plus qui nihil obstat

  • Supervisor
  • 6,394 posts
  • Joined 07-April 07
  • OS:98SE
  • Country: Country Flag

Donator

Here's a new version! :)
I found out that in about 2% of my test files it failed to find actually present version info, due to the presence of a duplicate string (probably a quirk of the linker used to create those .vxds)... that's now fixed, so please do download the new version, which is in post #1, replacing the original release. The new version also prints the filename, which is useful when using it inside FOR loops.

#4
Joseph_sw

Joseph_sw

    Member

  • Member
  • PipPip
  • 208 posts
  • Joined 03-August 08
  • OS:98SE
  • Country: Country Flag
thanks, i also hate xp for deliberately ignoring version info for that format.

#5
dencorso

dencorso

    Iuvat plus qui nihil obstat

  • Supervisor
  • 6,394 posts
  • Joined 07-April 07
  • OS:98SE
  • Country: Country Flag

Donator

It's been a long time already, since I've released VxDVer... I always wished to make it more complete, but never actually found the time to come around to it. Quite recently, I've found out an ancient MSKB document (viz. Q201685 aka KB201685), which provides sample code precisely for reading more fully the properties of a VxD file (usualy having the extensions .386, .VxD or .PDR). I compiled it, and it works, although it has a bug, which was first reported by Jordan Russell:
 

Note: The code in this function is based on the code in the MSKB article Q201685. Known issue: This function fails if the version resource has a name (TVXDVersionResource.cName <> $FF). It's rare, but such VXDs do exist -- see Windows 98's MSGAME.VXD for example. Given that as of 2007 Windows 9x is mostly obsolete, I don't plan on fixing this.

 
So, I decided to fix this bug, cause the program to give error messages and localization languages in plain English, not just as a code number, format a little better the program's output, and make available a compiled copy of it. As opposed to my VxDVer, this new program named VxDProps is not a plain DOS executable, but instead a Win 32 console applications, that should run equally well on 9x/ME and on NT-family OSes, at least from 2k on. It's compiled with VC++ 6.0. Problems, bugs, etc., please do let me know.

 

The original version has been replaced by a new one, now available for download from Post #20.


  • whatever420 likes this

#6
bphlpt

bphlpt

    MSFN Master

  • Patrons
  • 2,071 posts
  • Joined 12-May 07
  • OS:none specified
  • Country: Country Flag

Please forgive me if I haven't kept up with this topic over the last 4 3/4 years, LOL, but how and why does one use this, I assume, nifty tool you created?

 

I realize that it probably doesn't apply to me since I don't currently use any version of Win9x, but I read the "Q201685 - VxDs Version Info.pdf" and I think I get the reason that knowing the version of the files is useful, (if you are going to update, patch, or replace a file it is usually important to know the exact version of the file you are dealing with), but I still don't get how to use your tool.  Sorry for being a noob. :)

 

Cheers and Regards


Posted Image


#7
dencorso

dencorso

    Iuvat plus qui nihil obstat

  • Supervisor
  • 6,394 posts
  • Joined 07-April 07
  • OS:98SE
  • Country: Country Flag

Donator

Supose one double-boots 9x/ME with XP or 7 or both. There's no way to find out version, language and all those familiar info from the Properties => Version tab for .VxDs, because NT-OSes don't know anything about .VxD (aka .386 or .PDR) files. NT-OSes don't read their version info structure because they don't even suspect it's there. So, in order to be able to check that info, to update or replace such files in 9x/ME, from NT-OSes, a special app is needed, and the only know such apps are those in this thread. My original one also runs in DOS, but shows just version info. The new one provides all the info from the Properties => Version tab, but can only run in a DOS box, because it's a Win32 console application. To see the new one work, a VxD file is needed. Having one such file at hand, the usage is: VxdProps <filename>.

Cheers!



#8
Drugwash

Drugwash

    MSFN Addict

  • Member
  • PipPipPipPipPipPipPip
  • 1,659 posts
  • Joined 21-June 06
  • OS:98SE
  • Country: Country Flag

You forgot about Shutdown Patcher which can read VersionInfo from VXDs equally well. :whistle:

Ahem, almost equally well because I did stumble into that duplicate label issue and left it as is (since none of the nvcore drivers suffer from it). But with a little help from my friends :angel I could fix it and maybe port the code to a standalone GUI application. B)



#9
rloew

rloew

    MSFN Expert

  • Member
  • PipPipPipPipPipPip
  • 1,293 posts
  • Joined 30-May 05
  • OS:98SE
  • Country: Country Flag
I wrote a DOS based one a couple of years ago to dump this information and/or change it.

It comes in very handy when attempting to port Kernel Software from Windows 98 to Windows 95 as the VXD loader will reject VXDs with a newer DDK Version Number.

Incidentally, neither VXDProps nor ShutdownPatcher display the DDK Version Number.
Ye who enter my domain. Beware! Lest you become educated in the mysteries of the universe and suffer forever from the desire to know more.

#10
Drugwash

Drugwash

    MSFN Addict

  • Member
  • PipPipPipPipPipPipPip
  • 1,659 posts
  • Joined 21-June 06
  • OS:98SE
  • Country: Country Flag

Another undocumented offset? :)

 

The patcher is not meant as an in-depth analyser but the code that reads the VI from LE files can be ported over and enhanced.

But first things first. ;)



#11
rloew

rloew

    MSFN Expert

  • Member
  • PipPipPipPipPipPip
  • 1,293 posts
  • Joined 30-May 05
  • OS:98SE
  • Country: Country Flag
There are four that are rarely documented. I gave you the first two. Then there is a Device ID. And finally the DDK Version.
The document included in VXDProps, that dencorso attached, references the WINNT.H Include file that does list these. No details though.

Your Patcher doesn't need this but your planned Version Display Program might.
Ye who enter my domain. Beware! Lest you become educated in the mysteries of the universe and suffer forever from the desire to know more.

#12
dencorso

dencorso

    Iuvat plus qui nihil obstat

  • Supervisor
  • 6,394 posts
  • Joined 07-April 07
  • OS:98SE
  • Country: Country Flag

Donator

Another undocumented offset? :)

 

Well, not quite...



#13
Drugwash

Drugwash

    MSFN Addict

  • Member
  • PipPipPipPipPipPipPip
  • 1,659 posts
  • Joined 21-June 06
  • OS:98SE
  • Country: Country Flag

Thanks both for the tip, I'll grab that header for a read as soon as I get some rest and fix the issues with the patcher. :)



#14
jumper

jumper

    2015 All-American Masters HJ'er

  • Member
  • PipPipPipPipPip
  • 701 posts
  • Joined 21-January 11
  • OS:98SE
  • Country: Country Flag
Both DumpLX and MiTec EXE Explorer display full vxd headers including the DDK version.

See also: VXD files structure and disassembly - Windows 9x Member Projects - MSFN Forum for documentation links.
Design feedback requested:
KernelEx 4.5.2015
IHAtool - IpHlpApi tester; call various functions and report results
--status-> framework is solid; 22 api's fully supported; preview release coming soon
Future projects: Kexter - IP40+Ktree+Kexstubs

#15
dencorso

dencorso

    Iuvat plus qui nihil obstat

  • Supervisor
  • 6,394 posts
  • Joined 07-April 07
  • OS:98SE
  • Country: Country Flag

Donator

True. But neither display the contents of the Properties => Version Tab, like VxDProps.



#16
go98

go98

    Newbie

  • Member
  • 37 posts
  • Joined 15-February 12
  • OS:none specified
  • Country: Country Flag

Both DumpLX and MiTec EXE Explorer display full vxd headers including the DDK version.

See also: VXD files structure and disassembly - Windows 9x Member Projects - MSFN Forum for documentation links.

 

Anyone knows of any good downloadable vxd disassembler? I never saw one, had to make my own...vxd is not strictly LE format.



#17
jaclaz

jaclaz

    The Finder

  • Developer
  • 16,630 posts
  • Joined 23-July 04
  • OS:none specified
  • Country: Country Flag

Anyone knows of any good downloadable vxd disassembler? I never saw one, had to make my own...vxd is not strictly LE format.

 

DumpLX provides a (I presume primitive :unsure:) disassembler:

http://www.msfn.org/...k-of-ntkernvxd/

http://www.msfn.org/...nvxd/?p=1087484

 

jaclaz



#18
dencorso

dencorso

    Iuvat plus qui nihil obstat

  • Supervisor
  • 6,394 posts
  • Joined 07-April 07
  • OS:98SE
  • Country: Country Flag

Donator

Find yourself IDA Free v. 4.1. (It's a DOS verson that can run in the DOS box).

Load the VXD in 4.1 free (using it's LX loader), save the database, and exit.

Then load the database in IDA Free 4.3 (or later) and it'll offer to to upgrade it... accept, and then save it.

Now you can use the 4.3 GUI with the VXD LE - cool, ain't it?

There'll be an error about a missing file, ntddk.til (only available in full version), but that never gave me any grief.



#19
go98

go98

    Newbie

  • Member
  • 37 posts
  • Joined 15-February 12
  • OS:none specified
  • Country: Country Flag

Ha ha, Dencorso, you've been around for some time to have found out that...thanks for the tip, I will have a look, maybe it can complement my own tool...anything that can further simplify the task is good. However, it was partly because of IDA I decided to make my own disassembler, I wasn't satisfied with how it works (at least the free version).

 

Jaclaz, thanks for the quicker-than-upstart-of-windows-7 response :yes:



#20
dencorso

dencorso

    Iuvat plus qui nihil obstat

  • Supervisor
  • 6,394 posts
  • Joined 07-April 07
  • OS:98SE
  • Country: Country Flag

Donator

Here is a maintenance update of VxDProps.exe... the new version is 1.0.0.1, because changes are really minor. Here's what's new:

 

1.) Bugfix: now Language Neutral VxD's are described as such.

2.) New feature: now the DDK Version is also given.

Attached Files






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users