Jump to content

jumper

Member
  • Posts

    1,945
  • Joined

  • Last visited

  • Days Won

    7
  • Donations

    0.00 USD 
  • Country

    United States

Everything posted by jumper

  1. @MiKl: I didn't expect my small changes to affect any apps already running. I haven't tested SumatraPDF since 2.3.2, but will do so soon. @loblo: I don't have a WinME system to test on, so I'll need a bit of help. Please try the x.1 DLLs individually. I somehow failed to save the MAP files for this particular build, but the problem seems to be a NULL pointer passed to a kexcrt ANSI string copy routine. DumpPE (C.Turvey) and ProcWin (Japheth) were both able to disassemble Kernelex.dll for this analysis. @Drugwash: KernelEx trys to improve the user experience by fixing existing functions, rerouting (forwarding) calls from one module to another, and creating new functions by stubbing, faking, partially or fully implementing them--whatever it takes. Many NT calls have no meaning and are easily stubbed. Full implementations take much time to develop and test, and balloon both the memory footprint and install package! It's been just over three years now since the release of 4.5.2. If you could revisit the original build and then add just the GCC fix, it would be great to have a new release to kick off the new year. "warning C4013: 'strntoumax' undefined; assuming extern returning int" Increasing the compile warning level from 1 to 3 revealed that kexcrt wasn't properly prototyping the 64-bit strntoumax(), so in at least nine places the return value was truncated to 32-bits before being assigned to a 64-bit variable. I added prototypes and casts to fix 22 warnings. One more warning needs further study ("unary minus operator applied to unsigned type, result still unsigned"). I am standardizing a method for delay loading libraries and functions the combines the best of the several techniques currently in use. It's important to do this now as much new code will be using it. New release 4.5.12.2 -- Map files included this time! <<TBD: post source>>
  2. In the apilibs source folder, we find subfolders for Kexbases and Kexbasen. To kexbases\Kernel32, I added VirtualProtect.c. This code has been tested via Kexstubs on my primary machine for six months: // Don't let GCC apps 'accidentally' disable write access: If desired access protection// is PAGE_READONLY and location is in PE image, request PAGE_READWRITE instead./* MAKE_EXPORT VirtualProtect_fix=VirtualProtect */BOOL WINAPI VirtualProtect_fix( LPVOID lpRegion, // address of region of committed page DWORD dwSize, // size of the region DWORD flNewProtect, // desired access protection PDWORD lpflOldProtect // address of variable to get old protection){ if (flNewProtect == PAGE_READONLY) { MEMORY_BASIC_INFORMATION mbi; if (VirtualQuery (lpRegion, &mbi, sizeof(mbi))) //find base if (VirtualQuery (mbi.AllocationBase, &mbi, sizeof(mbi))) //query base if (mbi.Protect & 0x66) //readable? if (*(WORD*)(mbi.AllocationBase) == 'ZM') //PE image? flNewProtect = PAGE_READWRITE; } return VirtualProtect (lpRegion, dwSize, flNewProtect, lpflOldProtect);}To kexbases\shell32, I added SHGetImageList.c which exports SHGetImageList both by name and ordinal: #define ERROR_CALL_NOT_IMPLEMENTED 120L/* MAKE_EXPORT SHGetImageList_stub=SHGetImageList *//* MAKE_EXPORT SHGetImageList_stub=ordinal727 */HRESULT WINAPI SHGetImageList_stub (int iImageList, REFIID riid, void **ppv){ return ERROR_CALL_NOT_IMPLEMENTED;}To Kexbasen, I added an Oleaut32 module with two function stubs exported both by name and by ordinal. I added them to the non-shared Kexbasen so they can be upgraded to delay-loaded forwards to (Un)RegisterTypeLib in the future. kexbasen\oleaut32\_oleaut32_apilist.c created kexbasen\oleaut32\_oleaut32_apilist.h created kexbasen\oleaut32\oleaut32.c #define ERROR_CALL_NOT_IMPLEMENTED 120L/* MAKE_EXPORT RegisterTypeLibForUser_stub=RegisterTypeLibForUser *//* MAKE_EXPORT RegisterTypeLibForUser_stub=ordinal442 */HRESULT WINAPI RegisterTypeLibForUser_stub ( ITypeLib *ptlib, OLECHAR *szFullPath, OLECHAR *szHelpDir ){ return ERROR_CALL_NOT_IMPLEMENTED;}/* MAKE_EXPORT UnRegisterTypeLibForUser_stub=UnRegisterTypeLibForUser *//* MAKE_EXPORT UnRegisterTypeLibForUser_stub=ordinal443 */HRESULT WINAPI UnRegisterTypeLibForUser_stub ( REFGUID libID, WORD wMajorVerNum, WORD wMinorVerNum, LCID lcid, SYSKIND syskind ){ return ERROR_CALL_NOT_IMPLEMENTED;}In apilibs\kexbasen, main.c and dirlist were updated to reflect the new oleaut32 modules.Full source diff package: K4521src.7z
  3. KernelEx 4.5 Core Updates 4.5.2016.17 4.5.2016.16 4.5.2015.11 4.5.2015.10 4.5.2015.9 - source (full) 4.5.2015.8 4.5.2015.7 4.5.2015.5 - source (diff) 4.5.2015.4 dlls --- Extras --- ApiHook 4.5.2015.8 - Real-time API logger Kexports - API export lister for KernelEx DLL's ImportPatcher - View and edit dependencies . . . Dependency Walker 2.2.6000 TaskInfo2000 v2.1 ProcWin DumpPE How to install in Windows: backup existing Windows\KernelEx DLL files extract all files into one folder launch Update (or InstallDLLs) shortcut Reboot system! How to install in DOS: backup existing Windows\KernelEx DLL files extract DLL, EXE, and PDB files "Exit to DOS" out of Windows copy extracted files to Windows\KernelEx folder Reboot system! Changelogs: [see individual release posts] These updates are based on the source for the highly-tested KernelEx 4.5.2. Changes to the source will be presented in following posts. Changes will initially come from the 4.5.3 beta ("Master" branch), Kexstubs, and related projects. I did slip a few "wish-list" gifts into this first package just for Christmas: Kexbases.dll 4.5.12.1 has a Kernel32:VirtualProtect wrapper to fix the GCC problem and a Shell32:727 ordinal stub. Kexbasen.dll 4.5.12.1 has Oleaut32:442/RegisterTypeLibForUser and 443/UnRegisterTypeLibForUser ordinal/name stubs. Kernelex.dll 4.5.12.1 is a straight rebuild of 4.5.12.0 with just the version resource updated. My toolchain isn't 100% complete, so I have no plans for releasing a full, updated KernelEx package. Is anyone interested in doing this? Topics for discussion Versioning: Last official KernelEx product is 4.5.2, files 4.5.12. I'm currently using product 4.5.2015, files 4.5.2015.x. Updates installer: Currently using a batch file. Still taking suggestions for wininit.ini or better solution. API families TBD (additions welcome) My Kstub822.ini has lots of these definitions. Which need partial or full code rather than stubs? Ace Acl/Dacl/Sacl (Security) ActCtx AnsiString/OemString/UnicodeString Cred Fls Lsa MD5 SList Trace Any technical discussion concerning updates/changes to KernelEx API support or architecture are welcome. Please report all known issues and limitations in KernelEx 4.5.2 so we can addressed them. Known issues: API names must be stored in sorted order in memory plug-in limit is 4: std + kexbases + kexbasen + two more ApiConfigurations limit is 11 (0..10); higher numbers show but don't "stick" DLL must exist and be loaded for a new API to be added new API can't be added to DLL loaded via KernelEx\KnownDLLs no distinction between implicit(loader) and explicit(GetProcAddress) dynamic linking Psapi code problems An older version of this top post can be found at the Internet Archive Wayback Machine.
  4. If the BIOS has an "Enable L1 cache" option, unchecking it will usually cripple performance!
  5. >I did set a static IP address, but it didn't seem to improve the boot time much. Disable the network adapter in Device Manager. That should speed the network boot delay and you can reenable it on-the-fly in Device Manager when you need it. >What exactly is Windows doing when it "enumerates" devices? Synchronously loading each device driver one at a time, waiting for each to complete before loading the next. >booting in Safe Mode is slightly shorter Not everything is loaded. Safe Mode without networking should be even faster.
  6. The internal CDDA filter (v6.4.0.2) in MPC6.4.9.1 is "2K/XP only" (tip text). Disable it in View>Options>Internal Filters when trying external filters.
  7. Just put a copy of GdiPlus.dll in the Windows System folder. I use version 5.2.3790.136.
  8. If you use DHCP to assign a dynamic IP address, your router must be up and running before Tcpip loads or you get a long delay. Assign a static address or disable the adapter if the network is not always available at boot.
  9. Create a boot log and check it with BootLogAnalyzer bla.exe. Networking is a likely suspect.
  10. Another idea: C:\>attrib/s R:\test.cmd | find/i "\oem\runonc~1\test.cmd" A HR TEST.CMD R:\OEM\RUNONC~1\test.cmd A TEST.CMD R:\Z\OEM\RUNONC~1\test.cmd
  11. Redirect WindowsCodecs.dll to LZ32.dll REGEDIT4[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\KnownDLLs]"WindowsCodecs"="LZ32.DLL"then use Kexstubs to create definitions for any functions reported missing by Dependency Walker or ImportPatcher.[Lz32.dll] --- including API's in modules that use KnownDLLs to forward to LZ32 ---;WindowsCodecs.dllWICConvertBitmapSource=--- OR ---Use ImportPatcher to replace "WINDOWSCODECS.DLL" with "IPstub.dll" and missing functions with "yn" (or something better).
  12. In the lab with 600 new stubs.ini definitions and dlls from IE7&8 and ReactOS plus several unreleased custom dlls, Yes if you don't mind alpha-caliber stability.
  13. On second look, it's almost pure HTML5--lots of <svg>, <canvas>, <filter>, and <animate> tags and ECMAscript. There is conditional html for IE 8, so try setting your user agent to IE 8 (or to IE 9). I finally got it working in KM74_31, but the fine print is impossible to read on my 1024x768 monitor--needs a larger physical screen size!
  14. Appears to need javascript and webkit (Chrome or Safari?). QTweb 3.75 doesn't work. Pops up an alert box in IE5 saying 'Old IE detected... please upgrade' or something to that extent.... best option I could find was to view source and peek at the text graphics in the script comments (worth the peek!).
  15. ImportPatcher is built using VC5 so should run on Win95+ and NT4+, maybe even win32s and NT3.5. It will check (and can correct) the OS subversion (target platform) of any PE32 file. IP37 and IP38 will auto-target to the current (reported) OS version. Polish Jack1024's PEInfo.exe 0.9.1.1 (d7p) is also very good for editing PE32 header values.
  16. Could be a problem with the driver itself which, despite the 9x entries in the inf, was clearly never successfully tested on Win9x by Realtek themselves. In the 2014 inf, the 8106E uses the same install as the 8105E in which the only addition over the 8104E is something called EEE which can be enabled/disabled. So lets try creating an 8106E entry in the 2008 inf by cloning the 8104E section: To the 2008 inf file below [Realtek];8104E%RTL8104.DeviceDesc% = RTL8104.ndi, PCI\VEN_10EC&DEV_8137&REV_03%RTL8104.DeviceDesc% = RTL8104.ndi, PCI\VEN_10EC&DEV_8137&SUBSYS_813710EC&REV_03add;8106E%RTL8106.DeviceDesc% = RTL8104.ndi, PCI\VEN_10EC&DEV_8136&REV_07%RTL8106.DeviceDesc% = RTL8104.ndi, PCI\VEN_10EC&DEV_8136&SUBSYS_813610EC&REV_07And below[Strings]RTL8104.DeviceDesc = "Realtek RTL8104E Family PCI-E Fast Ethernet NIC"addRTL8106.DeviceDesc = "Realtek RTL8106E Family PCI-E Fast Ethernet NIC"You can also try using RTL8102.ndi as that is DEV_8136&REV_02 compared to the 8106E's DEV_8136&REV_07
  17. >The file version is 6.0.2600 but if you extract the package you'll see it contains the W95INF16.DLL AND W95INF32.DLL. >http://sdfox7.com/win95/rootsupd.htm That version of W95INF16.DLL is byte-identical to the 98se version. That version of W95INF32.DLL is file timestamp 9/5/2008, link timestamp 6/6/2000, file version 4.71.0016.0. The version on my 98se system is file timestamp 7/17/1999, link timestamp 9/17/1996, but file version 4.71.17.0.
  18. Posting with K-Meleon74_31: Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0 K-Meleon/74.0 All these new K-Meleon versions (1.6, 1.7, 1.8, 74) now run on my customized Win98se+KernelEx+Kexstubs system, but very slowly. I'll post details in the MSFN 9x sub-forum and on the K-Meleon forum.
  19. I hand-optimized both the v2008 and v2014 infs and got them both down to versions that are extremely similiar. Following is my 9x-only version of the v2014 driver inf: edit: Oops, posted my v2008 inf which is extremely similiar; now it's the v2014 mod with the 8106E entry. :blush:
  20. The XP .inf file is about 16x too big for 9x to recognize. Try deleting everything that is clearly not needed, then run it through minf to reduce the size to below 64KB and see if 9x will recognize it then. I'll compare the two files and report back later with my findings. These are all-in-one driver packages, however, so there probably isn't an actual 8106E driver file in the 9x package and the one in the NT package probably won't work in 9x.
  21. Thanks for the links, I'll give it a try and report back. BTW, I do have KM74 running in 98se but there are some glitches and it needs more testing.
  22. Change your monitor type from "generic Plug 'n Play" to "W2043" by updating the driver via "Device Manager->Monitors->generic Plug 'n Play->Driver->Update Driver" or "Display Properties->Settings->Advanced->Monitor->Change". Then you should be able to power up or reboot even with the monitor turned off and still be in the expected mode when you turn it on.
  23. > in August I discovered the KM v1.8.24 I haven't been so lucky. Can you provide a link to this version? I'd like to test it in Win98se.
  24. I see now that a static version of the entire page contents is hidden in a <noscript> block. With scripting on, a dynamic version should be loaded but doesn't (I don't see any scripting errors in the error console, so I don't know why not). We want to see the static version that is already there, so disabling javascript before loading the page or using the NoScript add-on to black-list the page should work. (I use a QuickJava button in my status bar to toggle JS; Using AdBlock Plus to block the scripts won't enable the <noscript> content.) But for those times when you have already loaded the page (at nbcnews.com or another) with scripting enabled and nothing displays, here's a bookmarklet to instantly display the content of all <noscript> blocks: javascript:db=document.body;db.innerHTML=db.innerHTML.split("noscript").join("div");void(0)To create a toolbar button in Firefox for the script: drag a site icon from the addressbar to the toolbar to create a bookmark button, then edit its properties by adding the code into the location field and providing a name like "unNS" or "!noscript".
×
×
  • Create New...