Phalcon Debug erleichtert die Transaktionsanalyse erheblich, wenn eine Transaktion zu komplex ist, um sie allein aus der Oberflächenansicht zu verstehen. Anstatt bei einer Transaktionsübersicht auf hoher Ebene stehen zu bleiben, ermöglicht es Benutzern, in den Ausführungsfluss einzutauchen, verifizierten Code zu inspizieren und die interne Logik detailliert zu verfolgen. Das macht es besonders nützlich für die Exploit-Analyse, die Ursachenforschung und die Teamkollaboration.
In dieser Anleitung verwenden wir die Exploit-Transaktion des Euler-Protokolls als Beispiel. Ziel ist es zu zeigen, wie Phalcon Debug Benutzern hilft, von einem verdächtigen Transaktionsschritt zu einer klaren Erklärung dessen zu gelangen, was passiert ist und warum es wichtig war.
Sie können die Transaktion hier direkt öffnen: Phalcon Transaktionsseite
So gelangen Sie in den Debug-Modus
Es gibt zwei Hauptwege, um in Phalcon in den Debug-Modus zu gelangen.
Der erste Weg ist von einer bestimmten Zeile in der Ansicht des Aufrufablaufs (Invocation Flow). Der zweite Weg ist über die Schaltfläche Debug in der oberen rechten Ecke der Transaktionsseite. Beide führen zur gleichen Debugging-Umgebung, aber der Start vom Aufrufablauf ist oft nützlicher, wenn Sie bereits einen verdächtigen Schritt sehen und genau an diesem Punkt einsteigen möchten.
Im Euler-Exploit-Beispiel enthält die Transaktion viele Schritte, einschließlich der Entnahme eines Flash-Loans von Aave und der Einzahlung von DAI in Euler. Ein besonders verdächtiger Schritt ist der Aufruf von donateToReserves(), bei dem der Angreifer einen sehr großen Betrag an das Protokoll spendet. Das ist eine Aktion, die oft eine tiefere Überprüfung verdient, und Phalcon Debug ermöglicht es Benutzern, die Analyse genau dort zu beginnen.

Layout der Debug-Ansicht
Nach dem Eintritt in den Debug-Modus zeigt Phalcon einen Arbeitsbereich, der für die schrittweise Transaktionsanalyse konzipiert ist. Das Layout umfasst fünf Kernbereiche.
Der Call Trace Panel (Aufrufverfolgungsbereich) zeigt die Verfolgung externer Aufrufe und Ereignisse. Der Source Code Panel (Quellcodebereich) zeigt den Quellcode des aktuellen Vertrags und hebt die relevante Zeile hervor. Die Debug Console (Debug-Konsole) bietet Steuerelemente für den schrittweisen Aufruf. Der Debug Trace Panel (Debug-Verfolgungsbereich) zeigt den aktuellen Aufrufstapel des Vertrags mit internen und externen Aufrufen. Der Parameters & Return Values Panel (Parameter & Rückgabewerte Bereich) zeigt Eingaben und Ausgaben für den aktuellen Aufruf.
Dieses Layout ist nützlich, da Benutzer nicht zwischen mehreren Tools wechseln müssen, nur um einen Teil der Transaktion zu verstehen. Sie können die Verfolgung lesen, den Code inspizieren und die Ausführungslogik an einem Ort verfolgen.
Manchmal wird im Quellcodebereich kein Code angezeigt. Das passiert normalerweise, wenn der aktuelle Aufruf auf einen nicht verifizierten Vertrag verweist. In diesem Euler-Fall ist der Angreifervertrag nicht verifiziert, daher ist der Quellcode dort nicht verfügbar. Der eDai-Vertrag ist jedoch verifiziert, was bedeutet, dass Benutzer Step In (Schritt hinein) ausführen und die Analyse innerhalb verifizierter Logik fortsetzen können.

Nachdem Sie in den verifizierten eDai-Vertrag eingestiegen sind, können Benutzer tiefer in die Implementierung von donateToReserves() eintauchen und den genauen Code-Pfad hinter dem verdächtigen Transaktionsschritt inspizieren.

Verwendung der Debug-Konsole
Die Debug-Konsole wurde entwickelt, um Benutzern zu helfen, die Transaktionsausführung detailliert zu durchlaufen. Dies ist wichtig, da das Call Trace Panel nur externe Aufrufe und Ereignisse anzeigt. Es zeigt keine internen Funktionsaufrufe. Die Debug-Konsole füllt diese Lücke.
Phalcon bietet in diesem Bereich mehrere Navigationssteuerelemente. Next (Weiter) und Previous (Zurück) haben jeweils zwei Versionen. Die roten Schaltflächen bewegen sich durch die vollständige Aufrufverfolgung, während die blauen Schaltflächen sich innerhalb der aktuellen Funktion bewegen. Step In (Schritt hinein) springt in die aufgerufene Funktion. Step Out (Schritt heraus) kehrt zur Aufrufstelle der aktuellen Funktion zurück.
Mit diesen Steuerelementen können Benutzer zeilenweise durch die Vertragslogik navigieren und verstehen, wie Zustandsänderungen stattgefunden haben. Im Euler-Fall hilft dies, das tiefere Problem hinter donateToReserves() aufzudecken. Die Analyse zeigt, dass der Angreifer 100 Millionen eDAI gespendet hat, was die Beziehung zwischen eDAI und dDAI veränderte und die Position für die Liquidation qualifizierte. Die Ursache lag darin, dass donateToReserves() eine Liquiditätsprüfung für die zulässige Liquidation fehlte, wodurch der Angreifer liquidieren und Werte entziehen konnte.
Hier wird Phalcon Debug mehr als nur ein Viewer. Es wird zu einem praktischen Transaktionsanalysewerkzeug, um Ursachen innerhalb der Vertragsausführung zu finden.


Teilen der Debug-Ansicht
Ein weiteres nützliches Feature ist, dass eine Debug-Ansicht direkt per URL geteilt werden kann. Der geteilte Link enthält die ausgewählte Verfolgungszeile, sodass, wenn ein anderer Benutzer ihn öffnet, er sofort dieselbe Debug-Ansicht sieht.
Das ist besonders nützlich für Sicherheitsteams. Anstatt eine lange Erklärung zu schreiben oder einen Teamkollegen zu bitten, die gleiche Ansicht manuell zu reproduzieren, kann ein Analyst den genauen Kontext teilen. Das beschleunigt die Zusammenarbeit während der Incident-Analyse oder interner Überprüfungen erheblich.
Ein typischer Arbeitsablauf sieht so aus. Erstens, einen verdächtigen Schritt im Aufrufablauf finden. Zweitens, den Debug-Modus verwenden, um Code, interne Aufrufe und Parameter zu inspizieren. Drittens, die exakte Debug-Ansicht mit Teamkollegen teilen, damit sie denselben Kontext überprüfen und die Diskussion fortsetzen können.
Weitere nützliche Funktionen
Phalcon Debug enthält einige zusätzliche Funktionen, die die Effizienz der Analyse verbessern.
Die Call Trace View (Aufrufverfolgungsansicht) kann vollständige Parameter anzeigen, wenn der Parameter-Schalter aktiviert ist. Dies hilft Benutzern, reichhaltigere Kontexte zu inspizieren, ohne jeden Schritt einzeln öffnen zu müssen.
Bei externen Aufrufen können Benutzer auch auf Rawdata (Rohdaten) klicken, um die rohen Aufrufparameter zu inspizieren. Dies ist nützlich, wenn dekodierte Daten nicht ausreichen oder wenn Benutzer überprüfen möchten, wie die Aufrufdaten tatsächlich strukturiert waren.
Diese Details mögen klein erscheinen, aber sie sparen viel Zeit bei der tatsächlichen Analyse. Bei der Exploit-Untersuchung, Audit-Arbeiten oder Vertragsprüfungen machen kleine Workflow-Verbesserungen oft einen großen Unterschied.


Für Teams, die über eine einzelne Transaktion hinausgehen und nachverfolgen möchten, wie Vermögenswerte über einen breiteren Angriffsvektor verschoben wurden, ist MetaSleuth der natürliche nächste Schritt. Es hilft Ermittlern, Gelder über Adressen und Entitäten zu verfolgen, nachdem die Transaktions-Ebene Ursachenforschung klar geworden ist.
Phalcon Debug ist am nützlichsten, wenn eine Transaktion für eine oberflächliche Lesung zu komplex ist, aber dennoch eine klare Erklärung benötigt. Es hilft Benutzern, von einem verdächtigen Verfolgungseintrag zum tatsächlichen Code-Pfad, zur internen Logik und zur Ursache zu gelangen. Das macht es nicht nur für die Sicherheitsforschung wertvoll, sondern auch für die Incident-Überprüfung, die Exploit-Analyse und die Bewertung von Smart Contracts. Für Teams, die Code vor der Bereitstellung stärken möchten, verbindet sich dieser gleiche Denkansatz natürlich mit Smart Contract Audits und Infrastruktur-Audits, bei denen komplexes Verhalten überprüft wird, bevor es zu einem Live-Risiko wird.



