Jump to content

Best way to check for 9x App compatibility?


Torchizard

Recommended Posts

I'd like to know what you guys think is the best\most efficient way of checking if an application is compatible with 9x. Aside from trying to run it in 9x physically, I'm also aware of tools such as FileAlyser and PE Explorer's Dependency Scanner (although it doesn't say which file version is required) so what do you guys think is the best solution?

Link to comment
Share on other sites


"Run it in Windows 9x physically", no, wait, that is "aside", then "Run it in Windows 9x virtually" :whistle:

Seriously, now :).

It makes little sense IMHO to know if something is "compatible" with Windows 9x, any given program may be "compatible" with Windows 9x but not running in it (for a zillion possible reasons), just as an example an app may be "compatible" with 9x/Me, but only run in - say - Windows 98 SE or in Windows 95 but not in Windows98. :unsure:

Can you explain what your goal/ise of such a method would be?

jaclaz

Link to comment
Share on other sites

"Run it in Windows 9x physically", no, wait, that is "aside", then "Run it in Windows 9x virtually" :whistle:

Seriously, now :).

It makes little sense IMHO to know if something is "compatible" with Windows 9x, any given program may be "compatible" with Windows 9x but not running in it (for a zillion possible reasons), just as an example an app may be "compatible" with 9x/Me, but only run in - say - Windows 98 SE or in Windows 95 but not in Windows98. :unsure:

Can you explain what your goal/ise of such a method would be?

jaclaz

What I meant by this is checking whether an app uses imports that only exist in a newer version of a DLL or other resource that only appears in a newer version of Windows. So what I mean is checking whether the app shows a message like "kernel32.dll not found" or similar at startup.

So to rephrase my question, "Which is the best way to check for DLL dependencies and are DependencyWalker, FIleAlyser and that type of program reliable?"

Link to comment
Share on other sites

Dependency Walker 2.2.6000 is very good, but must be used to test on the target system. It can also profile an app after initial testing to determine whether there are any additional landmines (but this would fall under "run it in 9x physically").

>...(although it doesn't say which file version is required)...

This feature might be worthy of a project--I don't think there are any tools that can do this.

There are clues in the PE file headers and other structures about when each module was linked (created), for what target platform, by what linker (for crt version info), and possibly to the timestamps of other modules (if bound).

While most PE tools will indirectly provide most of this info, I don't know of any that summarize it in terms of a target system. And ImportPatcher is the only tool I know of that reports binding timestamps (valuable for this purpose).

Link to comment
Share on other sites

So to rephrase my question, "Which is the best way to check for DLL dependencies and are DependencyWalker, FIleAlyser and that type of program reliable?"

Good. :)

A much better question :thumbup

BUT we have an issue here :w00t:

Dependency Walker can detect what DLL's (or other "connected" file) functions a given .exe is "connected" to (statically), but in order to "truly" know what the program "wants/needs" you need to "profile" the app (i.e. run it from within Dependency Walker) in order to see what is used dynamically.

To be of some use this needs to be done on both the "tested" OS/install (i.e. one in which the tool/program works fine) and on the "target" OS/install, because besides the mere existence of a .dll (or of a given function inside it) there are several other possible issues that may prevent the app/program to actually run in the "target" OS/install.

The extensive use of Dependency Walker in (example) making a BartPE plug-in (or a Winbuilder .script) or more simply have a given tool/app working on a very reduced system, either manually made or - say - nlited (and the actual "base" OS is the same) is already a nightmare (and far form being "easy" or "fully reliable") I would say that using it to establish when running it under - say - XP whether a given program is compatible with a much different OS (like 9x/Me) seems to me like a "lost cause".

If instead the idea is to use it as a sort of "sieve" to quickly determine if a given app is NOT compatible with win 9x/Me (because it invokes a .dll or a function inside it that is not present in those OS, then it may have IMHO some merits.

Maybe in better words, analyzing a file with one of these tools may give you proof (or a quick way to learn ) that something is "NOT compatible", but won't ever be "enough" to tell you that it will run under the "other" OS (which supposedly is the "final goal").

To list the imported .dll's (and functions) in a given PE file, you can probably want to try using besides the mentioned ones a tool like CFF Explorer Suite:

http://www.ntcore.com/exsuite.php

and - for dynamically loaded modules - the nice, little Dynlogger:

http://www.ntcore.com/dynlogger.php

This thingy here:

http://www.silurian.com/inspect/index.htm

is also a nice tool IMHO.

jaclaz

Link to comment
Share on other sites

I did it in the followind way - created a folder with Windows 98 dlls on my Windows 7, put the application DLLs and exes there, and used Total Commander FileInfo plugin with the applications' DLLs and Exes (it is better than Dependency Walker since it shows if the required DLL is delay loaded, which means that it probably isn't so necessary). In this way, fileinfo searched for import APIs in this folder with Win98 dlls instead of the system one. Then I've searched for missing imports in KernelEx source and old offline MSDN to know whether it is possible to get on Windows 98.

Additionally you will need the upx plugin for FileInfo to uncompress app exes on the fly or the UPX itself to uncompress upx-compressed exes manually, because after upx compression they show much less imports than they have.

This is not 100% correct way, since kernel32.dll imports cannot be tested (it still uses the current OS one), and sometimes even if all imports can be found, the app still won't work on real Windows 98, however in most cases this worked for me.

Link to comment
Share on other sites

Um, I usually read any text files called "readme.txt", which usually tell you the system requirements.

Sometimes if you go up to the help menu, there's a sub-menu that details the system requiremts... obviously if the program is loaded, then you meed at least the minimum requirements.

I go to OldApps.com and click on the "windows me" icon to find the last working version for windows me.

-- I know, this doesn't help much. I don't know why you'd want to spend time with DLLs and dependencies. What good is some buggy program that doesn't work right?

And that is one thing that irks me, authors who don't list the system requirements for their software. IF they're too lazy to bother with it, than so am I.

Link to comment
Share on other sites

Um, I usually read any text files called "readme.txt", which usually tell you the system requirements. Sometimes if you go up to the help menu, there's a sub-menu that details the system requiremts... obviously if the program is loaded, then you meed at least the minimum requirements. I go to OldApps.com and click on the "windows me" icon to find the last working version for windows me. -- I know, this doesn't help much. I don't know why you'd want to spend time with DLLs and dependencies. What good is some buggy program that doesn't work right? And that is one thing that irks me, authors who don't list the system requirements for their software. IF they're too lazy to bother with it, than so am I.

Well, I had some fun from running the apps on Windows 98 that were not intended to run on it.

Many developers didn't write Windows 9x in their requirements even if the application actually supported them even 5 years ago. And KernelEx allows to run even tha apps, that never supported Windows 9x. On the other hand, it happened several times when I downloaded an app from OldApps.com or from other such site - the site stated that the app supports Windows 9x, but in fact that wasn't true.

Link to comment
Share on other sites

  • 2 weeks later...

Here's the deal: Microsoft wants Windows9x dead because they (and others along this chain) cannot control such machines remotely.

Developers are somehow being blackmailed to drop Win9x support for that so-much-desired "windows logo" attribute. They wanna sell their stuff so they'll immediately drop any kind of 9x support in their applications just to get MS' clearance.

For many developers, "Windows" compatibility means whatever range of OS versions is still officially supported by MS. That's the easier approach, especially where those applications are cross-platform so there's also Linux, Mac, etc versions available.

Some developers who have little to no contact to "second-hand" world have no idea there still are many Win9x users around the world, for whatever reason. They would drop 9x support just for convenience or due to hardware/software upgrade, where VC6 or similar would be unsupported. In limited situations, when contacted, they would respond positively to Win9x compatibility requests.

Progress has knocked down the door and we're caught in a corner. This is not a 'live and let live' world. We do whatever we can to survive...

Link to comment
Share on other sites

The NT-based systems are far more vulnerable. But since they are mostly if not exclusively used in business environments, I figure there may also be other ways to get to them. Win9x has usually been (and probably is) used in home environments, harder to reach individually.

Don't take this for granted - I'm a huge sci-fi fan and a known paranoid. Nevermind my paranoia gets backed up every once in a while by facts... :whistle:

Link to comment
Share on other sites

The NT-based systems are far more vulnerable. But since they are mostly if not exclusively used in business environments, I figure there may also be other ways to get to them. Win9x has usually been (and probably is) used in home environments, harder to reach individually.

Don't take this for granted - I'm a huge sci-fi fan and a known paranoid. Nevermind my paranoia gets backed up every once in a while by facts... :whistle:

I am not trying to doubt (or limit the amount of) your paranoia :).

I was only trying to establish the borders of the conspiracy, i.e. I guess everyone will agree that Vista :ph34r:and later are part of it, many have doubts on XP :w00t:, you are now stating than 9x is outside it, the point is where exactly NT4.0, 2K and Me :whistle: are in this.... (inside or outside the big remote control conspiracy)

jaclaz

Link to comment
Share on other sites

In regard to those OS versions, an educated opinion should be offered by people that have intensively used them and/or analyzed their behavior. Personally I never had the chance to use NT or 2000 and the period I had a ME setup was quite short because that respective HDD died quite soon. So I can only speculate. I like that - prove me wrong, people. ;)

I know you're teasing me and it's OK because I do have a healthy sense of humor. A serious and argumented talk might not be appropriate for this board. We can do that in a really free place or a peer-to-peer talk. I'd like to revive my long-forgotten Italian. :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...