Frage:
Können Sie Ihr Betriebssystem vor Programmen verstecken? Können Sie ein Programm dazu verleiten, zu glauben, dass Sie sich auf einem anderen Betriebssystem befinden?
Wolwo
2020-03-05 01:22:30 UTC
view on stackexchange narkive permalink

Gibt es eine Möglichkeit oder ein Programm, um ein anderes Programm glauben zu lassen, dass ich ein anderes System verwende?

Angenommen, ich bin derzeit unter Windows 7 32-Bit und möchte, dass das Programm Windows erkennt 10 64-Bit oder vielleicht Windows XP.

Kann ich mit Hardware etwas Ähnliches tun? Kann ich einem Programm mitteilen, dass ich ab Anfang 2003 auf einem PC ausgeführt werde, auch wenn es aus dem letzten Jahr (2019) stammt?

Etwas verwandte Frage: [Warum ist die OS-Verschleierungsabwehr gegen "Es ist ein Unix-System!"nicht weit verbreitet?] (/ q / 222839/129883)
Können Sie erklären, warum Sie dies tun möchten?Soll eine Software ausgeführt werden, die das Betriebssystem oder die Hardware direkt erkennt?
Sie können nicht, weil das Erkennen des Betriebssystems normalerweise mehr ist als nur das Überprüfen einer Nummer.Wenn Sie eine Funktion aufrufen, die im Host-Betriebssystem nicht vorhanden ist, stürzt das Programm ab.
Der Umfang dieser Frage scheint viel zu weit gefasst zu sein - es muss geklärt werden, ob wir versuchen, ein Programm zu täuschen, das sich nur weigert, ausgeführt zu werden, wenn eine einfache (und leicht gefälschte) Versionsprüfung die falsche Nummer ergibt, oder ein Programm, das aktiv istAusnutzen einer Anomalie, die für das jeweilige Betriebssystem / die jeweilige Hardware spezifisch ist und möglicherweise eine vollständige Emulation erfordert (einschließlich der Emulation von Fehlern, die in neueren Hardware- / Betriebssystemversionen behoben wurden).Die am besten gewählte Antwort zu VM wäre für einige Szenarien übertrieben und für andere unzureichend.
FWIW Ich beschäftige mich von Zeit zu Zeit mit alter Software, und manchmal vermutet sie sogar, dass das Host-Betriebssystem völlig falsch ist - wie ein Programm aus der frühen XP-Ära, das glaubt, Windows 8 sei tatsächlich etwas älter als Windows 95 und als solches inkompatibel
Es scheint, dass Sie davon ausgehen, dass Sie eine Binärdatei für das Betriebssystem * y * im Betriebssystem * z * ausführen können.Das ist im Allgemeinen nicht wahr, also haben Sie überhaupt keinen Fall.Für Betriebssysteme derselben Familie (bei denen Binärkompatibilität eine Rolle spielt) können Sie einige Systemaufrufe fälschen, um ein Programm auszutricksen.Sie können ein Betriebssystem nicht vor einem Programm verbergen, da das Programm das Betriebssystem benötigt, um etwas zu tun.Schließlich haben Programme keinen direkten Zugriff auf die Hardware, sondern können Marken und Herstellerzeichenfolgen (so werden billige Anti-VM-Überprüfungen durchgeführt) oder neuere Technologien überprüfen, sind aber wiederum leicht zu fälschen.ISA-Erweiterungen können ebenfalls getestet werden.
Es könnte billiger sein, alte Hardware bei eBay oder einem örtlichen Goodwill-Geschäft abzuholen.
Das existiert.[WINE] (https://www.winehq.org/) lässt Unix aus der Sicht des darin ausgeführten Programms als Windows erscheinen.
Sieben antworten:
Mike Ounsworth
2020-03-05 01:30:07 UTC
view on stackexchange narkive permalink

Freche Antwort: Ich denke, Sie sind dabei, eine virtuelle Maschine zu erfinden.

Um die Hardware zu fälschen , um wie ein 2003-Motherboard auszusehen Sie müssen sich beispielsweise mit dem Schreiben einer CPU-Befehlsübersetzungsschicht befassen, damit das Programm CPU-Binärbefehle aus dem Jahr 2003 ausgibt, und Ihre Schicht übersetzt sie in Anweisungen, die Ihre Hardware von 2019 versteht.

Damit das Betriebssystem wie Windows 7 32-Bit gefälscht wird, müssen Sie alle Binärdateien und andere Dateien in C: \ Windows , C: \ Program ausblenden Dateien usw., die eindeutig Teil einer Windows 10-Installation sind und stattdessen ein komplettes Dateisystem mit allen 32-Bit-Dateien von Windows 7 "fälschen". Sie benötigen außerdem einen Wrapper um den Windows 10-Kernel, damit die Kernel-APIs, auf die das Programm zugreifen kann, wie der Windows 7-Kernel aussehen und sich verhalten. dh Sie können dies nicht wirklich "vortäuschen"; Grundsätzlich müssen Sie eine voll funktionsfähige Installation von Windows 7 32-Bit in Windows 10 emulieren.

Wenn Sie dies alles getan haben, haben Sie im Grunde genommen virtuelle Maschinen erfunden . Warum laden Sie nicht einfach VirtualBox herunter, stellen die Hardwareemulation auf Hardware aus dem Jahr 2003 ein und installieren Windows 7 32-Bit darauf?

Wenn Sie eine 2003-CPU speziell emulieren möchten, benötigen Sie wahrscheinlich etwas wie QEMU.AFAIK VirtualBox unterstützt die Auswahl bestimmter Befehlssätze nicht.
Die x86-Anweisungen der Ära 2003 werden weiterhin auf Computern der Ära 2019 (im 32-Bit-Modus) ausgeführt.Es ist keine Übersetzung erforderlich.Sie müssen jedoch noch darauf hinweisen, dass nur die Anweisungen aus der Ära 2003 verfügbar sind.Und Sie müssen möglicherweise einen Fehler auslösen, wenn eine Anweisung nach 2003 ausgeführt wird, da das Programm sonst möglicherweise erkennt, dass Sie lügen.
"Emulieren Sie eine voll funktionsfähige Installation von Windows 7 32-Bit in Ihrem Windows 10" - kleiner Punkt, aber ich denke, das OP bezog sich umgekehrt ... sie verwenden derzeit Win7 32-Bit und möchten "emulieren"Win10 64-Bit (oder WinXP).
@MrWhite Kein Problem, wenn die Hardware x64-fähig ist und die Virtualisierungsunterstützung aktiviert ist. Dies ist auch dann möglich, wenn das Host-Betriebssystem 32-Bit ist.Wenn die Hardware WIRKLICH 32-Bit ist (oder keine Hardwarevirtualisierungsfunktion hat), ist die vollständige Emulation die einzige Option.Und ich kenne kein Produkt, das das kann.
Klingt nach dem Weinprojekt;aber sie machen es leicht, absichtlich zu erkennen.
Wie ich [hier] erklärt habe (https://stackoverflow.com/a/23998052/103167), würde dies einen * Emulator * erfordern, nicht nur eine virtuelle Maschine.Eine virtuelle Maschine erzeugt die Illusion, dass Sie eine eigene Maschine haben, wenn Sie diese tatsächlich mit anderen teilen (kein Informationsverlust zwischen VMs).Ein Emulator erzeugt die Illusion, dass Sie auf einem bestimmten System ausgeführt werden, das sich von der tatsächlichen Hardware unterscheidet (kein Informationsverlust über die tatsächliche Hardware in die emulierte Umgebung).
@user253751: Intels SDE (Software Development Emulator) kann dies: dynamische binäre Übersetzung (über die Intel PIN-Bibliothek) für Anweisungen, die als vorhanden oder nicht vorhanden emuliert werden müssen, andernfalls native Geschwindigkeit.z.B.[Wie teste ich AVX-512-Anweisungen ohne unterstützte Hardware?] (Https://stackoverflow.com/q/51805127) / [Codierung auf unzureichender Hardware] (https://stackoverflow.com/q/53637886).Sie sind sich jedoch nicht sicher, ob Sie den 64-Bit-Benutzerbereich in einem 32-Bit-Prozess emulieren können.Offensichtlich sind virtuelle Adressraumbeschränkungen ein Problem!QEMU kann, aber wahrscheinlich nicht SDE.
CBHacking
2020-03-05 15:16:15 UTC
view on stackexchange narkive permalink

Abhängig von der gewünschten Stufe des "Tricks" können Sie dies möglicherweise mit integrierten Kompatibilitätsfunktionen tun. Windows unterstützt das Ausführen von Programmen in speziellen Modi, die ältere Versionen und / oder ältere Hardware auf verschiedene Weise emulieren. Die Emulation ist nicht perfekt - es ist ziemlich einfach zu erkennen, dass sie verwendet wird, wenn Sie schauen, und um festzustellen, wie das tatsächliche Betriebssystem aussieht -, aber sie wird eine Software befriedigen, die glaubt, dass sie nur unter Windows 2000 oder so ausgeführt werden kann kennt nur den 256-Farben-Modus.

Um die Software zu täuschen, dass sie auf einem völlig anderen Betriebssystem ausgeführt wird - Linux anstelle von Windows oder ähnlichem -, ist wine (für Windows-Code unter Linux) oder wsl (Windows-Subsystem für Linux, führt unveränderte ELF64-Linux-Binärdateien und Linux-erforderliche Skripte aus, erfordert jedoch Win10). Auch dies ist für jeden erkennbar, der danach sucht , aber es täuscht ein Programm vor, das nur einen Programm- oder Bibliotheksaufruf aufruft, um den Namen / die Version des Betriebssystems auszuspucken.

520
2020-03-05 19:54:39 UTC
view on stackexchange narkive permalink

Sie können dies bis zu einem gewissen Grad tun, aber es wird nicht einfach.

Zunächst können Sie WINE ausprobieren, eine Windows-Kompatibilitätsschicht für Linux. Sie können ganz einfach festlegen, welche Windows-Version Sie emulieren möchten. Der Nachteil ist, dass die Anwendungskompatibilität sehr häufig auftreten kann. Wenn Ihre Anwendung nicht funktioniert, müssen Sie möglicherweise eine Problemumgehung finden, damit sie funktioniert (sofern überhaupt eine vorhanden ist).

Die zweite Der Ansatz, der gut zu Ihrer zweiten Anforderung (Verstecken von Hardwaredetails) passt, ist QEMU. QEMU ist eine kostenlose Software für virtuelle Maschinen, und der Grund, warum ich dies bei Dingen wie VMware oder VirtualBox erwähne, ist, dass Sie auf Kosten der Benutzerfreundlichkeit viel mehr Kontrolle über die Art der Maschine haben, die Sie erstellen möchten.

Sie können beispielsweise das Flag -cpu verwenden, um anzugeben, welche Art von CPU Sie emulieren möchten. Sie können beispielsweise -cpu pentium3 verwenden, um eine Pentium 3-CPU zu emulieren. Das würde das installierte Gastbetriebssystem und damit das Programm sehen.

Ich muss sagen, meine Windows-Anwendungen wurden von WINE keinen Moment lang getäuscht.Vielleicht lag es an meinen mangelnden Fähigkeiten oder an meiner Vorliebe für Bier, aber meine Anwendungen wussten immer, dass sie nicht auf * echten * Fenstern laufen!
@CortAmmon woher wussten sie das?!:-D
@CortAmmon WINE hinterlässt in seinen Faux-Windows-Instanzen eigene, leicht identifizierbare Registrierungseinträge.
Jens
2020-03-05 18:51:09 UTC
view on stackexchange narkive permalink

Gibt es eine Möglichkeit oder ein Programm, um ein anderes Programm glauben zu lassen, dass ich ein anderes System verwende?

Ja, und es ist üblich.

Zum Beispiel FreeBSD verfügt über einen "Linuxulator", mit dem Linux-Binärdateien ausgeführt werden können. Dies ist weder in einer virtuellen Maschine noch in einer Emulation. Es ist eine alternative Reihe von Systemaufrufen für Linux-Binärdateien. Die Erkennung, ob eine Binärdatei native FreeBSD-Systemaufrufe oder Linux-Systemaufrufe verwendet, erfolgt über den ELF-Header der ausführbaren Datei, AFAIK.

Ein ähnliches Prinzip wird in WINE verwendet (das Windows-native Programme auf einem Linux- oder BSD-System ausführt). und in Version 1 von Windows Services für Linux (in der Linux-native Programme unter Windows ausgeführt werden).

fraxinus
2020-03-05 15:15:45 UTC
view on stackexchange narkive permalink

Je nach Programm nur bis zu einem gewissen Grad.

Jedes moderne Betriebssystem verfügt über einen Systemaufruf, der nur Versionsnummern und / oder Zeichenfolgen zurückgibt.

Sicher, Sie können Fälschungen vornehmen Das. Windows hat dies sogar in der Benutzeroberfläche (Suche nach "Kompatibilitätsmodus").

Wenn das Programm darüber hinausgeht (explizit bestimmte Betriebssystemfunktionen ausprobieren oder an bestimmten Stellen nach bestimmten Dateien suchen), müssen Sie dies tun Entwickeln Sie den Erkennungsmechanismus zurück und überlegen Sie, wie Sie ihn täuschen können.

Siehe @ Mike-Antwort - Sie werden die VMs und Emulatoren schnell erfinden. Und selbst ein Emulator ist keine perfekte Lösung.

Ich bin mir ziemlich sicher, dass der Kompatibilitätsmodus mehr kann als nur die Versionszeichenfolge vorzutäuschen.Einige Beispiele finden Sie hier: https://superuser.com/questions/133746/how-does-the-compatibility-mode-in-windows-work und hier: http://web.archive.org/web/20181202210601/https://blogs.msdn.microsoft.com/oldnewthing/20031223-00/?p=41373#comment-117803
Prof. Falken
2020-03-05 20:55:23 UTC
view on stackexchange narkive permalink

Es hängt davon ab, welche Programme Sie "täuschen" möchten. Ist es ein spezifisches Programm? In diesem Fall sollten Sie sich genau ansehen, wie daraus abgeleitet wird, auf welchem ​​Betriebssystem und auf welchem ​​Computer es ausgeführt wird. Wenn nur eine oder mehrere Möglichkeiten zur Erkennung verwendet werden, können Sie auf einfache Weise diese Aufrufe überschreiben oder sogar die ausführbare Programmdatei selbst patchen .

Aber wenn Wenn Sie nach einer allgemeinen Lösung suchen, die ein oder mehrere Programme zum Narren hält, besteht die richtige und freche Antwort darin, das Programm in einer emulierten Umgebung wie Wine oder einem Systememulator wie Qemu auszuführen.

Bearbeiten mit "praktischen" Beispielen :

Mit WSL2 unter Windows 10 können Sie Wine unter Windows installieren und OLD Windows ausführen Programme in Windows 10, die unter Windows 10 sonst möglicherweise nicht funktionieren. Mit winetricks können Sie alte Systembibliotheken installieren und Wine so anpassen, dass es sich wie alte Windows-Versionen verhält.

Rahul
2020-03-05 23:05:09 UTC
view on stackexchange narkive permalink

Fügen Sie hier nur meine 10 Bits hinzu.

Wenn Ihr Kontext webbasiert ist, können Sie die USER AGENT-Zeichenfolge definitiv mithilfe von Entwicklertools ändern.

Gehen Sie für Chrome zu Entwicklertools ( Strg + Umschalt + I).

Gehen Sie auf der Registerkarte Netzwerk zu Netzwerkbedingungen und dann zu Benutzeragent.

Deaktivieren Sie das Kontrollkästchen Automatisch aktivieren. Sie können nun nach Belieben User Agent auswählen und bearbeiten.

Hinweis: Diese Änderung ist vorübergehend und wird zurückgesetzt, wenn Sie Entwicklertools aktualisieren oder schließen.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...