Einführung
Diese Veröffentlichung zielt darauf ab, einige Reverse Engineering-Techniken zu untersuchen. Alle Materialien werden nur zu Informationszwecken präsentiert und sind nicht für persönliche Zwecke bestimmt.
Forschungsgegenstand
Als Beispiel werden wir den Atomineer Pro-Dokumentationscode (im Folgenden: APD) untersuchen. Dies ist ein Plug-In für Visual Studio, mit dem automatisch Kommentare in Quellcodes generiert werden. Installieren Sie zuerst dieses Plugin und überprüfen Sie seine Funktion. Die kostenlose Version hat während dieser Zeit eine Testphase und eine Reihe von Nutzungsbeschränkungen. Wenn Sie der Datei Kommentare hinzufügen, erhält der Benutzer eine Meldung, dass Sie tagsüber nur 10 Dateien verarbeiten können
Wenn Sie versuchen, das gesamte Projekt zu verarbeiten, zeigt das Dienstprogramm eine Dialogwarnung an, dass dieser Befehl nicht verfügbar ist.
Fangen wir an
Suchen Sie zunächst im Verzeichnis der installierten Erweiterung nach nur einer dynamischen Bibliothek. Wir brauchen es. Als erstes laden wir es von JetBrains auf den dotPeek-Dekompiler hoch.
Wie Sie auf dem Screenshot sehen können, hat die Bibliothek einen Verschleierer durchlaufen, die Variablen und Methoden wurden umbenannt und haben Namen der Form a, b, c, d ... das ist, was wir brauchen. Wir haben genau das gesucht. Mal sehen, was getan werden kann.
Teil 1
Das erste, was mir in den Sinn kommt, ist, die Zeile zu finden. Da die Suchfunktion jedoch nicht in dotPeek enthalten ist, gehen wir einen anderen Weg. Wir dekompilieren die Bibliothek mit der Standarddatei
ildasm.exe aus den Microsoft SDKs. Die Ausgabe erhält nur eine Textdatei. Darin suchen wir nach dem Text der Meldung „
Testmodus. Bitte beachten Sie, dass Ihre ... "
Eine Methode gefunden
.method family hidebysig static bool e () cil verwaltet
Welches zur Klasse CmdDocThisScope gehört. Nun zurück zu dotPeek.
Also was wir haben. Wir haben eine Methode gefunden, die eine APD-Testnachricht anzeigt und je nach Bedingung true oder false zurückgibt. Wir finden alle Orte, von denen diese Methode aufgerufen wird
Es wurden nur 2 Aufrufpunkte gefunden. Dies sind die Methoden CmdDocThisFile :: c und CmdDocThisScope :: c.
Anhand des Namens der Klassen und des Konstruktorcodes ist ersichtlich, dass die Klassen für die Menüelemente verantwortlich sind, und die Virtualität der Methode „c“ zeigt an, dass dies der Ereignishandler für die Auswahl des entsprechenden Menüelements durch den Benutzer ist (diese Informationen sind für uns weiter nützlich). Es ist leicht zu erraten, dass der Befehl ausgeführt wird, wenn die Methode true zurückgibt, obwohl ein Dialogfeld mit einer Warnung angezeigt wird.
Zu Beginn der CmdDocThisScope :: e-Methode wird die Variable f inkrementiert. Öffnen Sie das Fenster „IL View“ und suchen Sie den Befehlscode:
Wikipedia hat einen Artikel
, der diese Anweisungen beschreibt .
Als nächstes finden Sie diese Methode in der APD-Bibliotheksdatei. Wir werden dies mit dem IDA-Tool tun. Im Fenster mit den Funktionen finden wir unsere Methode und sehen den bereits bekannten Code.
Nachdem wir den Befehl ldsfld ausgewählt haben, finden wir seine binäre Darstellung im Hex-Ansichtsfenster
Die Beschreibung des Teams bestätigt, dass wir den richtigen Ort gefunden haben.
Eine weitere Analyse des Codes für diese Methode und nachfolgende Schritte würde den Rahmen dieses Artikels sprengen.
Teil 2
Wie bereits erfahrene Forscher finden wir jetzt einen Aufruf zum Dialog mit der Meldung "
Der Befehl 'Alle in Projekt dokumentieren' ist nur in der Vollversion verfügbar ... ". Diese Methode ist CmdDocThisProject :: c
Die CmdDocThisProject-Klasse ist für den Befehl "Process Project" verantwortlich, die "c" -Methode ist virtuell. Und es enthält nur eines - es ist ein Aufruf zum Dialog mit einer Nachricht. Keine Bedingungen, keine Schecks. Eine Suche im Quellcode führt uns zur CmdDocThisProject :: i-Methode, die das hat, was wir in CmdDocThisProject :: c erwarten. Jetzt können wir in IDA leicht die notwendigen Methoden finden und CIL-Anweisungen lernen
Fazit
Es bleibt zu sagen, dass der Artikel absichtlich weiße Flecken für ihre unabhängige Studie hinterlassen hat.