WildBill Posted November 26, 2011 Author Posted November 26, 2011 (edited) Thanks. It looks like something is giving it an invalid pointer on an IOCTL_TCP_QUERY_INFORMATION_EX request. Hopefully it will be simple to find.Edit: so far I've found one definite bug in iphlpapi.dll (missing reloc) and potentially some thread-safety issues in it (XP forces device queries to be thread-safe whereas 2k does not). I want to check out the other files before I post an update. I'm going to be going out to dinner in a little bit so the update might not be until late tonight. I've also found a missing reloc in srvsvc.dll (this new version of the PE Tool makes those much easier to find). Edited November 26, 2011 by WildBill
WildBill Posted November 27, 2011 Author Posted November 27, 2011 I couldn't find any other obvious problems aside from the ones above so I've posted MS11-020 V5. Hopefully it will help...it's working for me, at least, though I'm not running ZoneAlarm. Also, I added exports for the following functions:IcmpCreateFileIcmpCloseHandleIcmpSendEchoIcmpSendEcho2IcmpParseRepliesdo_echo_repdo_echo_reqregister_icmpWin2k is a bit different from XP in that all of this functionality is in a separate icmp.dll instead of in iphlpapi.dll, so the exports above are just forwarded exports to the routines in icmp.dll. It shouldn't make any difference to applications since the PE loader automatically resolves forwarded exports.
discdude Posted November 27, 2011 Posted November 27, 2011 I couldn't find any other obvious problems aside from the ones above so I've posted MS11-020 V5. Hopefully it will help...it's working for me, at least, though I'm not running ZoneAlarm. WildBill you're the best. MS11-020 V5 solves the blue screen at boot when ZoneAlarm is installed. Everything seems to be working fine now.
MacLover Posted November 27, 2011 Posted November 27, 2011 I didn't notice it before but VirtualBox needs two more APIs to install properly:SETUPAPI.DLL -> SetupSetNonInteractiveModeSETUPAPI.DLL -> SetupUninstallOEMInfWAs I said before, no rush on getting these in but it would be nice to have the ability to run VirtualBox 4.x on Windows 2000. Again, keep up the great work!
discdude Posted November 28, 2011 Posted November 28, 2011 I didn't notice it before but VirtualBox needs two more APIs to install properly:SETUPAPI.DLL -> SetupSetNonInteractiveModeSETUPAPI.DLL -> SetupUninstallOEMInfWAs I said before, no rush on getting these in but it would be nice to have the ability to run VirtualBox 4.x on Windows 2000. Again, keep up the great work!Did you try BlackWingCat's setupapi.dll? I don't know if it supports those two functions, but it is probably worth a try.http://blog.livedoor.jp/blackwingcat/archives/873798.html
MacLover Posted November 28, 2011 Posted November 28, 2011 I didn't notice it before but VirtualBox needs two more APIs to install properly:SETUPAPI.DLL -> SetupSetNonInteractiveModeSETUPAPI.DLL -> SetupUninstallOEMInfWAs I said before, no rush on getting these in but it would be nice to have the ability to run VirtualBox 4.x on Windows 2000. Again, keep up the great work!Did you try BlackWingCat's setupapi.dll? I don't know if it supports those two functions, but it is probably worth a try.http://blog.livedoor.jp/blackwingcat/archives/873798.htmlBWC's SETUPAPI.DLL doesn't support SetupSetNonInteractiveMode, therefore I cannot install VirtualBox 4 even with a modified MSI to allow installation on Win2k. It does have SetupUninstallOEMInfW though.
int0x13 Posted November 28, 2011 Posted November 28, 2011 Hi folks,I got a software which is broken under windows 2000 sp4 (french version), because of the function "TzSpecificLocalTimeToSystemTime" which is not into win2k kernel32.dll.I've googled and i've seen this topic is talking about patch and is referencing this function name (TzSpecificLocalTimeToSystemTime). Do you think it's possible to patch kernel32.dll library to add this function? And then make my software compatible with windows 2000. Is it what you do with your custom patches?Regards,
tomasz86 Posted November 28, 2011 Posted November 28, 2011 WildBill's patch already has this function (TzSpecificLocalTimeToSystemTime) added. If you want to use it then you'll have to apply the English patch to your French system.
int0x13 Posted November 28, 2011 Posted November 28, 2011 WildBill's patch already has this function (TzSpecificLocalTimeToSystemTime) added. If you want to use it then you'll have to apply the English patch to your French system.Isn't it risky to apply english patch onto another language windows? You talk about the patch MS11-011 right? The one that can be found on this page My link ?Thanks for your help! I didnt think what i'd like to do someone else already did! Seems very hard work.
tomasz86 Posted November 28, 2011 Posted November 28, 2011 Yes, I mean MS11-011 (2393802) but you should download it from here as I haven't updated the RyanVM list yet. V6 is the current version.I can't say for sure but I guess that Windows files for European languages should be interchangeable. In the past I already tried using English kernel32.dll in a Polish system and no problems occurred. Of course some system dialogs may change to English but in case of kernel files most of them will be the text which you see on BSODs, not the actual system GUI.Here there's instruction how to change the update.inf file.
WildBill Posted November 29, 2011 Author Posted November 29, 2011 (edited) I found that my implementation of DbgPrintEx in ntdll was incorrect and would corrupt the stack, so I've posted MS11-011 V7 with a fixed version. I've also added DbgPrintEx to ntoskrnl, et. al. and RtlCaptureContext to kernel32. The new master additions list for V7 is below:ntoskrnl.exe/ntkrnlpa.exe/ntkrnlmp.exe/ntkrpamp.exeKeAcquireInterruptSpinLockKeReleaseInterruptSpinLockInterlockedPushEntrySListInterlockedPopEntrySListRtlInt64ToUnicodeStringRtlIntegerToUnicodeRtlClearBitRtlTestBitRtlSetBitZwQueryInformationThread......already there, added it to the export tableIoForwardIrpSynchronously/IoForwardAndCatchIrp (same routine, has two different exported names)PsRemoveLoadImageNotifyRoutine (had to completely redesign the set and call routines to make this work)PsRemoveCreateThreadNotifyRoutine (had to completely redesign the set and call routines to make this work)_vsnwprintf_aulldvrmRtlGetVersionKeFlushQueuedDpcsDbgPrintExntdll.dllRtlIpv4StringToAddressARtlIpv4StringToAddressWRtlIpv4StringToAddressExARtlIpv4StringToAddressExWRtlIpv4AddressToStringARtlIpv4AddressToStringWRtlIpv4AddressToStringExARtlIpv4AddressToStringExWRtlIpv6StringToAddressARtlIpv6StringToAddressWRtlIpv6StringToAddressExARtlIpv6StringToAddressExWRtlIpv6AddressToStringARtlIpv6AddressToStringWRtlIpv6AddressToStringExARtlIpv6AddressToStringExWRtlInitializeGenericTableAvlRtlIsGenericTableEmptyAvlRtlGetElementGenericTableAvlRtlNumberGenericTableElementsAvlRtlInsertElementGenericTableAvlRtlDeleteElementGenericTableAvlRtlEnumerateGenericTableLikeADirectoryRtlLookupElementGenericTableAvlRtlEnumerateGenericTableWithoutSplayingAvlRtlEnumerateGenericTableAvlRtlEncodePointer (not a stub -- it's the real functionality and depends on changes to ntoskrnl.exe, etc.)RtlDecodePointer (not a stub -- it's the real functionality and depends on changes to ntoskrnl.exe, etc.)RtlInterlockedPushEntrySListRtlInterlockedPopEntrySListRtlInterlockedFlushSListRtlQueryDepthSListRtlInitializeSListHeadLdrLockLoaderLockLdrUnlockLoaderLockLdrAddRefDllRtlComputePrivatizedDllName_URtlValidateUnicodeStringRtlDuplicateUnicodeStringRtlDowncaseUnicodeCharRtlFindCharInUnicodeStringRtlpEnsureBufferSizeRtlMultiAppendUnicodeStringBufferRtlAppendPathElementLdrEnumerateLoadedModulesRtlRandomExRtlUnhandledExceptionFilter2RtlUnhandledExceptionFilterRtlAddVectoredExceptionHandler (also involved updating LdrpInitializeProcess and RtlDispatchException and adding internal function RtlCallVectoredExceptionHandlers)RtlRemoveAddVectoredExceptionHandler (also involved updating LdrpInitializeProcess and RtlDispatchException and adding internal function RtlCallVectoredExceptionHandlers)RtlGetNtVersionNumbersDbgPrintEx (Fixed version)_vsnwprintf_lfind_aulldvrm_alldvrmRtlpNotOwnerCriticalSectionRtlpApplyLengthFunctionRtlCopyOutOfProcessMemoryStreamToRtlLockMemoryStreamRegionRtlUnlockMemoryStreamRegionRtlNtPathNameToDosPathNameRtlGetLengthWithoutLastFullDosOrNtPathElementRtlCreateBootStatusDataFileRtlComputeCrc32RtlCaptureContextRtlLockBootStatusDataRtlUnlockBootStatusDataRtlGetSetBootStatusDataRtlNtStatusToDosErrorNoTeb (already there, only had to add it to the export table)RtlAddMemoryStreamRtlReleaseMemoryStreamRtlQueryInterfaceMemoryStreamRtlReadOutOfProcessMemoryStreamRtlRevertMemoryStreamRtlCloneMemoryStreamRtlCommitMemoryStreamRtlSetMemoryStreamSizeRtlWriteMemoryStreamRtlSeekMemoryStreamRtlCopyMemoryStreamToRtlReadMemoryStreamRtlStatMemoryStreamRtlInitMemoryStreamRtlFinalReleaseOutOfProcessMemoryStreamRtlInitOutOfProcessMemoryStreamRtlSetLastWin32ErrorAndNtStatusFromNtStatusRtlSetLastWin32Error/RtlRestoreLastWin32Error (same routine, exported under two different names)bootvid.dllVidSetVgaPalette (used by the bootskin code)kernel32.dllDecodePointer (forwarded export to NTDLL.RtlDecodePointer)EncodePointer (forwarded export to NTDLL.RtlEncodePointer)InterlockedPushEntrySList (forwarded export to NTDLL.RtlInterlockedPushEntrySList)InterlockedPopEntrySList (forwarded export to NTDLL.RtlInterlockedPopEntrySList)InterlockedFlushSList (forwarded export to NTDLL.RtlInterlockedFlushSList)QueryDepthSList (forwarded export to NTDLL.RtlQueryDepthSList)InitializeSListHead (forwarded export to NTDLL.RtlInitializeSListHead)GetModuleHandleExAGetModuleHandleExWIsWow64ProcessIsWow64MessageGetProcessHandleCountGetNativeSystemInfo (same as GetSystemInfo, simply added another export table entry)SetDllDirectoryASetDllDirectoryWGetDllDirectoryAGetDllDirectoryWAttachConsoleTzSpecificLocalTimeToSystemTimeSetClientTimeZoneInformationIsValidUILanguageGetSystemWow64DirectoryAGetSystemWow64DirectoryWSetHandleContextGetProcessIdGetSystemTimesCreateMemoryResourceNotificationQueryMemoryResourceNotificationAddVectoredExceptionHandler (forwarded export to NTDLL.RtlAddVectoredExceptionHandler)RemoveVectoredExceptionHandler (forwarded export to NTDLL.RtlRemoveAddVectoredExceptionHandler)RtlCaptureStackBackTraceSetThreadUILanguageLZStartGetExpandedNameAGetExpandedNameWLZInitLZDoneLZCreateFileWLZOpenFileALZOpenFileWLZSeekLZReadLZCloseLZCloseFileLZCopyCopyLZFileGetVolumePathNamesForVolumeNameWGetVolumePathNamesForVolumeNameAGetHandleContextGetCPFileNameFromRegistryEnumerateLocalComputerNamesWEnumerateLocalComputerNamesACreateSocketHandleCreateNlsSecurityDescriptorAddLocalAlternateComputerNameWAddLocalAlternateComputerNameARemoveLocalAlternateComputerNameWRemoveLocalAlternateComputerNameASetLocalPrimaryComputerNameWSetLocalPrimaryComputerNameARtlCaptureContext Edited November 29, 2011 by WildBill
int0x13 Posted November 29, 2011 Posted November 29, 2011 Yes, I mean MS11-011 (2393802) but you should download it from here as I haven't updated the RyanVM list yet. V6 is the current version.I can't say for sure but I guess that Windows files for European languages should be interchangeable. In the past I already tried using English kernel32.dll in a Polish system and no problems occurred. Of course some system dialogs may change to English but in case of kernel files most of them will be the text which you see on BSODs, not the actual system GUI.Here there's instruction how to change the update.inf file.Ok i managed to install MS11-011v7 (last one) on my french Win2K advanced server. I dont know if it's same for windows 2000 server or not.After that i found that i got another dependency issue with iphlpapi.dll library. ("The procedure entry point GetIpErrorString could not be located in the dynamic link library iphlpapi.dll")So i thought about installing version from win2k3 server (which has GetIpErrorString function). After that i had another depend with ws2_32.dll(The procedure entry point freeaddrinfo could not be located in the dynamic link library WS2_32.dll). I search onto WildBill patches and found Windows2000-KB2508429-v3-x86-ENU.But after reboot, i got services.exe crashing and 60 second autoreboot counter alert. Dont know what's wrong. I tried to boot into safemode and it works, but not in normal mode. Maybe it has to do with the iphlpapi.dll i directly copy from win2k3 to win2k server.
tomasz86 Posted November 29, 2011 Posted November 29, 2011 Do you get this GetIpErrorString problem when trying to launch the program you mentioned before? What's the name of it?You should check the dependencies with Dependency Walker. You will be able to solve the dependency problems with BlackWingCat's KDW. I may help you but first you need to let us know what the name of the program you're trying to use is.
int0x13 Posted November 29, 2011 Posted November 29, 2011 (edited) Alright, i will try KDW, didnt know this tool. Also i'd like to know how to add a simple function from one dll into another one using "PE TOOL", is there any how to to do this?The tool i'd like to run under win2k PRO (and 2k PRO server if possible) it's here: hereTo test the tool , you have to install it under XP+ and then copy the install folder or unpack the installer.Thank you for your help. Edited November 29, 2011 by int0x13
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now