Frage

Ein Freund schickte mir diesen Code und behauptet, dass sie den Prozessor beschädigen könnten. Ist das wahr?

void damage_processor() {
    while (true) {
        // Assembly code that sets the five control registers bits to ones which causes a bunch of exceptions in the system and then damages the processor
        Asm(
            "mov cr0, 0xffffffff \n\t"
            "mov cr1, 0xffffffff \n\t"
            "mov cr2, 0xffffffff \n\t"
            "mov cr3, 0xffffffff \n\t"
            "mov cr4, 0xffffffff \n\t"
        )
    }
}

Ist das wahr?

War es hilfreich?

Lösung

Von User-Space-Code? Nein. Es wird ein Privileg Ausnahme verursachen und der Kernel das Programm beenden. Von Kernel-Code? Ich bezweifle das; Sie werden Ausnahmen werfen, und man müßte manuell die Fehler-Handler, um den Code in Frage zurückzukehren einrichten zu halten, es zu tun. Es gibt auch eine gute Chance, es einen dreifachen Fehler verursachen, wenn einen Teil der CR3 Bewegung erfolgreich ist, da diese Kontrollen der Seitentabellenadresse und Sie wahrscheinlich Fehler auf Anweisung bekommen holen, Handler holen, und dann die Doppelfehler-Handler holen. Die CPU sollte nur abgeschaltet, wenn das passiert.

Überprüfen Sie die Intel oder AMD Handbücher für Systemprogrammierung, sie werden Ihnen sagen, welche Ausnahmen ausgelöst werden, wenn ungültige Bits an die Steuerregister.

Andere Tipps

Vielleicht, wenn Sie lassen Sie es für etwa 20 Jahre.

Vielleicht dieser Code bewirkt, dass Ihr Prozessor / System zu sperren, aber es gibt keine Chance, dass es Schäden dauerhaft.

Stellen Sie sich vor, wenn das wahr wäre. Es wäre sofort durch Viren / Trojaner verwendet werden, um Computer zu attackieren oder verbergen ihre Aktivität nach der Erkennung

Auch in dem Fall, dass jeder Code einen Prozessor beschädigt werden könnte, könnten die Prozessor-Hersteller Ausgabe ein so genanntes Mikro-Update, das für den Prozessor so etwas wie ein Soft-fix ist. Solche Mikro-Updates von Betriebssystemen zur Verfügung gestellt werden und / oder BIOS (und Prozessorhersteller) und werden in den Prozessor geladen, bevor ein solcher Code ausgeführt werden könnte.

Um es zusammenzufassen:. Nein, Ihr Freund ist falsch, vorausgesetzt, wir reden über x86 / x64-Plattformen

Nein. Wenn der Punkt, den Prozessor in der Hoffnung, brechen sie fieberhaft excercise ist, Computersysteme haben thermische Lösungen (Lüfter, Kupfer Wärmetauscher, Kühlkörper, etc.) eine Überhitzung zu verhindern. Im Fall eines Fehlers in der thermischen Lösung, die BIOS #THERMTRIP behaupten und das Gerät ausschalten.

hörte ich Gerücht eines Fehler in dem Pentium mir, dass, wenn eine bestimmte unsinnig Reihe von Anweisungen in einer engen Schleife gegeben würde einen einzigen Flip-Flop verbrennen so schnell der Wärmeschutz konnte es nicht schützen.

Was ich fand für einmal Referenz war wirklich alter CPUs, indem Sie diese im Real-Modus gekocht werden:

halt:
    jmp short halt

Der richtige Code war

halt:
    nop
    jmp short halt

Es wird der Code nicht auf einem ARM-Prozessor ausgeführt werden.

In vielen Prozessoren, Anweisungen, die das Statuswort oder beeinflussen den Prozessor gesetzt werden „Supervisor“ Modus beschränkt. Gute Betriebssysteme Benutzercode in einem „geschützten“ Modus, der nicht die gleichen Fähigkeiten hat als „Supervisor“ Modus. Ausführen von privilegierten Anweisungen auf modernen Prozessoren im Benutzermodus erzeugt Ausnahmen.

Sie und Ihr Freund können immer die Anweisungen in einem Assembler-Sprache Referenzhandbuch nachschlagen und den Betrieb überprüfen.

Der betreffende Code ist unwahrscheinlich viel außer Neustart der Maschine zu tun. Nach meiner Erfahrung könnte ein x86-CPU durch Ausführung von Software-Code gemauert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top