Frage

Sie können viel über die Interna einer Anwendung durch Reflexion erfahren, es von .NET BCL (Base Class Library) ausgesetzt ist und es macht es trivial tatsächliche IL für jede .NET-Methode abgerufen werden.

Reverse Engineering auf Wikipedia :

  

Reverse Engineering ist die   Prozess der Entdeckung von   technologische Prinzipien einer Vorrichtung,   Gegenstand oder System durch Analyse   seine Struktur, Funktion und Bedienung.

Reflexion würde sicherlich als Analyse der Struktur erfüllen. Aber wo ziehen Sie die Trennlinie zwischen Innerlichkeit und tatsächlichem Reverse-Engineering? Und aus rechtlicher Sicht, ist die Reflexion Reverse-Engineering?

War es hilfreich?

Lösung

Die Grenze zwischen den beiden scheint verschwommen. Ethisch würde ich die Linie in der Motivation der Programmierer ziehen.

Wenn er Reflexion wird mit einer Bibliothek, Werkzeug oder eine ähnliche Software zu bauen, die angeblich mit jedem 3rd-Party-Code zu interagieren, die bestimmte Kriterien erfüllt, würde ich es nicht als Reverse Engineering sehen.

Zum Beispiel wurde ich vor kurzem eine generische Basisklasse für Linq2SQL Datenschichten zu schreiben. Die Basisklasse verwendet Reflektion Einblick in das Datenbanklayout zu gewinnen und richtig Updates von verschachtelten Geschäftseinheiten zu behandeln. Wenn jemand anderes meine Basen-Klasse für seine Web-Anwendung verwendet, würde ich gewinnen keine Kenntnis über die seine Quellcode. Diese Verwendung der Reflexion ist sicherlich kein Reverse-Engineering.

Wenn auf der anderen Seite der Programmierer versucht, das Innenleben eines Wettbewerbers Software mithilfe von Reflektion zu verstehen, ist er Reverse Engineering es.

Andere Tipps

Man muss die Definition von Reverse Engineering , wenn die Fähigkeit, leicht decompile die Sprache ein Teil der Sprache ist ala Reflexion in Frage stellen.

Mit einem Tool wie .NET Reflector ich wie die Linien fühlen wirklich anfangen zu verschwimmen!

Anhand eines Beispiels aus SO selbst, sie vor kurzem den Quellcode de-verschleierten für ihren WMD-Editor. Ich würde argumentieren, dass diese Reverse Engineering mehr definiert so als Reflexion der Fall ist.

Die Reflexion ist nur ein Werkzeug, um Informationen aus einer Baugruppe zu lesen, so dass von selbst Technik nicht umgekehrt.

Wenn Sie dann diese Informationen benutzen, um herauszufinden, wie die Baugruppe erstellt wurde, zum Beispiel unter Verwendung von .NET-Reflektor lesbare Quellcode zu erzeugen, die den gleichen IL-Code erzeugen könnten, das ist Reverse Engineering.

Ich würde sagen, Reflexion ist nur ein Werkzeug. Die Verwendung der Reflexion bedeutet nicht unbedingt, Reverse Engineering.

Zum Beispiel, wenn Sie Reflektion verwenden, um die Unterschriften aller öffentlichen und geschützten Methoden in einer Baugruppe zu entdecken, die nicht Reverse Engineering bedeuten würden.

Wie bei rechtlicher Sicht, empfehle ich Ihnen auf das Gesetz suchen haben Sie sich Sorgen um die Definition des Reverse Engineering zu finden.

Die Reflexion ist ein Werkzeug, das für viele Dinge verwendet werden kann, einschließlich dem Reverse Engineering von Code. Reflexion kann auch für viele andere Zwecke verwendet werden, die Umsetzung dynamischer Sprachen ist viel einfacher, dank Reflexion zum Beispiel.

Reflexion allein ist auch nicht genug für das Reverse Engineering. Sie können auf diese Weise Informationen über die Programmstruktur finden, aber Sie müssen noch um den Code zu dekompilieren. Tools wie Reflektor tun, um diese Funktionalität hinzuzufügen.

Eigentlich ist es das genaue Gegenteil von Reverse-Engineering.

Nun, „Reverse Engineering“ ist auf die Ergebnisse eines Prozesses zu sehen, und die Arbeit nach hinten, um zu bestimmen, wie sie dorthin gelangt. Im Allgemeinen ist es ohne Kenntnis des ursprünglichen Codes durchgeführt und in der Regel ergibt sich ein ganz anderes Verfahren.

Trotz beängstigende Bedrohungen durch Copyright-Inhaber, es ist vollkommen legal.

„Demontage“ (auch bekannt als „Reflection“) ist nur die Wirkung von Bytes auf der Festplatte zu lesen, und Zuweisen von Bedeutung, die sie. Dies ist genau das, was die CPU tut, wenn er den Code ausgeführt wird. Hier werden wir nur machen es Menschen lesbar. Auch hier trotz beängstigend Bedrohungen durch Copyright-Inhaber, ist es vollkommen legal.

jemand anderem Code zu verkaufen (oder selbst verwenden) in einer Weise, die von profitiert von seiner Arbeit der Urheberrechtsinhaber vermeidet, ist illegal, aber wir reden hier nicht über das.

Ich glaube, Sie reden über zwei verschiedene Dinge hier:

  • Reflexion ist eine Technik, die (unter anderem) für das Reverse Engineering eingesetzt werden kann.
  • Reverse Engineering ist eine Aktion, die können, aber nicht unbedingt muss, verwenden Reflexion für seine Ziele zu erreichen.

Aus rechtlicher Sicht auf Ihrem Ziel abhängt, wenn Sie Reflexion zum Zweck des Reverse-Engineering verwenden.

Natürlich IANAL, aber ich glaube, dass das Reverse Engineering von selbst nicht illegal ist. Es kann auf eine rechtswidrige Tätigkeit werden durch Proxy , das heißt durch Verletzung der Urheberrechte etc.

Nein. Mit Reflexion, reden Sie in der Regel nur über eine andere Art und Weise Methoden zum Aufruf oder möglicherweise bei Methode Attributen suchen.

Im Gegensatz dazu erwarte ich, dass das Produkt von Reverse-Engineering-Quellcode zu erzeugen, die ich mir anschaue, kann der Autor die Algorithmen und Ideen zu verstehen, die in der Regel ist das, was sie versuchen, zu schützen.

Rechtsfragen müssen von Anwälten gefragt. Rechtsanwälte berechnen Geld. Nicht die Einstellung Anwälte können noch mehr Geld kosten, wenn Sie verklagt werden für keinen Anwalt zu fragen.

Am besten: Sie brauchen nicht zu fragen. Microsoft hat bereits Quelle für eine Vielzahl von .NET freigegeben. Siehe http://www.microsoft.com/resources/sharedsource/default.mspx.

Es hängt alles davon ab, inwieweit Sie Reflexion nehmen. Wenn Sie ein Tool wie Reflector oder Code oben wie etwas, das Sie sich, dann das wäre das Reverse Engineering, wie Sie tatsächlich auf den Quellcode zu bekommen.

Reflexion kann verwendet werden, Methoden aufzurufen oder auf Attribute aussehen, als Don sagte, es kann aber auch die Struktur einer Baugruppe und sogar Blick ins Innere der zugrunde liegenden MSIL-Code zu analysieren. So ein Einsatz von Reflexion könnte unschuldig sein, und man würde Reverse Engineering sein.

Reflection ist eine allgemeine Informatik Begriff, der in Gebrauch Jahrzehnten vor die Einführung von Microsoft .NET Framework (als SUN JVM). Die Idee war, nicht Ziel Engineering-Anwendung rückgängig zu machen. Dass in bestimmten Kontexten kann es für diesen Zweck verwendet wird, nur zufällig. Wie andere geschrieben haben, Reflexion ist ein „Werkzeug“.

Reflection in vielen Sprachen wie .NET und Java sind Patches für schlechte Syntaxen, die Ihnen nicht erlauben, sich frei mit Objekten zu interagieren.

In wirklich Oriented Sprachen wie Smalltak oder Selbst Objekt, Sie kaum jemals brauchen Reflexion und, wenn nötig, es ist mit Abstand mächtiger als die Anbieter .NET und Java.

Having said that, ich glaube Reflexion Reverse Engineering, RE Berücksichtigung mehr ist wie Code zu verstehen, etwas damit zu tun, anstatt anderen Schutz zu brechen.

Ich bin derzeit viel mit Drupal (PHP-basiert) arbeiten, die hässlichen Dinge verwendet wie Modulnamen zu vordefinierten Haken Namen verketten zu finden, wenn diese Funktion vorhanden ist, so kann er später genannt werden (zB module_hook_name).

Es ist sehr praktisch, aber ich glaube, in Echt OO-Sprachen, die von Sub-Klassierung eine abstrakte Klasse vermieden werden können, dass jede Nachricht beantworten kann und Subklassen konnte, dass außer Kraft setzen.

Reflektionen sollte nicht außer für extreme Bedingungen verwendet werden, das ist, wo Sie Fehler von Programmiersprachen sehen können.

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