DE102007005887B4 - Hinderung bösartiger Software an der Ausführung innerhalb eines Rechnersystems - Google Patents

Hinderung bösartiger Software an der Ausführung innerhalb eines Rechnersystems Download PDF

Info

Publication number
DE102007005887B4
DE102007005887B4 DE102007005887.1A DE102007005887A DE102007005887B4 DE 102007005887 B4 DE102007005887 B4 DE 102007005887B4 DE 102007005887 A DE102007005887 A DE 102007005887A DE 102007005887 B4 DE102007005887 B4 DE 102007005887B4
Authority
DE
Germany
Prior art keywords
computer system
instructions
application program
cross
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102007005887.1A
Other languages
English (en)
Other versions
DE102007005887A1 (de
Inventor
Peter Dirk Hortensius
Rod D. Waltermann
David Carroll Challener
Mark C. Davis
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/353,893 external-priority patent/US8694797B2/en
Priority claimed from US11/353,896 external-priority patent/US8041958B2/en
Application filed by Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Publication of DE102007005887A1 publication Critical patent/DE102007005887A1/de
Application granted granted Critical
Publication of DE102007005887B4 publication Critical patent/DE102007005887B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/561Virus type analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Devices For Executing Special Programs (AREA)
  • Storage Device Security (AREA)
  • Retry When Errors Occur (AREA)

Abstract

Verfahren, um bösartige Software an der Ausführung innerhalb eines Rechnersystems zu hindern, wobei besagtes Verfahren nachfolgendes umfasst:das Ausführen einer Permutation über eine Untermenge von Anweisungen innerhalb eines Anwendungsprogramms, wobei die Untermenge zuerst entsprechend ihrem Nutzen und ihrer Kritizität aus einer Gruppe von Anweisungen ausgewählt wird, um vor jeder tatsächlichen Ausführung des besagten Anwendungsprogramms auf besagtem Rechnersystem eine permutierte Folge von Anweisungen zu erzielen;das Speichern einer Permutationsfolgenummer besagter permutierter Folge von Anweisungen in einer permutierten Anweisungszeigertabelle; unddas Ausführen besagter permutierter Folge von Anweisungen in einem Ausführungsmodul, das dazu in der Lage ist, besagte permutierte Folge von Anweisungen in einen tatsächlichen Maschinencode eines Prozessors in besagtem Rechnersystem zu übersetzen entsprechend besagter Permutationsfolgenummer besagter permutierter Folge von Anweisungen, die in besagter Anweisungszeigertabelle gespeichert ist.

Description

  • Hintergrund der Erfindung
  • Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich im Allgemeinen darauf, bösartige Software zu vermeiden, und im Besonderen auf ein Verfahren, um bösartige Software an der Ausführung innerhalb eines Rechnersystems zu hindern.
  • Beschreibung verwandter Technik
  • Bösartige Softwares, wie zum Beispiel Computerviren, können auf viele Arten auf ein Rechnersystem gelangen. Zum Beispiel können sie über eine Platte auf ein Rechnersystem gelangen, die in das Rechnersystem eingelegt wird, oder sie können über eine E-Mail in das Rechnersystem gelangen, die von einem Benutzer des Rechnersystems geöffnet wird. Bösartige Software kann Probleme am Rechnersystem verursachen, wenn sie innerhalb des Rechnersystems ausgeführt wird. Zum Beispiel kann die Computersicherheit gefährdet werden, oder Dateien innerhalb des Rechnersystems können zerstört werden.
  • Bestimmte Arten bösartiger Software können leicht mit Hilfe von einfachen Entdeckungsverfahren festgestellt werden, wie zum Beispiel nach einer Suchzeichenfolge zu scannen. Jedoch kann diese Art von Entdeckungsverfahren auch leicht durch das Umwandeln von bösartigem Code mittels Kompression oder Verschlüsselung untergraben werden, wodurch Scanfilter umgangen werden. Ein anderer Ansatz dazu, bösartige Software festzustellen, ist es ein Programm auszuführen in dem versucht wird, bösartige Aktionen während dieser Programmausführung abzufangen. Dieses Verfahren, das als Behavior Blocking bekannt ist, weist eine Reihe von Nachteilen auf. Trotz des Versuchs, bösartige Aktionen abzufangen, kann das Programm dennoch Schaden am Rechnersystem verursachen. Weiterhin kann der Mechanismus des Behavior Blocking bei der Durchführung der Bestimmung zu einer Blockierung typischerweise kein vollständiges Protokoll von Aktionen darstellen. Daher kann der Mechanismus des Behavior Blocking Blockierungsentscheidungen treffen, die nicht optimal sind, dies bedeutet, dass harmlose Programme geblockt werden können, während es schädlichen Programmen erlaubt werden kann abzulaufen.
  • Noch ein anderer Ansatz dazu, bösartige Software festzustellen, ist es, verdächtigen Code innerhalb einer isolierten Umgebung eines Rechnersystems zu emulieren, so dass das Rechnersystem vor bösartigen Aktionen des verdächtigen Codes geschützt ist. Ein Nachteil der Emulation ist, dass sie, während sie Teile des Rechnersystems vor Virenangriffen schützen kann, selbst nicht geschützt ist. Außerdem können Daten infiziert werden, was zu einer Lücke in der isolierten Umgebung führen kann.
  • Die Druckschrift US 2005 / 0 071 664 A1 beschreibt ein Verfahren zur Verschlüsselung von Anwendungen, wobei eine Permutation über eine Menge von Anweisungen innerhalb eines Anwendungsprogramms ausgeführt wird, um vor jeder tatsächlichen Ausführung des Anwendungsprogramms eine permutierte Folge von Anweisungen zu erzielen. Weiter wird eine Permutationsfolgenummer der permutierten Folge von Anweisungen in einer permutierten Anweisungszeigertabelle gespeichert und die permutierte Folge von Anweisungen in einem Ausführungsmodell ausgeführt, welches dazu in der Lage ist, die permutierte Folge von Anweisungen in einen tatsächlichen Maschinencode eines Prozessors zu übersetzen entsprechend der Permutationsfolgenummer der permutierten Folge von Anweisungen, welche in der Anweisungszeigertabelle gespeichert ist.
  • Die Druckschrift US 2005 / 0 071 653 A1 beschreibt ein Verfahren zur Verschlüsselung von Anwendungen, wobei eine Permutation über einer Menge oder über einer Untermenge von Anweisungen innerhalb eines Anwendungsprogramms ausgeführt wird, um vor jeder tatsächlichen Ausführung des Anwendungsprogramms eine permutierte Folge von Anweisungen zu erzielen. Die permutierte Folge von Anweisungen wird weiter in einem Ausführungsmodul ausgeführt, welches dazu in der Lage ist die permutierte Folge von Anweisungen in einen tatsächlichen Maschinencode eines Prozessors zu übersetzen.
  • Die Druckschrift US 2005 / 0 188 171 A1 beschreibt ein Verfahren, um bösartige Software an der Ausführung innerhalb eines Rechnersystems zu hindern. Dabei wird eine Permutation auf einer Menge von Anweisungen innerhalb eines Anwendungsprogramms ausgeführt, um vor jeder tatsächlichen Ausführung des Anwendungsprogramms eine permutierte Folge von Anweisungen zu erzielen, wobei die Permutation auf Basis von gespeicherten Tabellen erfolgt. Weiter ist ein Ausführungsmodul vorgesehen, welches dazu in der Lage ist die permutierte Folge von Anweisungen in einen tatsächlichen Maschinencode eines Prozessors zu übersetzen.
  • Es wäre folglich wünschenswert, ein verbessertes Verfahren zur Verfügung zu stellen, um die Ausführung bösartiger Software innerhalb eines Rechnersystems zu verhindern.
  • Zusammenfassung der Erfindung
  • Entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung wird eine Permutation über eine Untermenge von Anweisungen innerhalb eines Anwendungsprogramms ausgeführt, um vor jeder tatsächlichen Ausführung eines Anwendungsprogramms auf einem Rechnersystem eine permutierte Folge von Anweisungen zu erzeugen. Eine Permutationsfolgenummer der permutierten Folge von Anweisungen wird in einer permutierten Anweisungszeigertabelle gespeichert. Die permutierte Folge von Anweisungen wird in einem Ausführungsmodul ausgeführt, das dazu in der Lage ist, entsprechend der Permutationsfolgenummer der permutierten Folge von in der permutierten Anweisungszeigertabelle gespeicherten Anweisungen die permutierte Folge von Anweisungen in einen tatsächlichen Maschinencode eines Prozessors innerhalb des Rechnersystems zu übersetzen.
  • Alle Merkmale und Vorzüge der vorliegenden Erfindung werden aus der folgenden detaillierten schriftlichen Beschreibung offensichtlich.
  • Figurenliste
  • Sowohl die Erfindung selbst, wie auch eine bevorzugte Art der Anwendung, weitere Ziele und deren Vorzüge werden am besten unter Bezugnahme auf die folgende detaillierte Beschreibung einer veranschaulichenden Ausführungsform verstanden, wenn sie in Verbindung mit den begleitenden Zeichnungen gelesen werden, in denen:
    • 1 eine konzeptionelle Ansicht eines Verfahrens zeigt, um bösartige Software entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung an der Ausführung innerhalb eines Rechnersystems zu hindern;
    • 2 ein Blockdiagramm einer EDV-Umgebung zeigt, in die eine bevorzugte Ausführungsform der vorliegenden Erfindung integriert ist; und
    • 3a bis 3d eine Folge beschreiben, in welcher Anweisungen entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung permutiert werden.
  • Detaillierte Beschreibung einer bevorzugten Ausführungsform
  • Typischerweise gibt es mehrere Ebenen von Befehlssätzen innerhalb eines Rechnersystems. Die erste (unterste) Ebene sind die Anweisungen auf Maschinenebene und die zweite Ebene umfasst die binären Schnittstellenanweisungen der Betriebssystemanwendung. Auf dieser zweiten Ebene hat das Betriebssystem einige der Anweisungen auf Maschinenebene abstrahiert, damit diese leichter verstanden werden können. Die dritte Ebene ist die der Anweisungen auf Makroebene, auf der eine Anwendung die Steuerung des Rechnersystems weiter abstrahiert hat, um es zu ermöglichen, dass die Programmierung erleichtert wird.
  • Da viele Verfahren dem Schutz der zweiten und dritten Ebene von Anweisungen gewidmet worden sind, wird die vorliegende Erfindung einzig auf den Schutz der ersten Ebene von Anweisungen ausgerichtet, besonders da dies die Ebene ist, die von vielen Computerviren verwendet wird.
  • Allgemein gesprochen ist es unwahrscheinlich, wenn nicht unmöglich, ein Programm auf Maschinenebene zu schreiben, das innerhalb eines Rechnersystems ausgeführt werden kann, ohne den Befehlssatz eines Prozessors innerhalb des Computersystems auf Maschinenebene zu kennen. Außerdem erfordert eine Installation von Software auf einem Rechnersystem, dass die Software den Befehlssatz des Rechnersystems zuerst versteht, auf dem sie installiert wird. Entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung wird daher ein Anwendungsprogramm anfangs in einen Satz aus kreuzkompiliertem Code des Anwendungsprogramms umgewandelt, und der Satz des kreuzkompilierten Codes des Anwendungsprogramms wird dann innerhalb eines Ausführungsmoduls ausgeführt, das dazu in der Lage ist, den Satz des kreuzkompilierten Codes des Anwendungsprogramms zu erkennen.
  • Sich jetzt auf die Zeichnungen und im Besonderen auf 1 beziehend, wird eine konzeptionelle Sicht auf eine Verfahren dafür beschrieben, bösartige Software an der Ausführung innerhalb eines Rechnersystems entsprechend einer bevorzugten Ausführungsform der vorliegenden Erfindung zu hindern. Wie gezeigt, umfasst ein Rechnersystem 10 ein Umsetzungsmodul 11 und ein Ausführungsmodul 12. Jedes Anwendungsprogramm, das innerhalb des Rechnersystems 10 ausgeführt werden soll, muss einen Installationsprozess durchlaufen. Während des Installationsprozesses kann ein Benutzer des Rechnersystems 10 entscheiden, ob ein Anwendungsprogramm innerhalb des Rechnersystems 10 installiert werden soll oder nicht. Wenn der Benutzer entscheidet, dass das Anwendungsprogramm innerhalb des Rechnersystems 10 installiert werden soll, wird das Anwendungsprogramm dann an das Umsetzungsmodul 11 gesandt, in dem das Anwendungsprogramm in einen Satz aus kreuzkompiliertem Code des Anwendungsprogramms umgewandelt wird. Der Satz aus kreuzkompiliertem Code des Anwendungsprogramms kann anschließend innerhalb des Ausführungsmoduls 12 ausgeführt.werden, das dazu in der Lage ist, den Satz des kreuzkompilierten Codes des Anwendungsprogramms zu erkennen und in den tatsächlichen Maschinencode des Prozessors zu übersetzen.
  • Ohne den Installationsprozess zu durchlaufen, ist ein Anwendungsprogramm nicht dazu in der Lage, von dem Ausführungsmodul 12 ausgeführt zu werden. Wie zum Beispiel an einem unzulässigen Weg 15 gezeigt wird, kann ein Virenprogramm, selbst wenn sich das Virenprogramm ohne die Entdeckung eines Benutzers und ohne das Wissen des Benutzers in das Rechnersystem 10 eingeschlichen hat, immer noch nicht durch das Ausführungsmodul 12 ausgeführt werden, weil das Virenprogramm den Installationsprozess nicht durchlaufen hat. Auf diese Weise ist das Rechnersystem 10 sicher vor dem potentiellen Schaden, der vom Virenprogramm hätte verursacht werden können.
  • In der Praxis sollten das Umsetzungsmodul 11 und das Ausführungsmodul 12 von einander isoliert sein. In der Tat sollte das Ausführungsmodul 12 daran gehindert werden, Code aus irgendeiner Quelle außer dem Umsetzungsmodul 11 zu akzeptieren.
  • Mit Bezugnahme jetzt auf 2, wird ein Blockdiagramm einer EDV-Umgebung beschrieben, in die eine bevorzugte Ausführungsform der vorliegenden Erfindung integriert ist. Wie dargestellt umfasst ein Rechnersystem 20 eine Hardwareanordnung 21, einen virtuellen Maschinenmanager (VMM) oder Hypervisor 22 und virtuelle Maschinen 23a bis 23b. Die virtuellen Maschinen 23a und 23b befinden sich vorzugsweise in separaten Partitionen so dass jede Ausführung innerhalb der virtuellen Maschine 23a isoliert von der virtuellen Maschine 23b abläuft, oder umgekehrt. Der VMM 22 steuert die gesamte Kommunikation zwischen den virtuellen Maschinen 23a und 23b. Außerdem kann der VMM 22 direkt mit der Hardwareanordnung 21 kommunizieren. Die Hardwareanordnung 21 umfasst solche bekannten Anordnungen wie Prozessoren, Register, Datenspeicherverwaltungseinheiten, Datenspeichervorrichtungen, Ein-/Ausgabevorrichtungen usw.
  • Ein Betriebssystem und mehrere Anwendungsprogramme können gleichzeitig innerhalb jeder von den virtuellen Maschinen 23a bis 23b ausgeführt werden. Zum Beispiel werden ein Betriebssystem 24 und ein Anwendungsprogramm 25 innerhalb der virtuellen Maschine 23a ausgeführt, während ein Betriebssystem 26 und ein Anwendungsprogramm 27 innerhalb der virtuellen Maschine 23b ausgeführt werden.
  • Obwohl es nicht erforderlich ist, kann das Betriebssystem 24 unterschiedlich sein zu dem Betriebssystem 26. Zum Beispiel kann Betriebssystem 24 ein Open Source Linux Betriebssystem sein, während das Betriebssystem 25 ein Windows® Betriebssystem sein kann, das von der Microsoft Corporation hergestellt wird. Auf ähnliche Weise kann der durch die virtuelle Maschine 23a emulierte, zugrunde liegende Prozessor ebenfalls ein anderer sein als der von der virtuellen Maschine 23b emulierte, zugrunde liegende Prozessor. Zum Beispiel kann der durch die virtuelle Maschine 23a emulierte zugrunde liegende Prozessor ein Pentium® Prozessor sein, hergestellt durch die Intel Corporation, während der durch die virtuelle Maschine 23b emulierte zugrunde liegende Prozessor ein PowerPC® Prozessor sein kann, der von der International Business Machines Corporation hergestellt wird.
  • Jede der virtuellen Maschinen 23a bis 23b, die ihr Betriebssystem und zugehörige Anwendungsprogramme umfasst, läuft auf Benutzerebene ab. Wenn der VMM 22 die direkte Ausführung verwendet, wird der VMM 22 auf einen so genannten Benutzermodus (das heißt mit reduzierten Berechtigungen) eingestellt, so dass keine von den virtuellen Maschinen 23a bis 23b direkt auf die verschiedenen privilegierten Register zugreifen kann, die den Betrieb der Hardwareanordnung 21 steuern. Vielmehr werden alle privilegierten Anweisungen im VMM 22 abgefangen.
  • In 2 wird gezeigt, dass die virtuelle Maschine 23a einen Kreuzcompiler 28 für die Ausführung des initialen Kreuzkompilierens von Anwendungsprogrammen umfasst. Außerdem wird gezeigt, dass die virtuelle Maschine 23b ein Ausführungsmodul 29 für das Ausführen des kreuzkompilierten Codes der Anwendungsprogramme umfasst. Das Kreuzkompilieren wird vorzugsweise mit Hilfe eines Permutationsalgorithmus ausgeführt und die Ergebnisse werden in einer permutierten Anweisungszeigertabelle 30 gespeichert. Die permutierte Anweisungszeigertabelle 30 umfasst mehrere Einträge von Permutationsfolgen. Jede der Permutationsfolgen steht in Beziehung mit einem Satz von kreuzkompiliertem Code eines Anwendungsprogramms. Es ist wahrscheinlich, dass alle der Permutationsfolgen innerhalb der permutierten Anweisungszeigertabelle 30 unterschiedlich zu einander sind, obwohl es nicht erforderlich ist, dass sie unterschiedlich zu einander sind. In 2 wird die permutierte Anweisungszeigertabelle 30 als innerhalb des VMM 22 angeordnet dargestellt; die permutierte Anweisungszeigertabelle 30 kann jedoch auch innerhalb der virtuellen Maschine 23a angeordnet werden, vorausgesetzt, dass auf sie auch von der virtuellen Maschine 23b zugegriffen werden kann.
  • Ein beispielhaftes Verfahren dafür, Permutationen auszuführen, ist wie folgt. Zuerst wird zum Zweck der Permutation eine Untermenge von Anweisungen n aus einer Gruppe von Anweisungen ausgewählt. Nicht alle Anweisungspermutationen wären gleichermaßen nützlich. Zum Beispiel wären Permutationen von Identitätsanweisungen von überhaupt keinem Nutzen. Daher sollten bestimmte Maschinenanweisungen (wie eine JUMP Anweisung) als kritische Anweisungen identifiziert werden, um sicherzustellen, dass alle kritischen Anweisungen permutiert werden.
  • Es gibt mehrere Wege, Permutationen zu erzeugen. Ein Verfahren ist, eine Hashfunktion oder eine auf Verschlüsselung basierte Funktion zu verwenden, so dass jede Anweisung in einem Datensegment eine andere Abbildung aufweist, das heißt H(A1), H(A2), ..., H(Ai), wobei H die auf einem Hash basierte Funktion ist und A eine Anweisung ist. Das Problem dabei, eine Hashfunktion oder eine auf Verschlüsselung basierte Funktion zu verwenden ist, dass von einem allgemeinen Standpunkt der Kompilierung gleiche Anweisungen verschiedene hashed Ergebnisse aufweisen können. Zum Beispiel können Anweisung A5 und Anweisung A9 dieselbe Anweisung sein, aber H(A5) muss nicht unbedingt gleich mit H(A9) sein.
  • Ein anderes Verfahren nutzt eine andere Abbildungsfunktion P(A), wobei P die Permutation ist und A eine Anweisung ist, wodurch P1(A), P2(A), ..., Pn(A) erzeugt werden. Dieses Verfahren erzeugt ein besser voraussagbares Ergebnis der Kreuzkompilierung, da P1(J), wobei J die vorgegebene Anweisung ist, das ganz Gleiche sein sollte, unabhängig davon, wo es in Codesegmenten erscheint.
  • Eine Permutationsfolge diktiert die Art, wie die Untermenge von Anweisungen n permutiert oder umgewandelt werden soll. Jede Permutationsfolge kann als ein Eintrag betrachtet werden, der mehrfache Slots umfasst und jeder Slot muss mit einer Anweisungszahl gefüllt werden. Um eine r-te Permutationsfolge zu erzeugen, wird anfangs eine Zufallszahl zwischen 0 und n! - 1 ausgewählt. Wenn zum Beispiel die Untermenge von Anweisungen n, die permutiert werden muss, 5 ist (das bedeutet, dass es 5! = 120 Permutationsfolgen gibt), kann eine Zufallszahl 101 zwischen 0 und 5! - 1 als die 101-ste Permutationsfolge ausgewählt werden.
  • Die Position Pos des Slots der ersten Anweisungszahl wird durch den Teiler aus der gewählten Zufallszahl r geteilt durch (n - 1)! wie folgt gekennzeichnet: Pos = r/ ( n 1 ) !
    Figure DE102007005887B4_0001
  • Der Rest der Division ersetzt die gewählte Zufallszahl r für die Bestimmung der Position Pos des Slots für die anschließende Anweisungszahl, bis alle der Slots mit Anweisungszahlen geüllt sind. Für jede Bestimmung wird n im Nenner (n - 1)! um eins vermindert.
  • Auf diese Weise ist für die gewählte Zufallszahl 101 die Position des Slots der ersten Anweisungszahl 101 / (5 - 1)! = 4, wie in 3a gezeigt. Der Rest von 101 / (5 - 1)! ist 5 und die Position des Slots der zweiten Anweisungszahl ist 5 / (4 - 1)! = 0 wie in 3b gezeigt. Der Rest von 5 / (4 - 1)! ist 5 und die Position des Slots der dritten Anweisungszahl ist 5 / (3 - 1)! = 2, wie in 3c gezeigt. Der Rest von 5 / (3 - 1)! ist 1 und die Position des Slots der vierten Anweisungszahl ist 1 / (2 - 1)! = 1, wie in 3d gezeigt. Die fünfte Anweisungszahl geht in die verbleibende offene Position des Slots.
  • Die Permutationsfolge „25431“ wird dann als ein Eintrag für die 101-ste Permutationsfolge in die permutierte Anweisungszeigertabelle 30 (gemäß 2) eingetragen. Ein Anwendungsprogramm kann entsprechend der 101-sten Permutationsfolge über den Kreuzcompiler 28 (gemäß 2) in einen Satz aus kreuzkompiliertem Code permutiert werden. Während der Ausführung kann der Satz des kreuzkompilierten Codes über das Ausführungsmodul 29 (gemäß 2) entsprechend der 101-sten in der permutierten Anweisungszeigertabelle 30 gespeicherten Permutationsfolge ausgeführt werden.
  • Wenn zum Beispiel die fünf Anweisungen, die ausgewählt worden sind, damit sie permutiert werden, ADD, SUBTRACT, JUMP, BRANCH und STORE sind, dann wird jeder dieser Anweisungen eine entsprechende Anweisungszahl zugewiesen, das heißt Anweisung Nummer 1 = ADD, Anweisung Nummer 2 = SUBTRACT, Anweisung Nummer 3 = JUMP, Anweisung Nummer 4 = BRANCH und Anweisung Nummer 5 = STORE. Wenn die 101-ste Permutationsfolge verwendet wird, um das Kreuzkompilieren eines Anwendungsprogramms innerhalb des Kreuzcompilers 28 gemäß 2 auszuführen, wird jedes Auftreten der oben erwähnten fünf Anweisungen innerhalb des Anwendungsprogramms entsprechend der Permutationsfolge „25431“ umgewandelt. Mit anderen Worten wird jede ADD Anweisung innerhalb des Anwendungsprogramms in eine SUBTRACT Anweisung umgewandelt, jede SUBTRACT Anweisung innerhalb des Anwendungsprogramms wird in eine STORE Anweisung umgewandelt, jede JUMP Anweisung innerhalb des Anwendungsprogramms wird in eine BRANCH Anweisung umgewandelt, jede BRANCH Anweisung innerhalb des Anwendungsprogramms wird in eine JUMP Anweisung umgewandelt, und jede STORE Anweisung innerhalb des Anwendungsprogramms wird in eine ADD Anweisung umgewandelt. Eine Umkehrung der oben ausgeführten Umsetzung wird innerhalb des Ausführungsmoduls 29 gemäß 2 während der Ausführung des kreuzkompilierten Codes des Anwendungsprogramms ausgeführt.
  • Die Permutation kann entweder auf eine statische oder eine dynamische Weise ausgeführt werden. Wenn die Permutation auf eine statische Weise ausgeführt wird, dann kann eine Gruppe von Rechnersystemen eingestellt werden, dieselbe Permutationsfolge zu verwenden. Solche eine Praxis wäre für einen IT-Manager leichter, da für eine Kreuzkompilierung von jedem der Anwendungsprogramme nur erforderlich wäre, dass diese einmal während der Installation ausgeführt wird.
  • Wenn die Permutation auf eine dynamische Weise ausgeführt wird, gibt es mehrere Wahlmöglichkeiten. Ein Satz von Permutationsfolgen kann periodisch geändert werden. Das Kreuzkompilieren für diese Permutationen kann einmal ausgeführt werden und dann, jedes Mal wenn ein Rechnersystem gebootet wird, kann dieses einen anderen Satz von kreuzkompilierten Programmen ausführen, basierend auf der Permutationsfolge, die gegenwärtig in Verwendung ist. Weiterhin kann sich die Permutationsfolge jedes Mal zufällig ändern, wenn das Rechnersystem bootet. In einem solchen Fall würde das Kreuzkompilieren „fliegend“ durch einen Kreuzcompiler ausgeführt werden müssen, der auf dem Rechnersystem abläuft.
  • Außerdem kann die Permutationsfolge auch für jedes Anwendungsprogramm geändert werden, und dies kann durch verschiedene Verfahren erreicht werden. Die einfachste Implementierung ist es, den VMM den Signaturhash von einer Anwendung als Schlüssel für einen Datenstromverschlüsselungsalgorithmus verwenden zu lassen und dadurch einen eindeutigen Befehlssatz für dieses Anwendungsprogramm zu erzeugen. Jedes veränderte Anwendungsprogramm (wie zum Beispiel verändert in einem Hauptdatenspeicher auf Grund eines Virus, der einen Pufferüberlauf verursacht) beginnt, einen anderen Befehlssatz zu erzeugen.
  • Alternativ kann der VMM jedes Mal eine Zufallszahl erzeugen, wenn ein Anwendungsprogramm geladen wird, und die Codesegmente des Anwendungsprogramms werden durch eine Datenstromverschlüsselung oder Hash Maschine geleitet (da es nicht reversibel sein muss), um die Kreuzkompilierung zu ändern. Dieses Verfahren liefert einem zusätzlichen Grad der Sicherheit dadurch, dass die Funktion Pn(A) eine konstante Funktion P(A) wird und unvorhersagbar bleibt.
  • Wie beschrieben worden ist, stellt die vorliegende Erfindung ein Verfahren zur Verfügung, um bösartige Software an der Ausführung innerhalb eines Rechnersystems zu hindern. Wenn der VMM eine mit dem Hash jeder permutierten Anwendung in Beziehung stehende Permutation vorhält, die ausgeführt werden soll, dann schlägt sogar ein Samplingangriff (bei dem ein Teil einer permutierte Anwendung irgendwie von einem Angreifer beschafft wird und die Permutation bestimmt wird, auf einen Virus angewandt und dann versandt wird, um eine Infizierung auszuführen) fehl.
  • Es ist auch wichtig zu bemerken, dass, obwohl die vorliegende Erfindung im Kontext eines vollständig funktionierenden Rechnersystems beschrieben worden ist, jene, die in der Technik ausgebildet sind, anerkennen werden, dass die Mechanismen der vorliegenden Erfindung dazu in der Lage sind, in einer Vielfalt von Formen als ein Programmprodukt verteilt zu werden, und dass die vorliegende Erfindung gleich zutreffend ist ohne Rücksicht auf die bestimmte Art des Signal tragenden Mediums, das verwendet wird, um die Verteilung tatsächlich auszuführen. Beispiele für Signal tragende Medien umfassen, ohne Beschränkung, beschreibbare Datenträger wie zum Beispiel Disketten oder Compact Discs und Datenübertragungsmedien, wie zum Beispiel analoge oder digitale Datenübertragungsverbindungen.
  • Während die Erfindung besonders in Bezug auf eine bevorzugte Ausführungsform gezeigt und beschrieben worden ist, wird es von jenen, die in der Technik ausgebildet sind, verstanden werden, dass verschiedene Änderungen in Form und Detail gemacht werden können, ohne vom Geist und dem Schutzumfang der Erfindung abzuweichen.

Claims (36)

  1. Verfahren, um bösartige Software an der Ausführung innerhalb eines Rechnersystems zu hindern, wobei besagtes Verfahren nachfolgendes umfasst: das Ausführen einer Permutation über eine Untermenge von Anweisungen innerhalb eines Anwendungsprogramms, wobei die Untermenge zuerst entsprechend ihrem Nutzen und ihrer Kritizität aus einer Gruppe von Anweisungen ausgewählt wird, um vor jeder tatsächlichen Ausführung des besagten Anwendungsprogramms auf besagtem Rechnersystem eine permutierte Folge von Anweisungen zu erzielen; das Speichern einer Permutationsfolgenummer besagter permutierter Folge von Anweisungen in einer permutierten Anweisungszeigertabelle; und das Ausführen besagter permutierter Folge von Anweisungen in einem Ausführungsmodul, das dazu in der Lage ist, besagte permutierte Folge von Anweisungen in einen tatsächlichen Maschinencode eines Prozessors in besagtem Rechnersystem zu übersetzen entsprechend besagter Permutationsfolgenummer besagter permutierter Folge von Anweisungen, die in besagter Anweisungszeigertabelle gespeichert ist.
  2. Verfahren gemäß Anspruch 1, wobei besagtes Anwendungsprogramm in einem Rechnersystem ausgeführt werden kann, ohne kreuzkompiliert zu werden.
  3. Verfahren gemäß Anspruch 1, wobei besagtes Verfahren weiterhin umfasst eine erste virtuell Maschine zur Verfügung zu stellen, um besagte Permutation durchzuführen; und eine zweite virtuelle Maschine zur Verfügung zu stellen, um besagte Ausführung durchzuführen.
  4. Verfahren gemäß Anspruch 3, wobei besagtes Verfahren weiterhin umfasst, einen virtuellen Datenspeichermanager innerhalb besagten Rechnersystems zur Verfügung zu stellen, um die besagten ersten und zweiten virtuellen Maschinen zu steuern.
  5. Verfahren gemäß Anspruch 3, wobei besagtes Verfahren weiterhin umfasst, besagte erste und zweite virtuelle Maschinen in separaten Partitionen anzuordnen.
  6. Verfahren gemäß Anspruch 3, wobei besagtes Verfahren weiterhin umfasst, verschiedene Betriebssysteme in besagten ersten und zweiten virtuellen Maschinen zur Verfügung zu stellen.
  7. Computer verwendbares Medium, das ein Computerprogrammprodukt aufweist, um bösartige Software an der Ausführung innerhalb eines Rechnersystems zu hindern, wobei besagtes Computer verwendbares Medium nachfolgendes umfasst: Programmcodemittel, um eine Permutation über eine Untermenge von Anweisungen innerhalb eines Anwendungsprogramms auszuführen, wobei die Untermenge zuerst entsprechend ihrem Nutzen und ihrer Kritizität aus einer Gruppe von Anweisungen ausgewählt wird, um vor jeglicher tatsächliche Ausführung des besagten Anwendungsprogramms auf besagtem Rechnersystem eine permutierte Folge von Anweisungen zu erzielen; Programmcodemittel, um eine Permutationsfolgenummer besagter permutierter Folge von Anweisungen in einer permutierten Anweisungszeigertabelle zu speichern; und Programmcodemittel, um besagte permutierte Folge von Anweisungen in einem Ausführungsmodul auszuführen, das dazu in der Lage ist, besagte permutierte Folge von Anweisungen zu übersetzen in einen tatsächlichen Maschinencode eines Prozessors in besagtem Rechnersystem entsprechend besagter Permutationsfolgenummer von besagter permutierter Folge von Anweisungen, die in besagter permutierter Anweisungszeigertabelle gespeichert sind.
  8. Computer verwendbares Medium gemäß Anspruch 7, wobei besagtes Anwendungsprogramm in einem Rechnersystem ausgeführt werden kann, ohne kreuzkompiliert zu werden.
  9. Computer verwendbares Medium gemäß Anspruch 7, wobei besagtes Computer verwendbares Medium weiterhin nachfolgendes umfasst: Programmcodemittel, um eine erste virtuelle Maschine zur Verfügung zu stellen, die besagtes Programmcodemittel umfasst, um besagte Permutation auszuführen; und Programmcodemittel, um eine zweite virtuelle Maschine zur Verfügung zu stellen, die besagtes Programmcodemittel für die Ausführung umfasst.
  10. Computer verwendbares Medium gemäß Anspruch 9, wobei besagtes Computer verwendbares Medium weiterhin Programmcodemittel umfasst, um einen virtuellen Datenspeichermanager in besagtem Rechnersystem zur Steuerung besagter erster und zweiter virtueller Maschinen zur Verfügung zu stellen.
  11. Computer verwendbares Medium gemäß Anspruch 9, wobei besagtes Computer verwendbares Medium weiterhin Programmcodemittel umfasst, um besagte erste und zweite virtuelle Maschinen in separaten Partitionen anzuordnen.
  12. Computer verwendbares Medium gemäß Anspruch 9, wobei besagtes Computer verwendbares Medium weiterhin Programmcodemittel umfasst, um in besagten ersten und zweiten virtuellen Maschinen verschiedene Betriebssysteme zur Verfügung zu stellen.
  13. Rechnersystem, das dazu in der Lage ist, bösartige Software daran zu hindern, ausgeführt zu werden, wobei besagtes Rechnersystem nachfolgendes umfasst: Mittel, um eine Permutation über eine Untermenge von Anweisungen innerhalb eines Anwendungsprogramms auszuführen, wobei die Untermenge zuerst entsprechend ihrem Nutzen und ihrer Kritizität aus einer Gruppe von Anweisungen ausgewählt wird, um vor jeder tatsächlichen Ausführung des besagten Anwendungsprogramms auf besagtem Rechnersystem eine permutierten Folge von Anweisungen zu erzielen; eine permutierte Anweisungszeigertabelle für das Speichern einer Permutationsfolgenummer besagter permutierter Folge von Anweisungen; und Mittel, um besagte permutierte Folge von Anweisungen in einem Ausführungsmodul auszuführen, das dazu in der Lage ist, besagte permutierte Folge von Anweisungen in einen tatsächlichen Maschinencode eines Prozessors in besagtem Rechnersystem zu übersetzen entsprechend besagter Permutationsfolgenummer von besagter permutierter Folge von Anweisungen, die in besagter Anweisungszeigertabelle gespeichert sind.
  14. Rechnersystem gemäß Anspruch 13, wobei besagtes Anwendungsprogramm in einem Rechnersystem ausgeführt werden kann, ohne kreuzkompiliert zu werden.
  15. Rechnersystem gemäß Anspruch 13, wobei besagtes Rechnersystem weiterhin nachfolgendes umfasst: eine erste virtuell Maschine, die Mittel dafür umfasst, eine Permutation auszuführen; und eine zweite virtuell Maschine, die besagte Mittel für die Ausführung umfasst.
  16. Rechnersystem gemäß Anspruch 15, wobei besagtes Rechnersystem weiterhin einen virtuellen Datenspeichermanager zur Steuerung besagter erster und zweiter virtueller Maschinen umfasst.
  17. Rechnersystem gemäß Anspruch 15, wobei besagte erste und zweite virtuelle Maschinen in separaten Partitionen angeordnet sind.
  18. Rechnersystem gemäß Anspruch 15, wobei ein Betriebssystem in besagter erster virtueller Maschine unterschiedlich ist zu einem Betriebssystem in besagter zweiter virtueller Maschine.
  19. Verfahren, um bösartige Software an der Ausführung in einem Rechnersystem zu hindern, wobei besagtes Verfahren nachfolgendes umfasst: Kreuzkompilieren eines Anwendungsprogramms, um vor einer tatsächlichen Ausführung von besagtem Anwendungsprogramm auf besagtem Rechnersystem einen Satz aus kreuzkompiliertem Code des besagten Anwendungsprogramms zu erzeugen, wobei das Kreuzkompilieren mit Hilfe eines Permutationsalgorithmus erfolgt und nur eine Untermenge von Anweisungen aus einer Gruppe von Anweisungen permutiert wird, wobei die Untermenge zuerst entsprechend ihrem Nutzen und ihrer Kritizität aus einer Gruppe von Anweisungen ausgewählt wird; Ausführung des besagten Satzes aus kreuzkompiliertem Code des besagten Anwendungsprogramms in einem Ausführungsmodul, das dazu in der Lage ist, besagten Satz aus kreuzkompiliertem Code des besagten Anwendungsprogramms zu erkennen und in einen tatsächlichen Maschinencode eines Prozessors in besagtem Rechnersystem zu übersetzen, wobei das Kreuzkompilieren mit Hilfe eines Permutationsalgorithmus erfolgt und beim Permutieren nur eine Untermenge von Anweisungen aus einer Gruppe von Anweisungen permutiert wird.
  20. Verfahren gemäß Anspruch 19, wobei besagtes Anwendungsprogramm in einem Rechnersystem ausgeführt werden kann, ohne kreuzkompiliert zu werden.
  21. Verfahren gemäß Anspruch 19, wobei besagtes Verfahren weiterhin umfasst eine erste virtuelle Maschine zur Verfügung zu stellen, um besagte Kreuzkompilierung durchzuführen; und eine zweite virtuelle Maschine zur Verfügung zu stellen, um besagte Ausführung durchzuführen.
  22. Verfahren gemäß Anspruch 21, wobei besagtes Verfahren weiterhin umfasst, einen virtuellen Datenspeichermanager in besagtem Rechnersystems zur Verfügung zu stellen, um die besagten ersten und zweiten virtuellen Maschinen zu steuern.
  23. Verfahren gemäß Anspruch 21, wobei besagtes Verfahren weiterhin umfasst, besagte erste und zweite virtuelle Maschinen in separaten Partitionen anzuordnen.
  24. Verfahren gemäß Anspruch 21, wobei besagtes Verfahren weiterhin umfasst, verschiedene Betriebssysteme in besagten ersten und zweiten virtuellen Maschinen zur Verfügung zu stellen.
  25. Computer verwendbares Medium, das ein Computerprogrammprodukt aufweist, um bösartige Software an der Ausführung in einem Rechnersystems zu hindern, wobei besagtes Computer verwendbares Medium nachfolgendes umfasst: Programmcodemittel zum Kreuzkompilieren eines Anwendungsprogramms, um vor einer tatsächlichen Ausführung des besagten Anwendungsprogramms auf besagtem Rechnersystem einen Satz aus kreuzkompiliertem Code von besagtem Anwendungsprogramm zu erzeugen, wobei das Kreuzkompilieren mit Hilfe eines Permutationsalgorithmus erfolgt und nur eine Untermenge von Anweisungen aus einer Gruppe von Anweisungen permutiert wird, wobei die Untermenge zuerst entsprechend ihrem Nutzen und ihrer Kritizität aus einer Gruppe von Anweisungen ausgewählt wird; und Programmcodemittel, um besagten Satz aus kreuzkompiliertem Code von besagtem Anwendungsprogramm in einem Ausführungsmodul auszuführen, das dazu in der Lage ist, besagten Satz aus kreuzkompiliertem Code des besagten Anwendungsprogramms zu erkennen und in einen tatsächlichen Maschinencode eines Prozessors in besagtem Rechnersystem zu übersetzen.
  26. Computer verwendbares Medium gemäß Anspruch 25, wobei besagtes Anwendungsprogramm in einem Rechnersystem ausgeführt werden kann, ohne kreuzkompiliert zu werden.
  27. Computer verwendbares Medium gemäß Anspruch 25, wobei besagtes Computer verwendbares Medium weiterhin nachfolgendes umfasst: Programmcodemittel, um eine erste virtuelle Maschine zur Verfügung zu stellen, die besagtes Programmcodemittel zum Kreuzkompilieren umfasst, und Programmcodemittel, um eine zweite virtuelle Maschine zur Verfügung zu stellen, die besagtes Programmcodemittel für die Ausführung umfasst.
  28. Computer verwendbares Medium gemäß Anspruch 27, wobei besagtes Computer verwendbare Medium weiterhin Programmcodemittel umfasst, um einen virtuellen Datenspeichermanager in besagtem Rechnersystem zur Steuerung besagter erster und zweiter virtueller Maschinen zur Verfügung zu stellen.
  29. Computer verwendbares Medium gemäß Anspruch 27, wobei besagtes Computer verwendbare Medium weiterhin Programmcodemittel umfasst, um besagte erste und zweite virtuelle Maschinen in separaten Partitionen anzuordnen.
  30. Computer verwendbares Medium gemäß Anspruch 27, wobei besagtes Computer verwendbare Medium weiterhin Programmcodemittel umfasst, um in besagten ersten und zweiten virtuellen Maschinen verschiedene Betriebssysteme zur Verfügung zu stellen.
  31. Rechnersystem, das dazu in der Lage ist, bösartige Software daran zu hindern, ausgeführt zu werden, wobei besagtes Rechnersystem nachfolgendes umfasst: Mittel zum Kreuzkompilieren eines Anwendungsprogramms, um vor einer tatsächlichen Ausführung des besagten Anwendungsprogramms auf besagtem Rechnersystem einen Satz aus kreuzkompiliertem Code von besagtem Anwendungsprogramm zu erzeugen, wobei das Kreuzkompilieren mit Hilfe eines Permutationsalgorithmus erfolgt und nur eine Untermenge von Anweisungen aus einer Gruppe von Anweisungen permutiert wird, wobei die Untermenge zuerst entsprechend ihrem Nutzen und ihrer Kritizität aus einer Gruppe von Anweisungen ausgewählt wird; und Mittel, um besagten Satz aus kreuzkompiliertem Code von besagtem Anwendungsprogramm in einem Ausführungsmodul auszuführen, das dazu in der Lage ist, besagten Satz aus kreuzkompiliertem Code des besagten Anwendungsprogramms zu erkennen und in einen tatsächlichen Maschinencode eines Prozessors in besagtem Rechnersystem zu übersetzen.
  32. Rechnersystem gemäß Anspruch 31, wobei besagtes Anwendungsprogramm in einem Rechnersystem ausgeführt werden kann, ohne kreuzkompiliert zu werden.
  33. Rechnersystem gemäß Anspruch 31, wobei besagtes Rechnersystem weiterhin nachfolgendes umfasst: eine erste virtuelle Maschine, die besagte Mittel für die Kreuzkompilierung umfasst; und eine zweite virtuelle Maschine, die besagte Mittel für die Ausführung umfasst.
  34. Rechnersystem gemäß Anspruch 33, wobei besagtes Rechnersystem weiterhin einen virtuellen Datenspeichermanager zur Steuerung besagter erster und zweiter virtueller Maschinen umfasst.
  35. Rechnersystem gemäß Anspruch 33, wobei besagte erste und zweite virtuelle Maschinen in separaten Partitionen angeordnet sind.
  36. Rechnersystem gemäß Anspruch 33, wobei ein Betriebssystem in besagter erster virtueller Maschine unterschiedlich ist zu einem Betriebssystem in besagter zweiter virtueller Maschine.
DE102007005887.1A 2006-02-14 2007-02-01 Hinderung bösartiger Software an der Ausführung innerhalb eines Rechnersystems Active DE102007005887B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US11/353,893 2006-02-14
US11/353,893 US8694797B2 (en) 2006-02-14 2006-02-14 Method for preventing malicious software from execution within a computer system
US11/353,896 2006-02-14
US11/353,896 US8041958B2 (en) 2006-02-14 2006-02-14 Method for preventing malicious software from execution within a computer system

Publications (2)

Publication Number Publication Date
DE102007005887A1 DE102007005887A1 (de) 2007-08-30
DE102007005887B4 true DE102007005887B4 (de) 2019-06-13

Family

ID=37908644

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007005887.1A Active DE102007005887B4 (de) 2006-02-14 2007-02-01 Hinderung bösartiger Software an der Ausführung innerhalb eines Rechnersystems

Country Status (5)

Country Link
JP (1) JP4575350B2 (de)
DE (1) DE102007005887B4 (de)
FR (1) FR2897452B1 (de)
GB (1) GB2436442B (de)
SG (1) SG135173A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2982867A1 (en) * 2015-04-07 2016-10-13 RunSafe Security, Inc. System and method of obfuscation through binary and memory diversity

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071653A1 (en) 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Non-linear execution of application program instructions for application program obfuscation
US20050071664A1 (en) 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Interleaved data and instruction streams for application program obfuscation
US20050188171A1 (en) 2004-02-19 2005-08-25 International Business Machines Corporation Method and apparatus to prevent vulnerability to virus and worm attacks through instruction remapping

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000056966A (ja) * 1998-08-07 2000-02-25 Nippon Telegr & Teleph Corp <Ntt> マイクロプロセッサシステムおよびマイクロプロセッサ動作解析防止方法
JP4042280B2 (ja) * 1999-12-21 2008-02-06 富士ゼロックス株式会社 実行プログラムの生成方法及び実行プログラム生成装置、実行プログラムの実行方法、並びに、コンピュータ可読プログラム記憶媒体
US6507904B1 (en) * 2000-03-31 2003-01-14 Intel Corporation Executing isolated mode instructions in a secure system running in privilege rings
FR2841997B1 (fr) * 2002-07-08 2005-11-11 Gemplus Card Int Securisation d'application telechargee notamment dans une carte a puce
JP4568489B2 (ja) * 2003-09-11 2010-10-27 富士通株式会社 プログラム保護方法、プログラム保護プログラムおよびプログラム保護装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071653A1 (en) 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Non-linear execution of application program instructions for application program obfuscation
US20050071664A1 (en) 2003-09-25 2005-03-31 Sun Microsystems, Inc., A Delaware Corporation Interleaved data and instruction streams for application program obfuscation
US20050188171A1 (en) 2004-02-19 2005-08-25 International Business Machines Corporation Method and apparatus to prevent vulnerability to virus and worm attacks through instruction remapping

Also Published As

Publication number Publication date
DE102007005887A1 (de) 2007-08-30
FR2897452A1 (fr) 2007-08-17
IE20070090A1 (en) 2007-09-19
JP2007220091A (ja) 2007-08-30
JP4575350B2 (ja) 2010-11-04
SG135173A1 (en) 2007-09-28
GB2436442B (en) 2008-04-16
GB0702890D0 (en) 2007-03-28
IE20080383A1 (en) 2008-08-20
GB2436442A (en) 2007-09-26
FR2897452B1 (fr) 2016-12-09

Similar Documents

Publication Publication Date Title
DE112018002031B4 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
Kharraz et al. Redemption: Real-time protection against ransomware at end-hosts
DE112012003988B4 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
DE69815599T2 (de) Verfahren und Vorrichtung zum Schutz von Anwendungsdaten in sicheren Speicherbereichen
DE60204049T2 (de) Systeme, verfahren und einrichtungen zur sicheren datenverarbeitung
DE102018115489A1 (de) Krypto-erzwungene rechte für isolation
DE102008006759B4 (de) Prozessor-Anordnung und Verfahren zum Betreiben der Prozessor-Anordnung ohne Verringerung der Gesamtsicherheit
DE102012210887B4 (de) Verfahren zum Einrichten einer sicher verwalteten Ausführungsumgebung für eine virtuelle Maschine und eine Computervorrichtung
US8041958B2 (en) Method for preventing malicious software from execution within a computer system
Chen et al. A practical approach for adaptive data structure layout randomization
DE202013102179U1 (de) System zu detektieren von durch eine virtuelle Maschine ausgeführtem Schadcode
DE60127310T2 (de) Vorrichtung zum schutz digitaler daten
DE112009002502T5 (de) Multilayer inhalte-schützender Mikrocontoller
DE202014011092U1 (de) Sicherheitsarchitektur für virtuelle Maschinen
DE102012215196A1 (de) Schützen von Anwendungsprogrammen vor zerstörerischer Software oder Malware
DE202009019137U1 (de) Apparat für die Validierung eines nicht vertrauenswürdigen Nativen Code-Moduls
US8694797B2 (en) Method for preventing malicious software from execution within a computer system
EP3111355B1 (de) Verfahren zum schutz eines computerprogramms gegen beeinflussung und computersystem
DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
DE112020004190T5 (de) Verbessern der sicheren programmierung im hauptspeicher unter verwendung eines seitenrahmen-kennzeichenmechanismus
Hashii et al. Supporting reconfigurable security policies for mobile programs
DE112022003368T5 (de) Verschlüsselungsüberwachungsregister und -system
DE102007005887B4 (de) Hinderung bösartiger Software an der Ausführung innerhalb eines Rechnersystems
Rauti et al. Towards a diversification framework for operating system protection
DE202013103358U1 (de) Selektive Einschätzung der Schädlichkeit von im Adressraum eines vertrauenswürdigen Prozesses ausgeführtem Software-Code

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R007 Decision rectified on appeal
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative

Representative=s name: SCHWEIGER, MARTIN, DIPL.-ING. UNIV., DE