Skip to content
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

NTVDMx64 on Windows 8(.1) #23

Closed
AhmadMoemen opened this issue Mar 8, 2018 · 11 comments
Closed

NTVDMx64 on Windows 8(.1) #23

AhmadMoemen opened this issue Mar 8, 2018 · 11 comments

Comments

@AhmadMoemen
Copy link

AhmadMoemen commented Mar 8, 2018

Hello devs, thanks for this great tool to run DOS applications (I can't get Jazz Jackrabbit running though).
Well, I tried NTVDMx64 on Window 8.1 and the installer asked me to install the ntvdm for Windows 7's loader at my own risk, and I did that, after I reboot, I unlock my PC and I tried a DOS game (MARIO) but it didn't work, so I've uninstalled NTVDMx64 (Windows Defender removed it before un-installation) and I got a BSOD, I've rebooted my PC and used it for a while (2-3 minutes approx.) and another BSOD comes out, everytime I boot my PC that happens, until I've reinstalled Windows 8.1 all over again....
I know it's not supported on Windows 8.1 but I tried it at my own risk, so that's what I've got to tell you about testing NTVDM on a WIndows 8.1 computer.
Can you support this project for Windows 8.1's Loader?

@AhmadMoemen AhmadMoemen changed the title NTVDMx64 can't run on Windows 8.1's loader. NTVDMx64 can't run on Windows 8.1's loader. (Not yet confirmed) Mar 8, 2018
@AhmadMoemen
Copy link
Author

AhmadMoemen commented Mar 8, 2018

Anyways, I saw a post in the VOGONS forum posted by "robertmo" that proves that it works, still don't know how? (I've tried emendelson's 2017 compiled version before the compatibility improvement).
I'll try the 2018 one right now,

@AhmadMoemen AhmadMoemen changed the title NTVDMx64 can't run on Windows 8.1's loader. (Not yet confirmed) I can't install NTVDMx64 on Windows 8.1. Mar 8, 2018
@leecher1337
Copy link
Owner

Sounds strange, a BSOD? I don't install any kernel drivers or bad things like that, just usermode hooks.
Maybe the loader injected itself into a critical system process which crashed and then caused a BSOD? winlogon.exe would be such a critical process, but iric AppInit-DLLs dont't inject into this process anyway.
What BSOD did you get? Do you have a Windows minidump for analysis?

Anyways, the CreateProcess() Hook propagation wasn't too stable, so I guess I'll have to wait until you try out the new loader.

@AhmadMoemen
Copy link
Author

AhmadMoemen commented Mar 9, 2018

I'm sorry I can't remember, too bad but all I remember is that the code was 0xc000021a I think.
Give it a search, or if you know something about it, fix it 👍

@leecher1337
Copy link
Owner

Ok, like I thought, loader got injected into a critical system process and crashed it somehow.
Could be that by removing the CreateProcess() hooks this is fixed, but it's not possible to diagnose this without minidump, sorry. I do need to know where it crashed, so maybe you want to try it again with new loader?
Make sure to have a rescue media (i.e. Windows Boot CD) ready, you can easily recover from this error by removing the ldntvdm.dll libraries from System32 and syswow64 directory when in rescue system. Instead of repairing/reinstalling Windows, open command prompt and delete the 2 files.

@AhmadMoemen
Copy link
Author

AhmadMoemen commented Mar 11, 2018

I knew where it all started, I've installed the one for Windows 7's loader.
I joined the Vogons forum to ask a user called "robertmo" how he installed NTVDMx64 on his Windows 8.1.
He just confirmed that and he used the one that supports Win10's loader (Win8 and later got the same loader but the only change is the version numbers).
How to use Win10's loader instead of Win7's one? I got no choice.

@leecher1337
Copy link
Owner

Easiest method is to modify install.bat, after pause command, there is a
set VERSION=6.1
change it to
set VERSION=10.0
and it should use Win10 loader then.
If you can confirm that Win 10 loader also works for you on Win 8.1, I'll update the official install.bat accordingly to support Win 8

@AhmadMoemen
Copy link
Author

AhmadMoemen commented Mar 11, 2018

Alright then, I'll try.
I'll post my proof of concept but beware, I'm using AeroGlass to theme it (exactly) like Windows 7.
EDIT: It still says that I'll Windows 7 loader at my own risk.

@AhmadMoemen
Copy link
Author

So I've tried yesterday to post my trying but looks like my internet connection was weak, so No BSODs and I tried MARIO.exe but only showed me a blank (black) screen when I double-click on it.
So I've navigated through the game manually by cmd (Admin) and it worked!
But when I used to use Windows 7 (2 months ago) I installed ntvdmx64 and when I double-click it works,
When I run as admin it doesn't find the game. But, it's confirmed it's working!
When I run by double clicking:-
image
Running through CMD (Admin) First Try:-
image
Second try(It works):-
image

@leecher1337
Copy link
Owner

The phenomenon that it works on command shell only the second try is typical for the case that the injection into the console process doesn't work properly.

Here is what happens:
When you first start a 16 bit/DOS executable, you get the message you posted above. This message uses the MessageBox() function, which is a GUI function, therefore user32.dll et al is needed.
So starting the messagebox implies for the console process to load DLLs for GUI applications which in turn kicks in the AppInit DLL hooks so that the loader finally gets injected into the process and can launch NTVDM.

What I find interesting is, that launching it from explorer doesn't work, maybe the patching of conhost.exe cannot be done which is needed to get console graphics working.
Can you please check if starting a DOS Textmode executable from explorer works?

You can use DebugView from sysinternals to check for messages from the loader, it may tell you about problems when trying to hook/inject.
But as Windows 10 loader seems to work on Windows 8, I will update the installer accordingly, thanks.

@AhmadMoemen
Copy link
Author

AhmadMoemen commented Mar 13, 2018

DOS Textmode executable works fine when doubleclicking.
This is the DbgView log when I'm running a DOS graphics executable through the explorer:-
DOSLOG.LOG
And this is another DbgView log of the textmode executable running though the explorer:-
DOSTXT.LOG
So, will you need the logs of executables running through cmd too?

@AhmadMoemen AhmadMoemen changed the title I can't install NTVDMx64 on Windows 8.1. NTVDMx64 on Windows 8(.1) Mar 13, 2018
@AhmadMoemen
Copy link
Author

AhmadMoemen commented Mar 13, 2018

Gotta try every deprecated Windows (LOL)!
First, I'll try Vista x64.
And Windows 10 T.P. x64 too!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants