Jump to content

KernelEx for 2000?


jim2029
 Share

Recommended Posts

As I'm sure you all know, There is a project that ads support for windows XP only programs to Windows 98. Is there anything like this for 2000? Or does most of the XP only programs run in 2000 already?

Link to comment
Share on other sites


XP and 2000 share the same kernel (basically), with XP SP1 and SP2's additional security in XP. If you are talking about apps that don't need a version of DirectX that won't run on 2000, or don't need a specific XP API that doesn't exist on 2000, the app should run just fine on both platforms.

Link to comment
Share on other sites

Windows 2000 to Windows XP API Wrapper Pack

http://win2kgaming.siteburg.com/phpBB2/viewtopic.php?p=7

Windows 2000 XP API Wrapper Pack

--------------------------------

!!!!!!!DISCLAIMER!!!!!!!

THIS PACK IS NOT CREATED/SUPPORTED BY MICROSOFT IN ANYWAY.

WHEN MESSING WITH SYSTEM DLLS YOU CAN HOSE YOUR SYSTEM, READ WHAT THIS DOC SAYS AND FOLLOW IT'S

ADVICE. YOU SHOULD NOT DELETE ANYTHING FROM SYSTEM32, THESE WRAPPERS ARE NOT INTENDED TO BE PLACED

THERE! FOLLOW THIS AND YOU SHOULD BE SAFE. IF YOU ARE A DEV AND KNOW WHAT YOU ARE DOING YOU CAN

BUT DO NOT COME CRYING TO ME. NO WARRANTY, SEE THE END OF THIS FILE FOR MORE INFORMATION.

The Win2k wrapper pack is a collection of DLLs (dynamic loaded libraries) that

'wrap' the Windows API. These wrapper DLLs 'target' original copies of the system DLLs.

Most of these fixes were chosen to get newer games working on 2K. But they might be useful in

other situations as well.

This is NOT meant as a general XP compatibility kit to drop in your system32, while that does

work in MOST cases it is kind of dangerous and I don't recommend it. Rather these DLLs

should be placed along side the executable or in the start directory of the application.

In order to use these wrapper DLLs you MUST copy the original system DLLs somewhere in the

DLL search path with the TARGET name listed below. In my case I have a folder in my PATH

(WINXP_DLLS) that are unique to XP, ie no 2k equivalent. I place my TARGET DLLs here as well.

In some cases (kernel32.dll & user32.dll) the DLL search path must be modified due to 'KnownDLLs'

These KnownDLLs are only loaded from the system32, but this functionality can be disabled by

Regedt32. (*IMPORTANT regedit.exe won't work*) Simply add the DLLs to exclude from 'KnownDLLs' to

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ExcludeFromKnownDlls

this is a multiline value, so place a dll on each line.

Included in this pack should be a ExcludeFromKnownDlls.reg which will set this to kernel32.dll &

user32.dll. A reboot is needed for this to take effect. To see a list of KnownDLLs see

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs

For more info on DLL search paths see this awesome page

DLL Loading Rules in Win32 [http://home.att.net/~raffles1/older/dll_loading_rules_in_win32.htm]

======================

=Current DLL Wrappers=

======================

USER32.DLL TARGET=USER32_ORG.DLL

********************************

This DLL provides RAWINPUT for the mouse AND ONLY THE MOUSE. It uses DirectInput8 so only

use this DLL only if you need it (compatibility problems may arise otherwise.)

Tested on ETQW & Hellgate London, implementation is NOT XP compliant so milage may vary.

XP FUNCTIONS

RegisterRawInputDevices

GetRawInputData

GetLayeredWindowAttributes

KERNEL32.DLL TARGET=KERNEL32_ORG.DLL INI=win2k_xp_kernel32.ini

**************************************************************

This DLL use a ini file (win2k_xp_kernel32.ini) for advanced configuration. It should

be in the start directory of the application. This ini file is not required, default values will

be used as listed below.

*majVer, minVer, buildNum, majSP, minSP, and versionString are all overrides for GetVersion,

GetVersionExA, and GetVersionExW, if omitted the system value is returned. Using this with msiexec

will not result in anything good (tries to make a bunch of XP calls.)

*verifyVersion if set to 1 will force VerifyVersionInfo to return TRUE

*GetModuleOriginal if not set to 0 will return a HANDLE to the system kernel32.dll, this might be

useful if kernel32 has a new exports and this and this wrapper is out of date.

*geoNation & geoRegion specify return values for GetUserGeoID. If omitted defaults to

United States.

*SystemDirectory overrides the return value for GetSystemDirectoryA & GetSystemDirectoryW. If

omiited returns the system value.

*Load_ACLayers if not set to 0 will do LoadLibrary("aclayers.dll"), this is to get past securom,

which doesn't seem to approve of the wrapper. Make sure to place aclayers.dll somewhere in the

search path.

*RewriteExportTable if not set to 0 will do some export hacks for programs that think they know

how to read a PE. (Basically the RVA for the functions in the wrapper will point to KERNEL32_ORG)

Example win2k_xp_kernel32.ini (All default values on MY machine)

[win2k_xp_kernel32]

majVer=5

minVer=0

buildNum=2195

GetModuleOriginal=0

geoNation=244

geoRegion=244

geoISO2=US

geoISO3=USA

SystemDirectory=C:\WINNT\system32

Load_ACLayers=0

RewriteExportTable=0

XP FUNCTIONS

GetProcessId

GetThreadId

RestoreLastError

GetModuleHandleExW

GetModuleHandleExA

EncodePointer

DecodePointer

InterlockedPopEntrySList

InterlockedPushEntrySList

GetNativeSystemInfo

WTSGetActiveConsoleSessionId

GetUserGeoID

GetGeoInfoA

GetProcessHandleCount

CheckRemoteDebuggerPresent

GetNumaProcessorNode

GetNumaNodeProcessorMask

GetSystemTimes

GetSystemWow64DirectoryA

GetSystemWow64DirectoryW

AttachConsole

HOOKED FUNCTIONS

GetModuleHandleA

GetModuleHandleW

GetVersion

GetVersionExA

GetVersionExW

GetSystemDirectoryA

GetSystemDirectoryW

VerifyVersionInfoA

VerifyVersionInfoW

LoadLibraryA

LoadLibraryW

GetProcAddress

WTSAPI32.DLL TARGET=WTSAPI32_OLD.DLL

************************************

Provides two functions present in XP, but meaningless in 2K, always do nothing and return success.

XP FUNCTIONS

WTSRegisterSessionNotification

WTSUnRegisterSessionNotification

WS2_32.DLL TARGET=WS2_32_ORG.DLL

********************************

XP FUNCTIONS

getaddrinfo

freeaddrinfo

getnameinfo

FreeAddrInfoW

Tools for troubleshooting

-------------------------

Dependency Walker [http://www.dependencywalker.com/]

API Monitor [http://www.rohitab.com/apimonitor/]

APISpy32 [http://www.internals.com/]

Credits

-------

OldCigarette - coder of wrapper pack

OldBoy2k - old fashioned win2k user

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO

WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.

EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR

OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY

KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE

IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR

PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE

PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME

THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN

WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY

AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU

FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR

CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE

PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING

RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A

FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF

SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH

DAMAGES.

END OF TERMS AND CONDITIONS

(yes I ripped that from the GPL)

Link to comment
Share on other sites

Yep, my wrapper pack is similar to the KernelEx tool.

It is not system wide though, mostly because there are a few apps that are not compatible with it (found two so far both were from programs trying to read the PE on their own). You can install it system wide but it's not really setup for it like KernelEx.

One problem I've found is sometimes it would be nice for child processes to inherit the wrapper, I'm hoping to find an easy solution for this.

Cheers

Link to comment
Share on other sites

  • 4 months later...

I created the API extender for Windows 2000, "KDW".

I succeeded to run iTunes 7.6, QuickTime 7.50, Live Messenger, and foobar2000 9.5 etc on windows 2000.

KDW (Imperfect English site. :P )

I will create new topic here, after I finish up its manuals.

Link to comment
Share on other sites

The application application which has belonged to KDW is bilingual English/Japanese. and there are a few English simple manuals.

I think the Dlls operate even with English environment and other languages, but it is lack of confirmation.

And I recommend the fact that it tests with virtual environment or using Ez mode, because the procedure has not been even.

:(

is it for japanese version only?
Link to comment
Share on other sites

I almost programed these API with inline Assembler, because I don't think source codes are showed in publish.

KDW is rename and replace Original Dll.

For example

Kernel32.dll -> kernel2k.dll

When certain program for XP calls kernel32.dll, KDW kernel32.dll,whiche hooked kernel2k.dll(original kernel) is called.

I added following function in wrapper DLLs.

advapi32.dll

CredDeleteA

CredDeleteW

CredFree

CredReadA

CredReadW

CredWriteA

CredWriteW

CredEnumerateA

CredEnumerateW

FlushTraceA

FlushTraceW

StopTraceA

StopTraceW

QueryTraceA

QueryTraceW

UpdateTraceA

UpdateTraceW

LsaLookupNames2

SaferCloseLevel

SaferComputeTokenFromLevel

SaferCreateLevel

SaferGetLevelInformation

SaferGetPolicyInformation

MD4Init

MD4Update

MD4Final

MD5Init

MD5Update

MD5Final

A_SHAFinal

A_SHAInit

A_SHAUpdate

Function036

kernel32.dll

GetModuleHandleExA

GetModuleHandleExW

GetSystemWow64DirectoryW

GetSystemWow64DirectoryA

GetProcessId

GetProcessHandleCount

AddVectoredExceptionHandler

RemoveVectoredExceptionHandler

GetNativeSystemInfo

AttachConsole

IsWow64Process

IsWow64Message

GetUserGeoID

EnumSystemGeoID

GetGeoInfoW

GetGeoInfoA

CheckRemoteDebuggerPresent

WTSGetActiveConsoleSessionId

InterlockedPopEntrySList

InterlockedPushEntrySList

InterlockedFlushSList

InitializeSListHead

QueryDepthSList

ReinitializeCriticalSection

SUnMapLS

SUnMapLS_IP_EBP_8

SUnMapLS_IP_EBP_12

SUnMapLS_IP_EBP_16

SUnMapLS_IP_EBP_20

SUnMapLS_IP_EBP_24

SUnMapLS_IP_EBP_28

SUnMapLS_IP_EBP_32

SUnMapLS_IP_EBP_36

SUnMapLS_IP_EBP_40

FT_Exit0

FT_Exit4

FT_Exit8

FT_Exit12

FT_Exit16

FT_Exit20

FT_Exit24

FT_Exit28

FT_Exit32

FT_Exit36

FT_Exit40

FT_Exit44

FT_Exit48

FT_Exit52

FT_Exit56

GetThreadIOPendingFlag

InterlockedPopEntrySList

InterlockedPushEntrySList

InterlockedFlushSList

InitializeSListHead

FirstEntrySList

QueryDepthSList

RtlCaptureStackBackTrace

rpcrt4.dll

RpcServerInqCallAttributesA

RpcServerInqCallAttributesW

user32.dll

IsWinEventHookInstalled

MessageBoxTimeoutA

MessageBoxTimeoutW

GetWindowRgnBox

GetLayeredWindowAttributes

IsServerSideWindow

IsWindowInDestroy

IsGUIThread

CalcMenuBar

PaintMenuBar

RegisterRawInputDevices

GetRawInputData

ws2_32.dll

GetNameInfoW

GetAddrInfoW

freeaddrinfo

getaddrinfo

getnameinfo

FreeAddrInfoW

shel32.dll

SHGetImageList

SHCreateShellItem

SHParseDisplayName

SHOpenFolderAndSelectItems

SHGetAttributesFromDataObject

SHGetShellStyleHInstance(copy shellstyle.dll in system32 to use)

SHGetFolderPathAndSubDirA

SHGetFolderPathAndSubDirW

IsUserAnAdmin and so on.

RestartDialogEx

SHChangeNotifyReceive

SHChangeNotification_Lock

SHChangeNotification_Unlock

WriteCabinetState

PathProcessCommand

ReadCabinetState

SHPropStgCreate

SHPropStgReadMultiple

SHPropStgWriteMultiple

CDefFolderMenu_Create

CDefFolderMenu_Create2

SHGetSetFolderCustomSettingsW

SHCreatePropertyBag

SHMultiFileProperties

SHAllocShared

SHLockShared

SHUnlockShared

SHFreeShared

RealDriveType

SHFlushSFCache

SHGetUnreadMailCountW

SHSetUnreadMailCountW

ole32.dll

CoRegisterInitializeSpy

CoRevokeInitializeSpy

shlwapi.dll

SHRegGetValueA

SHRegGetValueW

IsCharSpaceA

IsCharSpaceW

SHAllocShared

SHLockShared

SHUnlockShared

SHFreeShared

GetAcceptLanguagesA

GetAcceptLanguagesW

StrCmpICA

StrCmpICW

StrCmpCA

StrCmpCW

AssocGetPerceivedType

I only hokked following function in wrapper DLLs.

advapi32.dll

TraceMessage

TraceMessageVa

CredMarshalCredentialA

CredMarshalCredentialW

CredReadDomainCredentialsA

CredReadDomainCredentialsW

CredUnmarshalCredentialA

CredUnmarshalCredentialW

CredWriteDomainCredentialsA

CredWriteDomainCredentialsW

SaferRecordEventLogEntry

SaferSetLevelInformation

SaferSetPolicyInformation

SaferIdentifyLevel

SaferiChangeRegistryScope

kernel32.dll

RestoreLastError

RtlRestoreLastWin32Error

GetVolumePathNamesForVolumeNameA

GetVolumePathNamesForVolumeNameW

GetDllDirectoryA

GetDllDirectoryW

SetDllDirectoryA

SetDllDirectoryW

EncodePointer

DecodePointer

EncodeSystemPointer

DecodeSystemPointer

SetUserGeoID

ActivateActCtx

CreateActCtxW

CreateActCtxA

ReleaseActCtx

DeactivateActCtx

ZombifyActCtx

GetCurrentActCtx

AddRefActCtx

FindActCtxSectionString

FindActCtxSectionStringA

FindActCtxSectionStringW

MapLS

UnMapLS

rpcrt4.dll

I_RpcExceptionFilter

RpcServerUnregisterIfEx

user32.dll

PrintWindow

UnregisterUserApiHook

RegisterUserApiHook

DisableProcessWindowsGhosting

wtsapi32.dll

WTSQueryUserToken

WTSRegisterSessionNotification

WTSUnRegisterSessionNotification

shel32.dll

SHLimitInputEdit

SHSetLocalizedName

SHELL32.719

SHELL32.723

SHELL32.731

SHELL32.732

SHELL32.733

SHELL32.753

SHELL32.755

SHCreateQueryCancelAutoPlayMoniker

ole32.dll

CoRegisterInitializeSpy

CoRevokeInitializeSpy

esent.dll

JetBeginTransaction2

JetCreateInstance

And I expanded any functions.

win2000, can you publish source codes?

if not, can you write detailed changes?

That will be great support for KernelEx, too.

Link to comment
Share on other sites

  • 3 weeks later...

Did anyone else actually try this yet? I gave it a whirl because I'm going to reinstall shortly anyhow, but upon restart the computer would reboot right at the point where it was supposed to switch to the login window, so I had to restore the backed up DLLs.

Link to comment
Share on other sites

Did anyone else actually try this yet? I gave it a whirl because I'm going to reinstall shortly anyhow, but upon restart the computer would reboot right at the point where it was supposed to switch to the login window, so I had to restore the backed up DLLs.

I'm very interested in this too, and I'm going to try it out over the weekend.

I'll let you know if I hit similar problems!

I'm going to completely back up my Windows 2000 folder first.................

:)

Link to comment
Share on other sites

Well, tried it tonight, and in fact it seemed to work fine.

Replaced all the system files with the new versions, and the system rebooted fine, with no BSOD.

How it got round the System File Protection is anyone's guess!

I did have two consequential problems though.

Firstly, I was immediately nagged by Windows Update to install the last cumulative security update for Internet Explorer. KDW had replaced some files such as SHLWAPI.DLL which are part of those IE updates.

As it was seen as an earlier version the update was flagged again.

Also, I have Norton Utilities (2002) installed, which includes a utility called "Norton Protected Recycle Bin".

I started getting error messages on boot-up that the Norton Protection service couldn't start because it couldn't determine the operating system version.

Another consequence of the system files replacement I assume.

The only reason I wanted this really was to install Quicktime 7.5.

In fact even with the new system files, and hacking the MSI file using the KDW utility (or indeed with Orca) it still wouldn't install, with an unspecified error.

I've decided to leave things as they are.

I was pleased to find that the KDW uninstall routine did seem to do its job, and restored all the system files so my system seems to be back to as it was before.

:)

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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.


×
×
  • Create New...