SlideShare a Scribd company logo
1 of 40
Download to read offline
Kapitel 8:
  Architektur und
      Vielfalt
                                          Universität Mannheim
Software Reverse Engineering   Lehrstuhl Praktische Informatik 1
Übersicht
  8.1          •Zielsetzung

  8.2          •Motivation

  8.3          •Architekturen

  8.4          •REIL

  8.5          •Zusammenfassung
                                                      Universität Mannheim
                                   2
Software Reverse Engineering               Lehrstuhl Praktische Informatik 1
Architektur und
                                   Vielfalt




                                8.1 Zielsetzung
                                                             Universität Mannheim
Software Reverse Engineering                      Lehrstuhl Praktische Informatik 1
8.1 Zielsetzung
 Wir wollen uns ein Bild von
 verschiedenen Architekturen und
 deren Einsatzgebieten machen.


          Wir wollen verstehen warum diese
          Architektur-Vielfalt neue Ansätze und
          Herangehensweisen für einen Reverse
          Engineer erfordern.


                   Wir wollen einen möglichen Ansatz
                   näher Betrachten und die möglichen
                   Probleme dieses Ansatzes diskutieren.

                                                                  Universität Mannheim
                                       4
Software Reverse Engineering                           Lehrstuhl Praktische Informatik 1
Architektur und
                                   Vielfalt




                                8.2 Motivation
                                                            Universität Mannheim
Software Reverse Engineering                     Lehrstuhl Praktische Informatik 1
8.2 Motivation
                                  • Verschiedene Anwendungsgebiete
  Unterschiedlichste              • Unterschiedlichste Architekturen
            Systeme               • Mehrere mögliche Compiler



                                  • Eingebettete Systeme, Server, PCs,..
                                  • Consumer Elektronik, Spiele Konsolen,
Anwendungsgebiete                   Mobiltelefone, ..



                                  • Bisherige Methoden sind
                                    unzureichend
    Herausforderung               • Der Zeit und Kosten Faktor
                                    unberechenbar

                                                                      Universität Mannheim
                                         6
Software Reverse Engineering                               Lehrstuhl Praktische Informatik 1
Architektur und
                                   Vielfalt




                               8.3 Architekturen
                                                              Universität Mannheim
Software Reverse Engineering                       Lehrstuhl Praktische Informatik 1
8.3 Architekturen [I]
                               Name: ARM
                               Verwendung: Low Power Devices (Mobiltelefone, ..)
                               Architekturtyp: RISC 32Bit
                               Anzahl Register: 16 x 32Bit


  Besonderheiten:
  • Mehrere Instruktionssets (32Bit ARM, 16Bit THUMB, [32/16]Bit THUMB-2).
  • Fast alle Instruktionen sind konditionell ausführbar.
  • Unterschiedliche Stack Adressierungsverfahren (FA, FD, EA, ED).
  • Arithmetische Instruktionen können ohne Laufzeitverlust den Barrel-Shifter
  verwenden um Ihre Argumente zu „shiften“.
  • Bei manchen ARM Cores ist das Ausführen von Java Code direkt auf der CPU
  möglich.




                                                                       Universität Mannheim
                                        8
Software Reverse Engineering                                Lehrstuhl Praktische Informatik 1
8.3 Architekturen [II]
                               Name: x86-32/64
                               Verwendung: PCs und Server
                               Architekturtyp: CISC 32/64 Bit
                               Anzahl Register: 8 bei 32 Bit 16 bei 64 Bit;


  Besonderheiten:
  • Variable Length Instruction Set.
  • Verschiedene Multimedia Extensions (MMX, SSEx, …).
  • Virtualisierung in Hardware.
  • Heute gebräuchliche CPUs diesen Typs Übersetzen das CISC Instruktionsset in
  einen leichter parallelisierbaren Microcode.




                                                                         Universität Mannheim
                                        9
Software Reverse Engineering                                  Lehrstuhl Praktische Informatik 1
8.3 Architekturen [III]
                               Name: MIPS
                               Verwendung: Router, Server, Low Power Devices
                               Architekturtyp: RISC 32/64 Bit
                               Anzahl Register: 32 x (32/64) Bit


  Besonderheiten:
  • Wird heute meist in eingebetteter Form für viele Cisco Router genutzt.
  • Modelliert Flags als Exceptions.
  • Besitzt einen „Branch Delay Slot“ welcher nach einer Return Anweisung
  ausgeführt wird.
  • Eine der im universitären Umfeld meist genutzte Architektur für Kompiler-Bau
  Vorlesungen durch die „beste ausgestorbene Programmiersprache“




                                                                        Universität Mannheim
                                        10
Software Reverse Engineering                                 Lehrstuhl Praktische Informatik 1
8.3 Architekturen [IV]
                               Name: SPARC / UltraSPARC / Niagara
                               Verwendung: High Performance Server
                               Architekturtyp: RISC 32/64 Bit
                               Anzahl Register: 32 (64Bit) visible / 128 Total


  Besonderheiten:
  • Nutzt einen Registershift Mechanismus um die Parameter Übergabe zwischen
  Funktionen ohne Nutzung des Stacks zu realisieren.
  • Hat wie die MIPS Architektur einen „branch delay Slot“.




                                                                         Universität Mannheim
                                        11
Software Reverse Engineering                                  Lehrstuhl Praktische Informatik 1
8.3 Architekturen [V]
                               Name: PowerPC
                               Verwendung: Server, PC‘s, Gaming Consoles
                               Architekturtyp: RISC 32/64 Bit
                               Anzahl Register: 32


  Besonderheiten:
  • Zur Zeit die in den meisten Spiele-Konsolen verwendete Architektur (PS3,
  XBOX, Wii) in Form von verschiedenen Implementierungen der Kernarchitektur.
  • Unterstützt konditionelle Instruktionen für Moves.
  • Unterstützt mehrere Endianess Modes für Instruktionen und Daten.
  • Basiert auf der IBM POWER Architektur.




                                                                      Universität Mannheim
                                       12
Software Reverse Engineering                               Lehrstuhl Praktische Informatik 1
8.3 Architekturen [IV]
                               Name: AVR
                               Verwendung: Eingebettete Systeme,
                               Automobilsektor,
                               Architekturtyp: RISC 8 Bit
                               Anzahl Register: 32 8Bit Register

  Besonderheiten:
  • Die AT(xmega/mega/tiny/) Architektur wird meistens als eingebettetes System
  eingesetzt.
  • EEProm / SRAM / FlashSpeicher auf dem Chip.
  • A/D Wandler und Timer, die direkt in C oder Assembler angesprochen werden
  können.
  • Direkte Unterstützung von verschiedenen Bussystemen wie z.B. CAN.




                                                                       Universität Mannheim
                                       13
Software Reverse Engineering                                Lehrstuhl Praktische Informatik 1
8.3 Zusammenfassung

               1               • Mehr als eine Architektur ist Interessant




               2               • Jede Architektur hat Ihre Besonderheiten




               3               • Für die Analyse sind die Besonderheiten
                                 enorm wichtig


                               • Gibt es trotz dieser Vielfältigkeit eine
               4                 Architektur unabhängige Möglichkeit der
                                 Analyse ?
                                                                      Universität Mannheim
                                        14
Software Reverse Engineering                               Lehrstuhl Praktische Informatik 1
Architektur und
                                   Vielfalt




                                   8.4 REIL
                                                         Universität Mannheim
Software Reverse Engineering                  Lehrstuhl Praktische Informatik 1
Übersicht
8.4.1          •Zielsetzung

8.4.2          •Motivation

8.4.3          •Sprachdefinition

8.4.4          •Anwendungen

8.4.5          •Zusammenfassung
                                                      Universität Mannheim
                                   16
Software Reverse Engineering               Lehrstuhl Praktische Informatik 1
8.4.1 Zielsetzung
Wir wollen eine Methode kennenlernen,
welche uns viele von den gezeigten
Unterschieden abstrahiert.

        Als Abstraktionsmethode werden wir eine
        Metasprache einführen, die mit einem sehr
        einfachen RISC Instruktionsset arbeitet.


                Wir werden die Sprache und Instruktionen
                beispielhaft anwenden.


                        Wir werden die Einschränkungen der
                        Sprache betrachten und mögliche
                        Erweiterungen diskutieren.

                                                                        Universität Mannheim
                                          17
Software Reverse Engineering                                 Lehrstuhl Praktische Informatik 1
8.4.2 Motivation I
     Verschiedene Architekturen

     • Architekturelle Besonderheiten
     • Mehr als ein Compiler

     Steigende Komplexität

     • Schwerer zu Analysieren
     • Steigende Kosten

     Anforderungen

     • Architektur und Compiler unabhängig
     • Einfach zu definierende Algorithmen
                                                        Universität Mannheim
                                   18
Software Reverse Engineering                 Lehrstuhl Praktische Informatik 1
8.4.2 Motivation II
     Offensive vs. Defensive

     • Fehler finden wird schwieriger
     • Die Defensive hat den Quellcode
     • Die Defensive investiert in die Analyse von
       Quellcode

     Offensive Statische Analyse

     • Tiefe geht vor Breite
     • Ohne automatisierte Werkzeuge wird das Spiel
       verloren
                                                         Universität Mannheim
                                   19
Software Reverse Engineering                  Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition




    Reverse Engineering Intermediate Language


                                                  Universität Mannheim
                               20
Software Reverse Engineering           Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition [Übersicht]

Reverse Engineering Intermediate Language

Plattformunabhängige Metaassembler Sprache

Speziell für die statische Analyse von Binärcode entworfen

Kann aus nativem Assemblercode erzeugt werden

Bisher sind x86, PowerPC, ARM, MIPS unterstützt

REIL Algorithmen sind simpler als Native Algorithmen

                                                      Universität Mannheim
                               21
Software Reverse Engineering               Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition [Übersicht]

So einfach wie Möglich (Syntaktisch / Semantisch)

Instruktionen teilen sich das gleiche Instruktionsformat

Sehr kleines Instruktionsset (17 Instruktionen)

Instruktionsset ist Seiteneffektfrei

Explizite Modellierung aller States des Prozessors (Flags)

1-zu-1 Abbildung zwischen nativem Code und REIL

                                                      Universität Mannheim
                               22
Software Reverse Engineering               Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition [Instruktionen]
     Format

     • Einzigartige Adresse [0xAABBCCDD.XX]
     • Simples Format [Adresse [Mnemonik (OP1, OP2, OP3), {Meta}]]

     Effekt

     • Mnemonik beschreibt Programmstatuseffekt exakt

     Instruktionskategorien

     •   Arithmetik
     •   Bitweise
     •   Logische
     •   Datentransfer
     •   Weitere
                                                                 Universität Mannheim
                                    23
 Software Reverse Engineering                         Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition [Instruktionen]

ADDR                   MNEMONIC                          OPERAND 1                    OPERAND 2             OPERAND 3             META INFO



                                           Instruktionen nutzen 0 bis 3 der möglichen Operanden




                                                                Metainformationen enkodieren zusätzliche Informationen


              ADD
                                                                   Daten Transfer




              SUB
Arithmetik




                                     AND                                            LDM             NOP
                         Boolesche




              MUL                                        BISZ
                                              Logische




                                     OR                                             STM             UNKN
                                                                                           Andere

              DIV                                        JCC
                                     XOR                                            STR             UNDEF
              MOD
              BSH
                                                                                                                         Universität Mannheim
                                                                                      24
             Software Reverse Engineering                                                                     Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition [Instruktionen]
 Alle Instruktionen sind gleich

 add        t0,        t1,       t2
                                           Aber manche Instruktionen sind gleicher
 and        t0,        t1,       t2
 bsh        t0,        t1,       t2             bisz        t0,         ,     t2
 div        t0,        t1,       t2             jcc         t0,         ,     t2
 mod        t0,        t1,       t2             ldm         t0,         ,     t2
 mul        t0,        t1,       t2             nop           ,         ,
 or         t0,        t1,       t2             stm         t0,         ,     t2
 sub        t0,        t1,       t2             str         t0,         ,     t2
 xor        t0,        t1,       t2             undef         ,         ,     t2
                                                unkn          ,         ,


                                                                    Universität Mannheim
                                      25
  Software Reverse Engineering                           Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition [Operanden]
      Operanden sind typisiert

     • Register
     • Literal
     • Unter-Adresse

      Operanden haben eine Größe

     • 1byte, 2bytes, 4bytes, …

                                               Universität Mannheim
                               26
Software Reverse Engineering        Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition [REIL VM]

Die REIL VM
• Beschreibt die Interaktion mit Registern und
  Speicher
• ist eine Register Maschine ohne expliziten Stack

REIL Register
• sind unbegrenzt verfügbar (t0, t1, …, tn).
• sind instruktionslokal.
• sind beliebig groß.
                                                  Universität Mannheim
                               27
Software Reverse Engineering           Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition [REIL VM]
REIL Speicher
 • hat ein flaches Speicherlayout.
 • ist theoretisch „unendlich“ groß.
 • hat keine Alignement Anforderungen.
 • hat die Endianess der analysierten Plattform.




                                                         Universität Mannheim
                               28
Software Reverse Engineering                  Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition [Übersetzung]
03F535B4 MOV               R2, R1                               03F535C4 STR            LR, [SP,0x4]



     3F535B400: str R1, , R2                              3F535C400: add SP, 4, t1
                                                          3F535C401: and t1, 4294967295, t0
                                                          3F535C402: stm LR, , t0


  03F7C394 LDREQH                R3, word [R2,0x6]



        3F7C39400: bisz Z, , t3
        3F7C39401: jcc t3, , 66569108.5
        3F7C39402: add R2, 6, t5
        3F7C39402: ldm t5, , R3
        3F7C39403: and t5, 0xFFFFFFFF, t4
        3F7C39405: nop , ,
                                                                                   Universität Mannheim
                                                     29
  Software Reverse Engineering                                          Lehrstuhl Praktische Informatik 1
8.4.3 Sprachdefinition [Limitierung]
      Übersetzung

      •   Nicht alle Instruktionen können übersetzt werden
      •   Floating Point Instruktionen
      •   MMX, SSE, Altivec
      •   Hardwarenahe Instruktionen SETEND, BKPT
      •   System Aufrufe
      •   Interrupts

      System Charakteristiken

      • Keine Unterstützung von Ausnahmen (Exceptions)

      Fehler im Initialen Design

      • Eine Instruktion hat sich als nicht ausgereift erwiesen
                                                                      Universität Mannheim
                                       30
Software Reverse Engineering                               Lehrstuhl Praktische Informatik 1
8.4.4 Anwendungen
                    • MonoREIL (Abstrakte Interpretation)
      1             • Register Tracking


                    • Deobfuscator
      2             • Typereconstruction


                    • Plattform unabhängiges „return-oriented
      3               programming“


                                                            Universität Mannheim
                                    31
Software Reverse Engineering                     Lehrstuhl Praktische Informatik 1
8.4.4 MonoREIL
     Abstrakte Interpretation

     • Theoretische Grundlage der meisten Code Analyse Methoden
     • Entwickelt von Patrick und Rhadia Cousot 1975-1977
     • Formalisiert „statische abstrakte Schlussfolgerung aus dynamischen
       Eigenschaften“
     • Genauere Betrachtung wird hier nicht vorgenommen

     Ziel

     • Aussage über den Zustand eines Programms machen

     Problem

     • Viele der gestellten Fragen sind unlösbar („Halte-Problem“)


                                                                      Universität Mannheim
                                       32
Software Reverse Engineering                               Lehrstuhl Praktische Informatik 1
8.4.4 MonoREIL


      Wie umgeht man dieses Problem

     • Wir betrachten eine Menge, über die wir
       Schlussfolgerungen ziehen können
       (Bereich vs. Satz von Werten)
     • Deswegen „abstrakt“



                                                           Universität Mannheim
                                     33
Software Reverse Engineering                    Lehrstuhl Praktische Informatik 1
8.4.4 MonoREIL
1
       • Instruktionsgraphen erstellen

2
       • Einen Graph-Ablaufalgorithmus bestimmen

3
       • Programmstatus-Definitionen bestimmen

4
       • Programmtransformationen definieren

5
       • Programmflusszusammenführung definieren

6
       • Startvektor definieren


                                                           Universität Mannheim
                                     34
Software Reverse Engineering                    Lehrstuhl Praktische Informatik 1
8.4.4 MonoREIL
Starten mit dem Startvektor und Graph; mit
vorgegebenem Algorithmus durchlaufen.


      Zusätzliche Informationen über den
      Programablauf durch die Transformatoren und
      Zustandszusammenführung sammeln.

               Das Sammeln von Informationen wird beendet,
               wenn keine weiteren Informationen mehr
               hinzugefügt werden können.

                       Das Ergebnis wird in einem finalen
                       Ergebnisvektor abgelegt und dann mit den
                       originalen nativen Instruktionen verbunden.

                                                                          Universität Mannheim
                                            35
 Software Reverse Engineering                                  Lehrstuhl Praktische Informatik 1
8.4.4 MonoREIL [Register tracking]
     Ziel

     • Gegeben ein Register in einer Instruktion:
       Welchen Effekt hat der Wert dieses Register
       auf den Programstatus und den Kontrollfluss

     Herangehensweise

     • MonoREIL wird auf ein konkretes Problem
       angewendet

                                                  Universität Mannheim
                               36
Software Reverse Engineering           Lehrstuhl Praktische Informatik 1
8.4.4 MonoREIL [Register tracking]
       • Instruktionsgraph wird durch MonoREIL erstellt
1

       • Der Graph wird nach unten durchlaufen
2

       • Einfacher Registersatz ist ein Programmstatus
3

       • Für die 17 Instruktionen Transformationen definieren
4

       • Bei Programmflusszusammenführung Registersätze zusammenführen
5

       • Startvektoren: Elternknoten mit zu verfolgenden Register initialisieren, Kind
6        Knoten mit leerem Registersatz.

                                                                           Universität Mannheim
                                          37
Software Reverse Engineering                                    Lehrstuhl Praktische Informatik 1
8.4.4 MonoREIL [Register tracking]




                               DEMO



                                                 Universität Mannheim
                                38
Software Reverse Engineering          Lehrstuhl Praktische Informatik 1
8.4.5 Zusammenfassung

                 1             • Viele Architekturen erfordern
                                 neue Wege


                 2             • Die Besonderheiten spielen die
                                 entscheidende Rolle


                 3             • Kosten sind der entscheidende
                                 Faktor


                 4             • REIL ist eine mögliche Antwort

                                                              Universität Mannheim
                                     39
Software Reverse Engineering                       Lehrstuhl Praktische Informatik 1
Referenzen
• http://www.zynamics.com/downloads/csw09.pdf
• http://de.wikipedia.org/wiki/Abstrakte_Interpretatio
  n
• http://www.di.ens.fr/~cousot/Equipeabsint-eg.shtml
• http://bitblaze.cs.berkeley.edu/
• http://www.eresi-project.org/
• http://www.phrack.org/issues.html?issue=64&id=8#
  article



                                                        Universität Mannheim
                                    40
 Software Reverse Engineering                Lehrstuhl Praktische Informatik 1

More Related Content

Viewers also liked

Actividad financiera del Estado Venezolano
Actividad financiera del Estado VenezolanoActividad financiera del Estado Venezolano
Actividad financiera del Estado Venezolanomarioguzman169
 
Mantenimiento preventivo
Mantenimiento preventivoMantenimiento preventivo
Mantenimiento preventivoMario Puerta
 
Prezentacja: Dialog
Prezentacja: DialogPrezentacja: Dialog
Prezentacja: Dialogguest5ec3426
 
Comunicación e interaccion social
Comunicación e interaccion socialComunicación e interaccion social
Comunicación e interaccion socialanderbar
 
Las tic yasdel
Las tic yasdelLas tic yasdel
Las tic yasdelpreseta03
 
Social Bookmarking und RSS oder der Blick unter die Haube des Web 2.0
Social Bookmarking und RSS oder der Blick unter die Haube des Web 2.0Social Bookmarking und RSS oder der Blick unter die Haube des Web 2.0
Social Bookmarking und RSS oder der Blick unter die Haube des Web 2.0Christian Henner-Fehr
 
Tipografìa gerzahim
Tipografìa gerzahimTipografìa gerzahim
Tipografìa gerzahimErmager
 
Informe de-ecologia
Informe de-ecologiaInforme de-ecologia
Informe de-ecologiaNinguna
 
Regress des Vereins gegen Störer bei Zuschauerausschreitungen
Regress des Vereins gegen Störer bei ZuschauerausschreitungenRegress des Vereins gegen Störer bei Zuschauerausschreitungen
Regress des Vereins gegen Störer bei ZuschauerausschreitungenMarius Breucker
 
10 inventos por cristian arbey 9 e
10 inventos por cristian arbey 9 e 10 inventos por cristian arbey 9 e
10 inventos por cristian arbey 9 e Cristian Chavarria
 
Presentación1
Presentación1Presentación1
Presentación1karenp16
 
UTDNPRESENATICIONES
UTDNPRESENATICIONESUTDNPRESENATICIONES
UTDNPRESENATICIONESneutron492
 
Mejoramiento del proyecto
Mejoramiento del proyectoMejoramiento del proyecto
Mejoramiento del proyectojuandavidyberta
 
Funciones buscar
Funciones buscarFunciones buscar
Funciones buscarErikalrd
 

Viewers also liked (20)

Actividad financiera del Estado Venezolano
Actividad financiera del Estado VenezolanoActividad financiera del Estado Venezolano
Actividad financiera del Estado Venezolano
 
Mantenimiento preventivo
Mantenimiento preventivoMantenimiento preventivo
Mantenimiento preventivo
 
La administración 4
La administración 4La administración 4
La administración 4
 
Video tutoriales
Video tutorialesVideo tutoriales
Video tutoriales
 
Prezentacja: Dialog
Prezentacja: DialogPrezentacja: Dialog
Prezentacja: Dialog
 
Comunicación e interaccion social
Comunicación e interaccion socialComunicación e interaccion social
Comunicación e interaccion social
 
Las tic yasdel
Las tic yasdelLas tic yasdel
Las tic yasdel
 
Students for Startups
Students for StartupsStudents for Startups
Students for Startups
 
Social Bookmarking und RSS oder der Blick unter die Haube des Web 2.0
Social Bookmarking und RSS oder der Blick unter die Haube des Web 2.0Social Bookmarking und RSS oder der Blick unter die Haube des Web 2.0
Social Bookmarking und RSS oder der Blick unter die Haube des Web 2.0
 
Tipografìa gerzahim
Tipografìa gerzahimTipografìa gerzahim
Tipografìa gerzahim
 
Cifrado de documentos
Cifrado de documentosCifrado de documentos
Cifrado de documentos
 
Sr20090620
Sr20090620Sr20090620
Sr20090620
 
Informe de-ecologia
Informe de-ecologiaInforme de-ecologia
Informe de-ecologia
 
Regress des Vereins gegen Störer bei Zuschauerausschreitungen
Regress des Vereins gegen Störer bei ZuschauerausschreitungenRegress des Vereins gegen Störer bei Zuschauerausschreitungen
Regress des Vereins gegen Störer bei Zuschauerausschreitungen
 
10 inventos por cristian arbey 9 e
10 inventos por cristian arbey 9 e 10 inventos por cristian arbey 9 e
10 inventos por cristian arbey 9 e
 
Presentación1
Presentación1Presentación1
Presentación1
 
nelsitonnn
nelsitonnnnelsitonnn
nelsitonnn
 
UTDNPRESENATICIONES
UTDNPRESENATICIONESUTDNPRESENATICIONES
UTDNPRESENATICIONES
 
Mejoramiento del proyecto
Mejoramiento del proyectoMejoramiento del proyecto
Mejoramiento del proyecto
 
Funciones buscar
Funciones buscarFunciones buscar
Funciones buscar
 

Similar to Architectural Diversity (German)

Microservice-Architektur-Prozess für Software-Plattformen und Microservice-Ec...
Microservice-Architektur-Prozess für Software-Plattformen und Microservice-Ec...Microservice-Architektur-Prozess für Software-Plattformen und Microservice-Ec...
Microservice-Architektur-Prozess für Software-Plattformen und Microservice-Ec...Peter Schrey
 
Java für eingebettete Systeme
Java für eingebettete SystemeJava für eingebettete Systeme
Java für eingebettete Systemerdmeyer
 
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...Ramon Anger
 
Angewandte Informatik - Systems Engineering: Die Mischung macht´s!
Angewandte Informatik - Systems Engineering: Die Mischung macht´s!Angewandte Informatik - Systems Engineering: Die Mischung macht´s!
Angewandte Informatik - Systems Engineering: Die Mischung macht´s!starchaser
 
Technologieraum übergreifende Programmierung
Technologieraum übergreifende ProgrammierungTechnologieraum übergreifende Programmierung
Technologieraum übergreifende ProgrammierungFalk Hartmann
 
Verteilte Software-Systeme im Kontext von Industrie 4.0
Verteilte Software-Systeme im Kontext von Industrie 4.0Verteilte Software-Systeme im Kontext von Industrie 4.0
Verteilte Software-Systeme im Kontext von Industrie 4.0Peter Tröger
 
.NET Gadgeteer // msg@dnc12
.NET Gadgeteer // msg@dnc12.NET Gadgeteer // msg@dnc12
.NET Gadgeteer // msg@dnc12Holger Wendel
 
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best PracticesGFU Cyrus AG
 
Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"joergreichert
 
AdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsAdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsChristoph Adler
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareAndreas Schreiber
 
BATbern41 Die Evolution zu Microservices
BATbern41 Die Evolution zu MicroservicesBATbern41 Die Evolution zu Microservices
BATbern41 Die Evolution zu MicroservicesBATbern
 
Low-Code- und No-Code-Apps im PLM: Einordnung, Nutzen, Risiken, Chancen
Low-Code- und No-Code-Apps im PLM: Einordnung, Nutzen, Risiken, ChancenLow-Code- und No-Code-Apps im PLM: Einordnung, Nutzen, Risiken, Chancen
Low-Code- und No-Code-Apps im PLM: Einordnung, Nutzen, Risiken, ChancenIntelliact AG
 
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataLAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataDai Yang
 

Similar to Architectural Diversity (German) (20)

OSLC in Aktion
OSLC in AktionOSLC in Aktion
OSLC in Aktion
 
UnifiedSessionsManager - Virtualisierung und Cloud-Computing
UnifiedSessionsManager - Virtualisierung und Cloud-ComputingUnifiedSessionsManager - Virtualisierung und Cloud-Computing
UnifiedSessionsManager - Virtualisierung und Cloud-Computing
 
Microservice-Architektur-Prozess für Software-Plattformen und Microservice-Ec...
Microservice-Architektur-Prozess für Software-Plattformen und Microservice-Ec...Microservice-Architektur-Prozess für Software-Plattformen und Microservice-Ec...
Microservice-Architektur-Prozess für Software-Plattformen und Microservice-Ec...
 
Java für eingebettete Systeme
Java für eingebettete SystemeJava für eingebettete Systeme
Java für eingebettete Systeme
 
Illik verteilte systeme
Illik verteilte systemeIllik verteilte systeme
Illik verteilte systeme
 
.NET Gadgeteer
.NET Gadgeteer.NET Gadgeteer
.NET Gadgeteer
 
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
Java User Group Düsseldorf - Vortrag der iks am 13. März 2008
 
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
 
Angewandte Informatik - Systems Engineering: Die Mischung macht´s!
Angewandte Informatik - Systems Engineering: Die Mischung macht´s!Angewandte Informatik - Systems Engineering: Die Mischung macht´s!
Angewandte Informatik - Systems Engineering: Die Mischung macht´s!
 
Technologieraum übergreifende Programmierung
Technologieraum übergreifende ProgrammierungTechnologieraum übergreifende Programmierung
Technologieraum übergreifende Programmierung
 
Verteilte Software-Systeme im Kontext von Industrie 4.0
Verteilte Software-Systeme im Kontext von Industrie 4.0Verteilte Software-Systeme im Kontext von Industrie 4.0
Verteilte Software-Systeme im Kontext von Industrie 4.0
 
.NET Gadgeteer // msg@dnc12
.NET Gadgeteer // msg@dnc12.NET Gadgeteer // msg@dnc12
.NET Gadgeteer // msg@dnc12
 
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
 
Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"
 
AdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsAdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsights
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
 
BATbern41 Die Evolution zu Microservices
BATbern41 Die Evolution zu MicroservicesBATbern41 Die Evolution zu Microservices
BATbern41 Die Evolution zu Microservices
 
imatics FormEngine
imatics FormEngineimatics FormEngine
imatics FormEngine
 
Low-Code- und No-Code-Apps im PLM: Einordnung, Nutzen, Risiken, Chancen
Low-Code- und No-Code-Apps im PLM: Einordnung, Nutzen, Risiken, ChancenLow-Code- und No-Code-Apps im PLM: Einordnung, Nutzen, Risiken, Chancen
Low-Code- und No-Code-Apps im PLM: Einordnung, Nutzen, Risiken, Chancen
 
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataLAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global Data
 

More from zynamics GmbH

How to really obfuscate your pdf malware
How to really obfuscate   your pdf malwareHow to really obfuscate   your pdf malware
How to really obfuscate your pdf malwarezynamics GmbH
 
How to really obfuscate your pdf malware
How to really obfuscate your pdf malwareHow to really obfuscate your pdf malware
How to really obfuscate your pdf malwarezynamics GmbH
 
Architectural Diversity (German)
Architectural Diversity (German)Architectural Diversity (German)
Architectural Diversity (German)zynamics GmbH
 
Introduction to mobile reversing
Introduction to mobile reversingIntroduction to mobile reversing
Introduction to mobile reversingzynamics GmbH
 
0-knowledge fuzzing white paper
0-knowledge fuzzing white paper0-knowledge fuzzing white paper
0-knowledge fuzzing white paperzynamics GmbH
 
Formale Methoden im Reverse Engineering
Formale Methoden im Reverse EngineeringFormale Methoden im Reverse Engineering
Formale Methoden im Reverse Engineeringzynamics GmbH
 

More from zynamics GmbH (9)

How to really obfuscate your pdf malware
How to really obfuscate   your pdf malwareHow to really obfuscate   your pdf malware
How to really obfuscate your pdf malware
 
How to really obfuscate your pdf malware
How to really obfuscate your pdf malwareHow to really obfuscate your pdf malware
How to really obfuscate your pdf malware
 
Architectural Diversity (German)
Architectural Diversity (German)Architectural Diversity (German)
Architectural Diversity (German)
 
Introduction to mobile reversing
Introduction to mobile reversingIntroduction to mobile reversing
Introduction to mobile reversing
 
0-knowledge fuzzing white paper
0-knowledge fuzzing white paper0-knowledge fuzzing white paper
0-knowledge fuzzing white paper
 
Inbot10 vxclass
Inbot10 vxclassInbot10 vxclass
Inbot10 vxclass
 
ShaREing is Caring
ShaREing is CaringShaREing is Caring
ShaREing is Caring
 
0-knowledge fuzzing
0-knowledge fuzzing0-knowledge fuzzing
0-knowledge fuzzing
 
Formale Methoden im Reverse Engineering
Formale Methoden im Reverse EngineeringFormale Methoden im Reverse Engineering
Formale Methoden im Reverse Engineering
 

Recently uploaded

Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...Martin M Flynn
 
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...Mathias Magdowski
 
Kurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfKurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfHenning Urs
 
Stadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaStadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaOlenaKarlsTkachenko
 
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächEin Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächOlenaKarlsTkachenko
 
Presentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamPresentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamEus van Hove
 

Recently uploaded (7)

Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
 
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
 
Kurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfKurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdf
 
Stadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaStadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt Popasna
 
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdfDíptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
 
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächEin Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
 
Presentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamPresentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von Rotterdam
 

Architectural Diversity (German)

  • 1. Kapitel 8: Architektur und Vielfalt Universität Mannheim Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 2. Übersicht 8.1 •Zielsetzung 8.2 •Motivation 8.3 •Architekturen 8.4 •REIL 8.5 •Zusammenfassung Universität Mannheim 2 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 3. Architektur und Vielfalt 8.1 Zielsetzung Universität Mannheim Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 4. 8.1 Zielsetzung Wir wollen uns ein Bild von verschiedenen Architekturen und deren Einsatzgebieten machen. Wir wollen verstehen warum diese Architektur-Vielfalt neue Ansätze und Herangehensweisen für einen Reverse Engineer erfordern. Wir wollen einen möglichen Ansatz näher Betrachten und die möglichen Probleme dieses Ansatzes diskutieren. Universität Mannheim 4 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 5. Architektur und Vielfalt 8.2 Motivation Universität Mannheim Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 6. 8.2 Motivation • Verschiedene Anwendungsgebiete Unterschiedlichste • Unterschiedlichste Architekturen Systeme • Mehrere mögliche Compiler • Eingebettete Systeme, Server, PCs,.. • Consumer Elektronik, Spiele Konsolen, Anwendungsgebiete Mobiltelefone, .. • Bisherige Methoden sind unzureichend Herausforderung • Der Zeit und Kosten Faktor unberechenbar Universität Mannheim 6 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 7. Architektur und Vielfalt 8.3 Architekturen Universität Mannheim Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 8. 8.3 Architekturen [I] Name: ARM Verwendung: Low Power Devices (Mobiltelefone, ..) Architekturtyp: RISC 32Bit Anzahl Register: 16 x 32Bit Besonderheiten: • Mehrere Instruktionssets (32Bit ARM, 16Bit THUMB, [32/16]Bit THUMB-2). • Fast alle Instruktionen sind konditionell ausführbar. • Unterschiedliche Stack Adressierungsverfahren (FA, FD, EA, ED). • Arithmetische Instruktionen können ohne Laufzeitverlust den Barrel-Shifter verwenden um Ihre Argumente zu „shiften“. • Bei manchen ARM Cores ist das Ausführen von Java Code direkt auf der CPU möglich. Universität Mannheim 8 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 9. 8.3 Architekturen [II] Name: x86-32/64 Verwendung: PCs und Server Architekturtyp: CISC 32/64 Bit Anzahl Register: 8 bei 32 Bit 16 bei 64 Bit; Besonderheiten: • Variable Length Instruction Set. • Verschiedene Multimedia Extensions (MMX, SSEx, …). • Virtualisierung in Hardware. • Heute gebräuchliche CPUs diesen Typs Übersetzen das CISC Instruktionsset in einen leichter parallelisierbaren Microcode. Universität Mannheim 9 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 10. 8.3 Architekturen [III] Name: MIPS Verwendung: Router, Server, Low Power Devices Architekturtyp: RISC 32/64 Bit Anzahl Register: 32 x (32/64) Bit Besonderheiten: • Wird heute meist in eingebetteter Form für viele Cisco Router genutzt. • Modelliert Flags als Exceptions. • Besitzt einen „Branch Delay Slot“ welcher nach einer Return Anweisung ausgeführt wird. • Eine der im universitären Umfeld meist genutzte Architektur für Kompiler-Bau Vorlesungen durch die „beste ausgestorbene Programmiersprache“ Universität Mannheim 10 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 11. 8.3 Architekturen [IV] Name: SPARC / UltraSPARC / Niagara Verwendung: High Performance Server Architekturtyp: RISC 32/64 Bit Anzahl Register: 32 (64Bit) visible / 128 Total Besonderheiten: • Nutzt einen Registershift Mechanismus um die Parameter Übergabe zwischen Funktionen ohne Nutzung des Stacks zu realisieren. • Hat wie die MIPS Architektur einen „branch delay Slot“. Universität Mannheim 11 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 12. 8.3 Architekturen [V] Name: PowerPC Verwendung: Server, PC‘s, Gaming Consoles Architekturtyp: RISC 32/64 Bit Anzahl Register: 32 Besonderheiten: • Zur Zeit die in den meisten Spiele-Konsolen verwendete Architektur (PS3, XBOX, Wii) in Form von verschiedenen Implementierungen der Kernarchitektur. • Unterstützt konditionelle Instruktionen für Moves. • Unterstützt mehrere Endianess Modes für Instruktionen und Daten. • Basiert auf der IBM POWER Architektur. Universität Mannheim 12 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 13. 8.3 Architekturen [IV] Name: AVR Verwendung: Eingebettete Systeme, Automobilsektor, Architekturtyp: RISC 8 Bit Anzahl Register: 32 8Bit Register Besonderheiten: • Die AT(xmega/mega/tiny/) Architektur wird meistens als eingebettetes System eingesetzt. • EEProm / SRAM / FlashSpeicher auf dem Chip. • A/D Wandler und Timer, die direkt in C oder Assembler angesprochen werden können. • Direkte Unterstützung von verschiedenen Bussystemen wie z.B. CAN. Universität Mannheim 13 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 14. 8.3 Zusammenfassung 1 • Mehr als eine Architektur ist Interessant 2 • Jede Architektur hat Ihre Besonderheiten 3 • Für die Analyse sind die Besonderheiten enorm wichtig • Gibt es trotz dieser Vielfältigkeit eine 4 Architektur unabhängige Möglichkeit der Analyse ? Universität Mannheim 14 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 15. Architektur und Vielfalt 8.4 REIL Universität Mannheim Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 16. Übersicht 8.4.1 •Zielsetzung 8.4.2 •Motivation 8.4.3 •Sprachdefinition 8.4.4 •Anwendungen 8.4.5 •Zusammenfassung Universität Mannheim 16 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 17. 8.4.1 Zielsetzung Wir wollen eine Methode kennenlernen, welche uns viele von den gezeigten Unterschieden abstrahiert. Als Abstraktionsmethode werden wir eine Metasprache einführen, die mit einem sehr einfachen RISC Instruktionsset arbeitet. Wir werden die Sprache und Instruktionen beispielhaft anwenden. Wir werden die Einschränkungen der Sprache betrachten und mögliche Erweiterungen diskutieren. Universität Mannheim 17 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 18. 8.4.2 Motivation I Verschiedene Architekturen • Architekturelle Besonderheiten • Mehr als ein Compiler Steigende Komplexität • Schwerer zu Analysieren • Steigende Kosten Anforderungen • Architektur und Compiler unabhängig • Einfach zu definierende Algorithmen Universität Mannheim 18 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 19. 8.4.2 Motivation II Offensive vs. Defensive • Fehler finden wird schwieriger • Die Defensive hat den Quellcode • Die Defensive investiert in die Analyse von Quellcode Offensive Statische Analyse • Tiefe geht vor Breite • Ohne automatisierte Werkzeuge wird das Spiel verloren Universität Mannheim 19 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 20. 8.4.3 Sprachdefinition Reverse Engineering Intermediate Language Universität Mannheim 20 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 21. 8.4.3 Sprachdefinition [Übersicht] Reverse Engineering Intermediate Language Plattformunabhängige Metaassembler Sprache Speziell für die statische Analyse von Binärcode entworfen Kann aus nativem Assemblercode erzeugt werden Bisher sind x86, PowerPC, ARM, MIPS unterstützt REIL Algorithmen sind simpler als Native Algorithmen Universität Mannheim 21 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 22. 8.4.3 Sprachdefinition [Übersicht] So einfach wie Möglich (Syntaktisch / Semantisch) Instruktionen teilen sich das gleiche Instruktionsformat Sehr kleines Instruktionsset (17 Instruktionen) Instruktionsset ist Seiteneffektfrei Explizite Modellierung aller States des Prozessors (Flags) 1-zu-1 Abbildung zwischen nativem Code und REIL Universität Mannheim 22 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 23. 8.4.3 Sprachdefinition [Instruktionen] Format • Einzigartige Adresse [0xAABBCCDD.XX] • Simples Format [Adresse [Mnemonik (OP1, OP2, OP3), {Meta}]] Effekt • Mnemonik beschreibt Programmstatuseffekt exakt Instruktionskategorien • Arithmetik • Bitweise • Logische • Datentransfer • Weitere Universität Mannheim 23 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 24. 8.4.3 Sprachdefinition [Instruktionen] ADDR MNEMONIC OPERAND 1 OPERAND 2 OPERAND 3 META INFO Instruktionen nutzen 0 bis 3 der möglichen Operanden Metainformationen enkodieren zusätzliche Informationen ADD Daten Transfer SUB Arithmetik AND LDM NOP Boolesche MUL BISZ Logische OR STM UNKN Andere DIV JCC XOR STR UNDEF MOD BSH Universität Mannheim 24 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 25. 8.4.3 Sprachdefinition [Instruktionen] Alle Instruktionen sind gleich add t0, t1, t2 Aber manche Instruktionen sind gleicher and t0, t1, t2 bsh t0, t1, t2 bisz t0, , t2 div t0, t1, t2 jcc t0, , t2 mod t0, t1, t2 ldm t0, , t2 mul t0, t1, t2 nop , , or t0, t1, t2 stm t0, , t2 sub t0, t1, t2 str t0, , t2 xor t0, t1, t2 undef , , t2 unkn , , Universität Mannheim 25 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 26. 8.4.3 Sprachdefinition [Operanden] Operanden sind typisiert • Register • Literal • Unter-Adresse Operanden haben eine Größe • 1byte, 2bytes, 4bytes, … Universität Mannheim 26 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 27. 8.4.3 Sprachdefinition [REIL VM] Die REIL VM • Beschreibt die Interaktion mit Registern und Speicher • ist eine Register Maschine ohne expliziten Stack REIL Register • sind unbegrenzt verfügbar (t0, t1, …, tn). • sind instruktionslokal. • sind beliebig groß. Universität Mannheim 27 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 28. 8.4.3 Sprachdefinition [REIL VM] REIL Speicher • hat ein flaches Speicherlayout. • ist theoretisch „unendlich“ groß. • hat keine Alignement Anforderungen. • hat die Endianess der analysierten Plattform. Universität Mannheim 28 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 29. 8.4.3 Sprachdefinition [Übersetzung] 03F535B4 MOV R2, R1 03F535C4 STR LR, [SP,0x4] 3F535B400: str R1, , R2 3F535C400: add SP, 4, t1 3F535C401: and t1, 4294967295, t0 3F535C402: stm LR, , t0 03F7C394 LDREQH R3, word [R2,0x6] 3F7C39400: bisz Z, , t3 3F7C39401: jcc t3, , 66569108.5 3F7C39402: add R2, 6, t5 3F7C39402: ldm t5, , R3 3F7C39403: and t5, 0xFFFFFFFF, t4 3F7C39405: nop , , Universität Mannheim 29 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 30. 8.4.3 Sprachdefinition [Limitierung] Übersetzung • Nicht alle Instruktionen können übersetzt werden • Floating Point Instruktionen • MMX, SSE, Altivec • Hardwarenahe Instruktionen SETEND, BKPT • System Aufrufe • Interrupts System Charakteristiken • Keine Unterstützung von Ausnahmen (Exceptions) Fehler im Initialen Design • Eine Instruktion hat sich als nicht ausgereift erwiesen Universität Mannheim 30 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 31. 8.4.4 Anwendungen • MonoREIL (Abstrakte Interpretation) 1 • Register Tracking • Deobfuscator 2 • Typereconstruction • Plattform unabhängiges „return-oriented 3 programming“ Universität Mannheim 31 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 32. 8.4.4 MonoREIL Abstrakte Interpretation • Theoretische Grundlage der meisten Code Analyse Methoden • Entwickelt von Patrick und Rhadia Cousot 1975-1977 • Formalisiert „statische abstrakte Schlussfolgerung aus dynamischen Eigenschaften“ • Genauere Betrachtung wird hier nicht vorgenommen Ziel • Aussage über den Zustand eines Programms machen Problem • Viele der gestellten Fragen sind unlösbar („Halte-Problem“) Universität Mannheim 32 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 33. 8.4.4 MonoREIL Wie umgeht man dieses Problem • Wir betrachten eine Menge, über die wir Schlussfolgerungen ziehen können (Bereich vs. Satz von Werten) • Deswegen „abstrakt“ Universität Mannheim 33 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 34. 8.4.4 MonoREIL 1 • Instruktionsgraphen erstellen 2 • Einen Graph-Ablaufalgorithmus bestimmen 3 • Programmstatus-Definitionen bestimmen 4 • Programmtransformationen definieren 5 • Programmflusszusammenführung definieren 6 • Startvektor definieren Universität Mannheim 34 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 35. 8.4.4 MonoREIL Starten mit dem Startvektor und Graph; mit vorgegebenem Algorithmus durchlaufen. Zusätzliche Informationen über den Programablauf durch die Transformatoren und Zustandszusammenführung sammeln. Das Sammeln von Informationen wird beendet, wenn keine weiteren Informationen mehr hinzugefügt werden können. Das Ergebnis wird in einem finalen Ergebnisvektor abgelegt und dann mit den originalen nativen Instruktionen verbunden. Universität Mannheim 35 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 36. 8.4.4 MonoREIL [Register tracking] Ziel • Gegeben ein Register in einer Instruktion: Welchen Effekt hat der Wert dieses Register auf den Programstatus und den Kontrollfluss Herangehensweise • MonoREIL wird auf ein konkretes Problem angewendet Universität Mannheim 36 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 37. 8.4.4 MonoREIL [Register tracking] • Instruktionsgraph wird durch MonoREIL erstellt 1 • Der Graph wird nach unten durchlaufen 2 • Einfacher Registersatz ist ein Programmstatus 3 • Für die 17 Instruktionen Transformationen definieren 4 • Bei Programmflusszusammenführung Registersätze zusammenführen 5 • Startvektoren: Elternknoten mit zu verfolgenden Register initialisieren, Kind 6 Knoten mit leerem Registersatz. Universität Mannheim 37 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 38. 8.4.4 MonoREIL [Register tracking] DEMO Universität Mannheim 38 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 39. 8.4.5 Zusammenfassung 1 • Viele Architekturen erfordern neue Wege 2 • Die Besonderheiten spielen die entscheidende Rolle 3 • Kosten sind der entscheidende Faktor 4 • REIL ist eine mögliche Antwort Universität Mannheim 39 Software Reverse Engineering Lehrstuhl Praktische Informatik 1
  • 40. Referenzen • http://www.zynamics.com/downloads/csw09.pdf • http://de.wikipedia.org/wiki/Abstrakte_Interpretatio n • http://www.di.ens.fr/~cousot/Equipeabsint-eg.shtml • http://bitblaze.cs.berkeley.edu/ • http://www.eresi-project.org/ • http://www.phrack.org/issues.html?issue=64&id=8# article Universität Mannheim 40 Software Reverse Engineering Lehrstuhl Praktische Informatik 1