i find some programme can run well in win9x,but they can not execute in win2000

what's the matter with the programme,can they be disassembled and made some code modify

to let they run well in win2000?
Posted on 2004-08-02 18:48:03 by bailao
Hello,

In fact I think it depends mostly if the win9x executable use some 9x tricks that aren't present in windows NT environment.

For example, the TIB in 9x isn't the same in NT (many internal structures differs on 9x and NT plateform). Maybe the program uses some tricks(ring0, anti-debug,etc.) that works well on 9x but not on NT.

Since 2000 has a backward compatibility, all API's from 9x can be executed on 2000, so I think it's not an API problem.

If you've the source code, just take a closer look at it. If you've the right to disassemble the program, maybe you can check under 2000, with a debugger, where the program crash and then try to reverse it.

Neitsa.
Posted on 2004-08-02 20:32:57 by Neitsa
2000 is much less forgiving in several places:

Paramters to many APIs must be DWORD aligned
Strict adherence to calling conventions
Posted on 2004-08-02 21:18:54 by Mecurius
I had the same problem some while back with a game Mortal Kombat Trilogy which was not running in win2k, debugging it revealed that this game was using cli / sti instructions quite much, which are priviledged in NT operating systems...ive just injected my own exception handler which bypassed those instructions and the game ran flawlessly;)
hope that helped
Posted on 2004-08-03 04:40:11 by DZA
9x allows port I/O, NT doesn't - that's the reason POD (that "first game using MMX" or whatever) crashes on NT.

Then there's games depending on width==pitch, that's not too bad to fix (I did that for XCOM :) ).

If the program depends on internal structure layout and stuff, things could get freaky.
Posted on 2004-08-03 09:30:59 by f0dder
hi,

thanks, maybe exception handler will help me.
Posted on 2004-08-03 20:36:25 by bailao