Windows 3.1x Support Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Memberlist || Home || Statistik || Kalender || Staff Willkommen Gast!
[ win31.de ] [ Impressum/Kontakt ] [ Über das Forum/Regeln ] [ Datenschutzerklärung ]

Windows 3.1x Support Forum » MS DOS 1.x-8.x » Getnt - Ntvdm erkennen » Threadansicht

Autor Thread - Seiten: -1-
000
28.04.2008, 22:53 Uhr
Estron Dekal



Hallo,

Hab gerade ein kleines Programm fertiggestellt, dass die NTVDM von Windows NT (2000, XP, Vista, ...) erkennen soll - natürlich als DOS-Programm, also sozusagen von "innen". Hintergrund: In den Programmen, die ich bisher von anderen Leuten gelesen habe, wird bei der Frage "Ist es die NTVDM?" immer nur der DOS-Versionscheck benutzt und geschaut, ob die berichtete Version 5.50 beträgt.
Das ist mir aber zu generisch, weswegen ich erstmal zu DEBUG gegriffen und mir den Speicher der NTVDM angesehen hab. Erstmal hab ich nur festgestellt, dass alles einem MS-DOS 5.0 sehr ähnlich sieht - dann allerdings bin ich auf den NTVDM-Maustreiber gestoßen, der anscheinend immer geladen wird und zudem einige recht offensichtliche "Erkennungsmerkmale" hat. (Im Quelltext des Programmes alles genau beschrieben, auf Englisch.)

Die nun von mir eingesetzte Erkennungsmethode ist aber sehr unsicher und ich weiß nicht, ob NTVDM-Versionen außer die aus Windows XP ebenfalls darauf ansprechen - ich habe ebend aus der NT-Reihe nur XP. Deswegen wollte ich mal anfragen, ob von euch jemand das ganze mal auf anderen NT-Versionen (oder auch weiteren DOS-Betriebssystemen, ich will ja nichts falsch als NT erkennen) testen kann. Bisher hab ich nur MS-DOS getestet, werde aber demnächst auch noch selbst weitere DOSen hernehmen.

In der ZIP-Datei sind die Dateien GETNT.COM und GETNT.ASM (Netwide-Assembler-Quelltext, meinetwegen Public Domain) enthalten. Das Programm ist Windows-freundlich und wartet nach Ausführung auf Tastendruck, damit das DOS-Fenster sich nicht sofort wieder schließt (Und ja, es ist normal, wenn nur "Not NT" oder "NT" angezeigt wird. Die Benutzerschnittstelle ist minimal, oder: Ich hatte einfach keine Lust, was aufwendigeres zu machen.)

GETNT.ZIP (3.021 Byte)

Estron

Dieser Post wurde am 28.04.2008 um 22:58 Uhr von Estron Dekal editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
001
30.04.2008, 07:24 Uhr
Werner



Hallo Estron!

Ich habe gestern Dein Programm an einigen virtuellen Maschinen getestet (VPC 2007 und das an sich stabilere VMWare v5.5) und kann Dir bestätigen, dass es mit den Betriebssystemen DOS 6.22, Windows 3.x, Windows 9x und Windows XP funktioniert. Allerdings wird Windows Vista Beta als "NichtNT" eingestuft (Mein originales VISTA kann ich zur Zeit nicht mehr starten, da ich Windows XP auf einer anderen Partition nachinstalliert habe, Bootsektor überschrieben, Wiederherstellungs-DVD scheint unbrauchbar), befürchte aber dass es grundlegende Unterschiede zu Windows-NT-Vorgängerversionen gibt. Abgesehen davon scheint es, dass zur Zeit fast nur mehr 64-Bit Prozessoren (meist als Doppelkernprozessoren) verbaut werden. Ich habe mir Deinen Quelltext nicht angesehen und weiss daher nicht ob dies einen Einfluss auf Dein Programm hat.

Ciao Werner.
--
Es lebe Windows VISTA. Das langsamste Betriebssystem aller Zeiten.

Dieser Post wurde am 30.04.2008 um 07:32 Uhr von Werner editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
002
30.04.2008, 11:54 Uhr
Estron Dekal




Zitat:
Werner postete
Ich habe gestern Dein Programm an einigen virtuellen Maschinen getestet (VPC 2007 und das an sich stabilere VMWare v5.5)

Danke!


Zitat:
und kann Dir bestätigen, dass es mit den Betriebssystemen DOS 6.22, Windows 3.x, Windows 9x und Windows XP funktioniert. Allerdings wird Windows Vista Beta als "NichtNT" eingestuft

Sowas hatte ich schon befürchtet. (Für Win2000 hat mir allerdings schon jemand bestätigt, dass es funktioniert.)


Zitat:
(Mein originales VISTA kann ich zur Zeit nicht mehr starten, da ich Windows XP auf einer anderen Partition nachinstalliert habe, Bootsektor überschrieben, Wiederherstellungs-DVD scheint unbrauchbar), befürchte aber dass es grundlegende Unterschiede zu Windows-NT-Vorgängerversionen gibt.

Naja, ich hoffe mal nicht. Werde mir also wahrscheinlich erstmal ein Vista beschaffen müssen, auf dem ich ein bisschen Debuggen kann


Zitat:
Abgesehen davon scheint es, dass zur Zeit fast nur mehr 64-Bit Prozessoren (meist als Doppelkernprozessoren) verbaut werden. Ich habe mir Deinen Quelltext nicht angesehen und weiss daher nicht ob dies einen Einfluss auf Dein Programm hat.

Naja, es ist ein Real-Mode-DOS-Programm. Das heißt, es läuft natürlich auch im V8086-Modus der 32-Bit-Prozessoren. Da es diese Kompatibilitätsumgebung im 64-Bit-Modus aber nicht mehr gibt (und XP64/Vista64 deswegen auch keine NTVDM mehr haben), funktioniert mein Programm auf 64-Bit-Prozessoren natürlich einfach gar nicht, sofern sie im 64-Bit-Modus laufen.
64-Bit-Prozessoren im 32-Bit-Modus sind aber genauso wie die normalen 32-Bit-Prozessoren, also alles kein Problem.

Der Zweck des Programm(-teil)s soll später mal sein, in ein SYS-Programm, an dem ich gerade arbeite, benutzt zu werden. Windows NT bzw. die NTVDM verhindert ja den Festplattenzugriff übers BIOS, weswegen es dort sinnlos wäre, zu versuchen den MBR zu lesen/schreiben. (Und natürlich kann man (ein auch auf Vista funktionsfähiges) GETNT auch in DOS-Systeminfo-Programmen benutzen )

Estron

Nachtrag: Willst du in die Liste der Tester eingetragen werden? (Siehe Kommentare am Anfang des Programms)

Dieser Post wurde am 30.04.2008 um 11:56 Uhr von Estron Dekal editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
003
30.04.2008, 17:03 Uhr
Estron Dekal



Ich habe nochmal dran rumgewerkelt: GETNT001.ZIP (3.505 Byte)

Änderungen: Sucht jetzt auch in den Untersegmenten eines System-Daten-Segments anstatt den Maus-Treiber am Anfang ebendiesens zu erwarten. Funktioniert jetzt auch, falls noch weitere DOS-Treiber im gleichen System-Daten-Segment wie der Maus-Treiber sind.

Da die Neuerungen relativ reibungslos (und mit genug Absicherungen) eingefügt worden sind, sollte das Programm immer noch auf allen System funktionieren, die als funktionsfähig gekennzeichnet sind. Auf dem Vista-System könnte es nicht geklappt haben, weil mehrere DOS-Treiber im gleichen Segment wie der Maus-Treiber sind/waren. (Das heißt meistens: Weil mehrere DOS-Treiber hochgeladen sind/waren.) Also bitte nochmal testen

@Werner: Hab deine Tests jetzt auch erstmal als "Anonymous" eingefügt, sag's wenn ich das ändern soll.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
004
09.05.2008, 07:41 Uhr
Werner



Servus Estron!

Ich habe mir Dein Programm nun etwas näher angesehen (Vorerst nur die
Erläuterungen und die Funktionsweise). Von der Idee her müsste Dein
Programm eigentlich funktionieren, da bei den Windows-NT-Versionen 4.0,
5.0, 5.1, und 6.0 die beiden Suchstrings in den Dateien ntio.sys bzw.
ntioxxx.sys vorhanden sind. Tatsächlich funktioniert es unter VISTA
Beta 2 aber immer noch nicht ("NotNT").
Der grundlegende Unterschied zu vorangegangenen Windows Versionen
besteht darin, dass es unter VISTA massive Zufriffbeschränkungen für
Programme gibt. Viele Programme, selbst solche von denen es man das
nicht erwarten würde lassen sich nur mit der Option "als
Systemadministrator starten" zum laufen bringen. Ohne diese starten sie
erst gar nicht, stürzen ab oder liefern schlichtweg unsinnige
Ergebnisse.
Ich halte es für möglich. dass der wesentliche Programmteil unter VISTA
wegen Zugriffsverletzungen gar nicht ausgeführt wird und so die
Fehleinstufung zustande kommt.
Um weitere Test machen zu können müsste ich VISTA reinstallieren (nicht
die Beta Version; die richtige VISTA-Version habe ich zwar noch auf
einer Partition, kann sie aber nicht starten), und nach den Tests wohl
endgültig durch WindowsXP ersetzen. Das wird aber einige Zeit dauern.

Ciao Werner.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
005
09.05.2008, 17:15 Uhr
DosAmp
Administrator
Avatar von DosAmp

Unter meinem Windows Vista mit SP1 klappt es auch nicht, weder mit normalen noch mit erhöhten Benutzerrechten. Dass es also mit den fehlenden Rechten zu tun hat, würde ich mal anzweifeln, wohl aber damit, dass das simulierte DOS in Vista ziemlich verkrüppelt ist. (So reichte es auch im Gegenzug für eine mehrsprachige Oberfläche auch nicht mehr für eine deutschsprachige Version von edit.com.)
--
DosAmp. Macht das Forum unsicher seit Sommer 2005.
System-Profile: Hauptrechner (C2D S775) – Zweitrechner (P4 S423)

Dieser Post wurde am 09.05.2008 um 17:19 Uhr von DosAmp editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
006
09.05.2008, 20:07 Uhr
Estron Dekal




Zitat:
Werner postete
Ich habe mir Dein Programm nun etwas näher angesehen (Vorerst nur die
Erläuterungen und die Funktionsweise). Von der Idee her müsste Dein
Programm eigentlich funktionieren, da bei den Windows-NT-Versionen 4.0,
5.0, 5.1, und 6.0 die beiden Suchstrings in den Dateien ntio.sys bzw.
ntioxxx.sys vorhanden sind. Tatsächlich funktioniert es unter VISTA
Beta 2 aber immer noch nicht ("NotNT").

Mhm. Hatte mir diesen ntioxxx.sys-Kram auch angeschaut, deswegen hab ich's ja gewählt um die NTVDM zu erkennen. Einen Dank an Andy Watson, wer auch immer das war


Zitat:
Der grundlegende Unterschied zu vorangegangenen Windows Versionen
besteht darin, dass es unter VISTA massive Zufriffbeschränkungen für
Programme gibt. Viele Programme, selbst solche von denen es man das
nicht erwarten würde lassen sich nur mit der Option "als
Systemadministrator starten" zum laufen bringen. Ohne diese starten sie
erst gar nicht, stürzen ab oder liefern schlichtweg unsinnige
Ergebnisse.
Ich halte es für möglich. dass der wesentliche Programmteil unter VISTA
wegen Zugriffsverletzungen gar nicht ausgeführt wird und so die
Fehleinstufung zustande kommt.
Um weitere Test machen zu können müsste ich VISTA reinstallieren (nicht
die Beta Version; die richtige VISTA-Version habe ich zwar noch auf
einer Partition, kann sie aber nicht starten), und nach den Tests wohl
endgültig durch WindowsXP ersetzen. Das wird aber einige Zeit dauern.

Na, wird wohl doch nicht nötig sein. Bin jetzt durch einen Bekannten mal an einen laufenden Vista-Rechner gekommen, und habe den eigentlich SEHR banalen Fehler entdeckt: Die NTVDM (besser gesagt: NTIO.SYS) von Windows 2000, XP (und hoffentlich auch NT 3.x, 4.x) initialisiert die Systemdaten-Blöcke immer mit dem MCB-Bezeichner "SD", alle ungenutzten Stellen stehen auf 00h. Bei Vista sind diese Stellen, warum auch immer, NICHT mit Nullen gefüllt. Werde das Problem noch ein bisschen untersuchen und dann wohl ne neue Version des Programms hochladen.

Allerdings: Mit den Zugriffs-Rechten hatte ich auch wieder erhebliche Probleme, allerdings nicht beim Benutzen des Programms. Vielmehr durfte ich die Datei CONFIG.NT (von der NTVDM statt CONFIG.SYS benutzt) nur mit Administrator-Rechten überschreiben/bearbeiten. Sehr nervig!


Zitat:
DosAmp postete
Unter meinem Windows Vista mit SP1 klappt es auch nicht, weder mit normalen noch mit erhöhten Benutzerrechten. Dass es also mit den fehlenden Rechten zu tun hat, würde ich mal anzweifeln, wohl aber damit, dass das simulierte DOS in Vista ziemlich verkrüppelt ist.

Hab ich auch gemerkt. Abgesehen von der 32-MiB-DPMI-Beschränkung stellt VistaDOS anscheinend permanent keine UMBs mehr zur Verfügung. (Oder lag das nur an dem PC, an dem ich jetzt getestet habe?) Die Kommentare der CONFIG.NT suggerierten mir zwar, dass das mit Einfügen der (nicht standardmäßigen) EMM-Linie möglich wäre, hat sich aber nichts dran getan.


Zitat:
(So reichte es auch im Gegenzug für eine mehrsprachige Oberfläche auch nicht mehr für eine deutschsprachige Version von edit.com.)

Ja, das ganze "Windows DOS" (wie sich COMMAND.COM der NTVDM selbst nennt) ist in Vista seltsamerweise nur noch auf Englisch verfügbar. War aber mit dem MS-DOS 8.00 (= Windows Me DOS), dass es auf den "MS-DOS-Startdisketten" von Windows XP gab, auch schon so.

EDIT:
Anscheinend ist das Vista-Problem nicht Vista-Spezifisch, zumindest nicht direkt.
Durch Auslassen der EMM-Zeile in der CONFIG.NT der Windows-XP-NTVDM wird der "SD"-MCB-Bezeichner ebenfalls nur "unsauber" geschrieben, die unbenutzten Stellen werden nicht mit Nullen aufgefüllt. Dies geschieht also immer, wenn der besagte SD-Block nicht in der UMA ist (welche wohl von vornherein nur Nullen drin stehen hat). Wie oben erwähnt sperrt VistaDOS die UMA anscheinend aber immer oder zumindest per Standardeinstellung, so dass der SD-Block hier immer im unteren Speicher angelegt wird.

Dieser Post wurde am 09.05.2008 um 20:43 Uhr von Estron Dekal editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
007
09.05.2008, 20:40 Uhr
DosAmp
Administrator
Avatar von DosAmp

Eine zusätzliche Eigenschaft, die man prüfen könnte, wäre weiterhin, ob "%OS%"=="Windows_NT", was man zwar auch unter DOS/Windows 3.x/4.x leicht in der autoexec.bat erzwingen könnte, was aber praktisch nicht „zufällig“ passiert. Als Holzhammer dient notfalls immer noch die Ausgabe von VER.

Dank Aero oder genauer DWM funktioniert auch nicht einmal mehr der Vollbild-Modus der Konsole. Nur Benutzer der klassichen Oberfläche können sicher sein, dass das noch zuverlässig klappt. Ich verwende an meinem neuen Rechner jetzt sowieso ausschließlich DOSBox für ernsthafte DOS-Programme/-Spiele.

Die config.nt sieht mir im Übrigen stark nach einer simplen Kopie des 2k/XP-Analogons aus.
--
DosAmp. Macht das Forum unsicher seit Sommer 2005.
System-Profile: Hauptrechner (C2D S775) – Zweitrechner (P4 S423)

Dieser Post wurde am 09.05.2008 um 20:41 Uhr von DosAmp editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
008
09.05.2008, 20:54 Uhr
Estron Dekal




Zitat:
DosAmp postete
Eine zusätzliche Eigenschaft, die man prüfen könnte, wäre weiterhin, ob "%OS%"=="Windows_NT", was man zwar auch unter DOS/Windows 3.x/4.x leicht in der autoexec.bat erzwingen könnte, was aber praktisch nicht „zufällig“ passiert.

Naja, aber gerade weil man es erzwingen kann, ist es eine quasi "zufällige" Angabe.


Zitat:
Als Holzhammer dient notfalls immer noch die Ausgabe von VER.

Nein, denn z.B. 4DOS, FreeCOM oder selbst einige normale MS-DOS COMMAND.COMs laufen problemlos in der NTVDM. Und wer versichert mir, dass %COMSPEC% noch zur CMD.EXE zeigt?

Die bisher meistgenutzte Methode ist ja die Überprüfung der gemeldeten "wahren" DOS-Version. Aber selbst das ist mir zu lasch, weniger weil die NTVDM hier ebenfalls leicht manipuliert werden könnte (mit SETVER-artigen DOS-Programmen), sondern vielmehr, weil ich ein *DOS leicht als NT erkennen könnte. (Und selbst wenn jemand nur mutwillig die Version umgestellt hat!)

Gerade deswegen habe ich ja den Holzhammer für die NTVDM neu erfunden: Ein relativ einzigartiges Teil des emulierten DOS-Kernels (anstatt nur des Kommandozeileninterpreters), welches anscheinend gezwungenermaßen immer geladen wird.


Zitat:
Dank Aero oder genauer DWM funktioniert auch nicht einmal mehr der Vollbild-Modus der Konsole. Nur Benutzer der klassichen Oberfläche können sicher sein, dass das noch zuverlässig klappt. Ich verwende an meinem neuen Rechner jetzt sowieso ausschließlich DOSBox für ernsthafte DOS-Programme/-Spiele.

DOSBox ist wirklich gut für DOS-Spiele ausgelegt - aber anscheinend nur für diese (Ja, ich bin deswegen zugegebenermaßen recht stinkig)


Zitat:
Die config.nt sieht mir im Übrigen stark nach einer simplen Kopie des 2k/XP-Analogons aus.

Ja, aber wie gesagt wurde immerhin die (sinnlose?) EMM-Zeile aus der Standardeinstellung gestrichen. Und ANSI.SYS entfiel anscheinend auch.

Siehe auch EDIT im oberen Posting. (Falls du den nicht mitbekommen hast.)
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
Seiten: -1-     [ MS DOS 1.x-8.x ]  



Win31.de

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek