Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Web Analytics
Cookie Policy Terms and Conditions Reverse Engineering - Wikipedia

Reverse Engineering

aus Wikipedia, der freien Enzyklopädie

Reverse Engineering (engl., bedeutet: umgekehrt entwickeln, rekonstruieren, Kürzel: RE) bezeichnet den Vorgang, aus einem bestehenden, fertigen System oder einem meistens industriell gefertigten Produkt durch Untersuchung der Strukturen, Zustände und Verhaltensweisen, die Konstruktionselemente zu extrahieren. Aus dem fertigen Objekt wird somit wieder ein Plan gemacht. Im Gegensatz zu einer funktionellen Nachempfindung, die ebenso auf Analysen nach dem Black Box-Prinzip aufbauen kann, versucht das Reverse Engineering das vorliegende Objekt weitgehend exakt abzubilden. Häufig wird versucht, zur Verifikation der gewonnenen Einsichten eine 1:1-Kopie des Objekts anzufertigen, auf deren Basis es grundsätzlich möglich ist, Weiterentwicklung zu betreiben.

Inhaltsverzeichnis

Einsatzbereiche

Naturwissenschaften

In den Naturwissenschaften ist Reverse Engineering eine übliche Analysemethode:

  • Ein Genetiker versucht, den genetischen Bauplan der Zelle, die DNA-Sequenz zu entschlüsseln.
  • Ein Biologe versucht, bestimmte Vorgänge in der Natur zu verstehen.
  • Ein Physiker untersucht den Aufbau von Teilchen.

Sie alle betreiben also im weiteren Sinne ebenfalls Reverse Engineering.

EDV

Um Hardware zwecks Nachbau zu untersuchen, wurden z. B. in der DDR Methoden entwickelt, bei denen ein Prozessorchip Lage für Lage abgeschliffen wurde und dann die Ebenen per Mikroskop untersucht wurden um die Funktionalität und ihre Hardwarebasis herauszufinden. Angeblich entstand auf diese Weise ein 8086-Nachbau. Diese Berichte sind glaubhaft, da einige Firmen noch heute solche Dienste anbieten und erfolgreich erbringen.

Speziell bezogen auf Computer-Software wird darunter meistens einer der drei folgenden Vorgänge verstanden:

Im ersten Fall werden oft Decompiler eingesetzt, die den Quellcode eines Programms weitestgehend automatisch aus seinem Binärcode zurückgewinnen. Ist dieses nicht durchgehend möglich, so kann auch der aus dem Binärcode des Programms direkt mit einem Disassembler ermittelbare Maschinencode auch manuell analysiert werden, was allerdings eine merkliche Erschwernis bedeutet. Es kann i. d. R. nicht der komplette Programmquellcode ermittelt werden, da z. B. Kommentare nie, und lokale Objektnamen nur selten im verfügbaren Binärcode enthalten sind. Oft ist das Ergebnis trotz allem für den jeweiligen Zweck ausreichend, z. B. zur Verhaltensanalyse eines Softwaresystems oder als Hilfe beim Beheben eines Fehlers.

Beim dritten Fall spricht man jedoch in Abgrenzung zum Reverse Engineering insbesondere während des Softwareentwicklungsprozesses von Code-Rückführung, wenn aus einer Entwurfsspezifikation gewonnener Quellcode manuell modifiziert und der modifizierte Quellcode wieder in das Modell der Entwurfsspezifikation übernommen wird, um dort weiterverarbeitet werden zu können (vorallem bei Single Source CASE-Werkzeugen). Dies ist auch möglich, wenn bei bereits fortgeschrittenen und umfangreichen Software-Projekten gar keine Entwurfsspezifikation beispielsweise in UML existiert und nachträglich erzeugt werden soll.[1]

Maschinenbau

Im Maschinenbau werden insbesondere Objekte mit Freiformflächen einem Reverse Engineering unterzogen. Freiformflächen kommen im Maschinenbau hauptsächlich in der Kraftfahrzeugtechnik (Automobilkarosserie), Ur- und Umformtechnik und im Energiemaschinenbereich (Turbinen- und Verdichterschaufeln) vor. Es geht hier im engeren Sinne um die Digitalisierung gewachsener, d. h. natürlich entstandener Objekte wie zum Beispiel von Hand bearbeiteter Objekte aus dem Designbereich des Automobilbaus oder händisch erstellter Designstudien, die einer weiteren rechnergestützten Bearbeitung, z. B. Fertigung, Strömungs- oder FEM-Simulation zugänglich gemacht werden sollen. Die Anwendung dieser speziell für den Maschinenbau entwickelten Lösungen auch für andere Bereiche, wie z. B. der Medizin oder Kunst hat schon seit einigen Jahren Einzug gehalten. In der heutigen Zeit werden immer komplexere oder durch Designer verschönerte Objekte entwickelt. Dabei kann das Reverse Engineering in der Entwicklung viel Zeit und Geld sparen. Eine weitere Reverse Anwendung ist der SollIst-Vergleich. Dabei wird z. B. ein Spritzgussteil am CAD modelliert, gefertigt, durch Reverse Engineering wieder digitalisiert und am Computer mit dem Sollteil verglichen. Zur Digitalisierung bieten sich meist optische oder Laser-gestützte 3D-Scanner an. Der eigentliche Reverse Prozess siedelt sich nach dem Scannen an. D. h. er bildet die Schnittstelle zwischen der durch den Scanner erzeugten Punktewolke und einem CAD–Modell mit bestimmten Objekt- und Flächeneigenschaften.

Dabei geht es zunächst nicht darum, bestehende Konstruktionen zu kopieren im Sinne einer Industriespionage. Die Methoden, die beim Reverse Engineering angewendet werden, sind für eine Produktpiraterie prinzipiell geeignet.

Die Erzeugung dieser Geometrieeigenschaften kann in zwei Kategorien unterteilt werden:

  • Parametrisierte Rückführung: Dabei werden einfache Geometrieelemente auf die Punktewolke gelegt und zu einem Ganzen zusammengefügt. Dabei handelt es sich vorwiegend um Kugeln, Kreise, Ebenen zweiten, dritten und vierten Grades, usw.
  • Nicht parametrisierte Rückführung: Dieses Verfahren wird bei Objekten verwendet, die keine expliziten Geometrieeigenschaften aufweisen. Dabei wird über das gesamte Objekt eine Art Netzstrumpf gezogen. Dabei bilden die Maschen des Strumpfes die Flächen des CAD–Modells. Diese Flächen besitzen keine eigentlichen Geometrieelemente mehr und sind durch eine Vielzahl kleinerer Flächen so genannter Grids unterteilt.

Rechtliche Aspekte

Viele Firmen untersagen das Reverse Engineering ihrer Produkte durch entsprechende Lizenzbedingungen. Die Analyse von Protokollen ist davon rechtlich nicht betroffen, weil dabei die Software selbst gar nicht Gegenstand der Untersuchung ist. Zudem sind solche Lizenzklauseln in vielen Ländern generell ungültig, da den Nutzern einer Sache gesetzlich das Recht zusteht, zur Überprüfung der Anwendungssicherheit (siehe auch Trojanisches Pferd) oder zur Fehlerbehebung ein von ihnen erworbenes Softwareprodukt einem Reverse Engineering zu unterziehen. Das reine Untersuchen von Dingen, die einem selbst gehören, darf man gegebenenfalls der Freiheit der Forschung zuordnen, so dass ebenfalls entsprechende Lizenzklauseln nicht greifen. Oftmals dienen solche Lizenzklauseln eher dem Zweck der Abschreckung und sind somit als einseitige Willensäußerung bzw. je nach Form als prophylaktische, einseitig vorgetragene Rechtsauffassung zu verstehen, die bei unabhängiger rechtlicher Prüfung möglicherweise keine Bestätigung und somit keinen weiteren Bestand haben wird. Im Softwarebereich spricht man oft von der im deutschen Raum generell zweifelhaften so genannten "Shrink Wrap License"-Vereinbarung.

Allerdings kann man sich ggf. per Vertragsstrafe zu Zahlungen im Fall der entdeckten Zuwiderhandlung verpflichtet haben. Dieser Form der individuellen Vertragsbindung kann man sich unter Umständen sehr wohl vollkommen legal unterworfen haben, wobei es hier meistens um Prototypen oder Kleinserien geht, die noch erhebliche Mengen an Geschäftsgeheimnissen enthalten. Oftmals werden aus diesem Grund Rabatte zu Gunsten des Käufers eingeräumt (im Gegenzug zur verminderten Nutzungsmöglichkeit) oder es wird versucht, durch die oben angeführte Vertragsstrafe echte Risiken des Verkäufers (z. B. durch Geheimnisverrat) zumindest in gewissem Umfang abzudecken. Weiterhin findet bei sensiblen Objekten auch die Methode der zeitlich begrenzten leihweisen Überlassung statt.

Schon lange wird auch Verschlüsselung und Verschleierung in der Computertechnik eingesetzt, wobei hiermit natürlich primär das Reverse Engineering erschwert werden soll, aber zunehmend auch weil dadurch die novellierten Gesetze zum Urheberrecht in Bezug auf Kopierschutz und den daran geknüpften Strafandrohungen zum Tragen kommen könnten. Beispielhaft sei hier die Anklage des Russen Dmitry Sklyarov in den USA unter den Gesetzeswerk DMCA wegen Dekodierung von geschützten Textdokumenten im Jahr 2003 angeführt.

Benutzt man das Ergebnis des Reverse Engineerings zum gewerblichen Nachbau, so wird man sich mit der großen Menge der gewerblichen Schutzrechte (z. B. Plagiat) in ähnlicher Weise konfrontiert sehen, so wie es auch bei Ergebnissen der ganz normalen eigenständigen Forschung und Entwicklung der Fall sein kann (z. B. Patent).

Literatur

  • Samuelson, Pamela; Scotchmer, Suzanne: The Law and Economics of Reverse Engineering, Yale Law Journal, Vol 111, No. 7, May 2002, pp. 1575-1664. [1].
    • Introduction, p. 1577
    • Reverse Engineering in traditional Manufacturing Industries, p. 1582
    • Reverse Engineering in the Semiconductor Industry, p. 1595
    • Reverse Engineering in the Computer Software Industry, p. 1607
    • Reverse Engineering of Technically Protected Digital Content, p. 1630
    • Reverse Engineering as a Policy Lever, p. 1649
    • Conclusion, p. 1662
  • Eilam, E.: Reversing: Secrets of Reverse Engineering, John Wiley & Sons, 2005, ISBN 0-764-57481-7
  • van Zuylen, H. J.: The REDO Compendium. Reverse Engineering for Software Maintenance, Chichester usw.: John Wiley & Sons, 1993, ISBN 0-471-93607-3.

Quellen

  1. Lempp, P.; Torick R.J.; Software Reverse Engineering: An Approach to Recapturing Reliable Software; 4th Annual Joint Conference on Software Quality and Productivity, Crystal City, VA; 1.-3. März 1988

Siehe auch

Weblinks

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu