-
Notifications
You must be signed in to change notification settings - Fork 152
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sockets aren't functional because of a reference to ws2_32.dll #4
Comments
Dont you just love signatures. :) Thanks Signed Code! |
Hey, thanks for testing! It seems like the solution here might be to find a way to get |
I think the best bet would be probably to try and get .NET to use |
Ignore the project name, I just wanted to quickly test sockets lol. I knew they would probably have issues, as they are very hit-or-miss in early Windows |
Would porting the entire dll work? or just bashing our hands against our keyboards until microsoft does somthing for once the best bet. (they never do) |
Best case, we just point the imports to my wrapper DLLs (might have to add a few more system calls, we'll see) and it works. Worst case, maybe we can port over the DLL code from Wine? |
So we are |
Windows 7 Extended Kernel developer here: A few things:
Feel free to shoot me a message if you'd like to learn more about this. =) |
You would have to patch the version requested when wsastartup is called. All the Berkeley sockets stuff should be the same in both (bind, connect, read, write, close, shutdown etc.). The Windows specific WSA functions might not be available in the old dll. |
I'm not too familiar with Winsock, but couldn't you just:
This way the data in the output pointer still gets modified by the original function after the version is changed, so all should be good. |
Yes, set the version to 1.1 ( However, MSDN says there is a thing called "Windows Socket 2 Update" for 95 and that might install the new dll? It also claims 95 OSR2 supports 2.2 out of the box. https://web.archive.org/web/20040320073520/http://download.microsoft.com/download/0/e/0/0e05231b-6bd1-4def-a216-c656fbd22b4e/W95ws2setup.exe (https://web.archive.org/web/20000229194643/http://www.microsoft.com/windows95/downloads/contents/wuadmintools/s_wunetworkingtools/w95sockets2/releasenotes/releasenotes.asp claims you might need https://web.archive.org/web/20000511213719/http://download.microsoft.com/msdownload/dcom/95/x86/en/dcom95.exe first) |
@dotexe1337 Thanks for the info! I'll be sure to look into OllyDbg
I did think about doing this, but at that point, I didn't want to commit to handling more than one app and just wanted to focus on .NET. That being said, I'm not necessarily opposed to spinning this work off into continuation/alternative to KernelEx (seems like the one for 98/ME hasn't been maintained for some time). |
I will try it too, I already installed this a few hours afterwards whilst messing around with some Opera versions, but I didn't know it added ws2_32.dll |
It's useless, as .NET uses WSA functions from what I was able to determine |
Although the exception handling isn't working as expected, the exception was supposed to be |
That |
KernelEx is still maintained via a third party fork, though I think the original developer ceased work on it about ten years ago. In fact, there are a couple of large forum threads on MSFN discussing the development of KernelEx, which may have some useful information for your project if you're willing to comb through them (which I'm sure you are based on the time & dedication you tend to put into your projects =P): https://msfn.org/board/topic/175276-kernelex-unified-topics-links-index-thread/ In particular, you'll want to check out the threads for KernelEx updates by Jumper, Kext (DIY KernelEx extensions), KernelEx Auxiliary DLL's, and ImportPatcher. Those are the third party updates & tools that are still being developed on-and-off for it. Though, KernelEx is not particlarly stable. If you try to run such modern software on it such as web browsers, you'll get a BSOD just about every minute telling you you've ran out of resources, and very intense stuttering & lag. I'm unsure how much of this is attributed to Windows 9x itself and how much is a problem with KernelEx, as it's not a traditional extended kernel, but rather is an API extension that injects into the process at runtime, which may or may not be perfectly stable depending on how it's implemented. |
Closing this issue, for now, as it is pretty trivial to fix by installing the Windows Socket 2 Update
|
Can you provide a link to that fork? Is it on SF? GH? |
@rcmaehl It's on MSFN, as mentioned. It isn't simple to set up, since you need to comb through hundreds of pages of forum threads to find all of the right binaries, write your own KernelEx config file with the right load order & stubs, and other things. |
Also talking about this project being functional, check out this |
Sweet, I've added a link to W95ws2setup in the README for future reference. |
The sockets API internally uses winsockets and it's referencing ws2_32.dll (which doesn't exist on Windows 95)
I would try to patch this myself, but I have no idea how to edit the winsockets DLL directly without breaking the signatures or whatever
The text was updated successfully, but these errors were encountered: