Back to Blog

Wie man Phalcon Debug verwendet, um in eine Transaktion einzutauchen

March 29, 2023

Phalcon unterstützt das Debugging einer Transaktion, ein leistungsstarkes Feature, das die Effizienz der Analyse komplexer Transaktionen erheblich verbessern kann. Im Folgenden werden wir die Transaktion zur Ausnutzung des Euler-Protokolls verwenden, um dieses Feature zu veranschaulichen.

Klicken Sie auf den Link für diese Transaktion: https://phalcon.blocksec.com/explorer/tx/eth/0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d

So rufen Sie den Debug-Modus auf

Es gibt zwei verschiedene Möglichkeiten, den Debug-Modus aufzurufen. Die erste besteht darin, den Debug-Modus von einer bestimmten Zeile in der Aufruflaufzeitansicht aufzurufen, und die zweite besteht darin, auf die Schaltfläche Debug zu klicken.

Methode I: Über die Ausführungsspur

Der Aufruflaufzeit in Phalcon bietet eine Ansicht, die es Benutzern ermöglicht, ein vollständiges Bild der gehackten Transaktion zu erhalten und mögliche Ausbeutungsstellen zu identifizieren. Dies ist nützlich, wenn Hunderte von externen Aufrufen und Ereignissen in der Transaktion enthalten sind.

Zeile im Aufruflaufzeit auswählen, um den Debug-Modus zu öffnen
Zeile im Aufruflaufzeit auswählen, um den Debug-Modus zu öffnen

Im Falle der Ausnutzung des Euler-Protokolls besteht die gehackte Transaktion aus vielen Schritten, einschließlich Borrowing Flashloan from Aave, Depositing Dai into the Euler protocol usw. Aber in einem der Schritte rief der Ausnutzer donateToReserves() auf, um einen massiven Geldbetrag an das Euler-Protokoll zu "spenden", was unsere Wachsamkeit erfordert. In diesem Fall können wir die Transaktion direkt ab diesem Schritt debuggen, indem wir auf das Debug-Symbol klicken.

Methode II: Über die Debug-Schaltfläche

Eine weitere Möglichkeit, den Debug-Modus aufzurufen, besteht darin, auf die Schaltfläche Debug in der oberen rechten Ecke zu klicken.

Layout der Debug-Ansicht

Nach dem Aufruf des Debug-Modus sehen wir den folgenden Bildschirm.

Layout der Debug-Ansicht
Layout der Debug-Ansicht

Dieser Bildschirm hat fünf Bereiche, die wie folgt lauten.

  • Aufrufspur-Bereich: Zeigt die Spur von externen Aufrufen und Ereignissen.
  • Quellcode-Bereich: Stellt den Quellcode des Vertrags und die aktuelle Zeile (hervorgehoben) bereit, die sich auf die Aufrufstelle einer Funktion bezieht.
  • Debug-Konsole: Eine aufrufebenen-einzelne Schritt-Debug-Konsole.
  • Debug-Spur-Bereich: Zeigt den Aufrufstapel des aktuellen Vertrags mit einer Kombination aus internen und externen Aufrufen.
  • Parameter & Rückgabewerte-Bereich: Zeigt Aufrufparameter und Rückgabewerte an.

Manchmal wird im Quellcode-Bereich kein Code angezeigt. Dies liegt daran, dass der Bereich standardmäßig die Aufrufstelle der Funktion anzeigt. Da der Hacking-Vertrag nicht verifiziert ist (nicht Open Source), kann der Quellcode nicht angezeigt werden.

Der eDai-Vertrag ist verifiziert, daher können wir Step In verwenden, um die spezifische Implementierung von donateToReserves() anzuzeigen. Nach dem Klicken auf Step In wird die aktuelle Zeile zur Aufrufstelle innerhalb des eDai-Vertrags. Dies ist ein Proxy-Vertrag, und der Code wird wie folgt angezeigt.

Debug-Modus, wenn der Vertrag verifiziert ist
Debug-Modus, wenn der Vertrag verifiziert ist

Nachdem wir erneut Step In geklickt haben, können wir endlich die konkrete Implementierung von donateToReserves() sehen.

Debuggen von donateToReserves()
Debuggen von donateToReserves()

Verwendung der Debug-Konsole

Die Debug-Konsole dient dazu, die detaillierte Aufrufspur zu verstehen, einschließlich des internen Funktionsaufrufs (Das Jump am Anfang einer Zeile bedeutet, dass dies ein interner Aufruf ist). Beachten Sie, dass der Aufrufspur-Bereich keine interne Aufrufspur hat.

Layout der Debug-Ansicht
Layout der Debug-Ansicht

Um zwischen den detaillierten Ausführungen zu navigieren, bietet Phalcon vier Schaltflächen auf der Debug-Konsole, und Next und Previous haben unter den beiden Farben leicht unterschiedliche Logiken.

  • Next (Rote Schaltfläche): Geht zur nächsten Aufrufstelle in der gesamten Aufrufspur.
  • Next (Blaue Schaltfläche): Geht zur nächsten Aufrufstelle der aktuellen Funktion.
  • Previous (Rote Schaltfläche): Geht zur vorherigen Aufrufstelle in der gesamten Aufrufspur.
  • Previous (Blaue Schaltfläche): Geht zur vorherigen Aufrufstelle der aktuellen Funktion.
  • Step In: Geht zur aufgerufenen Funktion.
  • Step Out: Kehrt zur Aufrufstelle der aktuellen Funktion zurück.

Zum Beispiel können wir auf die Schaltfläche Next klicken, um die Implementierung von donateToReserves() zu analysieren. Wir können feststellen, dass der Hacker 100 Millionen eDAI gespendet hat, wodurch der eDAI weniger als der dDAI war und für die Liquidation in Frage kam. Daher ist die Grundursache, dass donateToReserves() eine fehlende Liquiditätsprüfung für die berechtigte Liquidation aufweist und der Ausnutzer sich selbst liquidiert und 38 Millionen eDAI entnommen hat.

Grundursachen der Euler-Ausnutzung
Grundursachen der Euler-Ausnutzung

Teilen der Debug-Ansicht

Das Debugging einer Transaktion kann direkt über eine URL geteilt werden, die die Zeilennummer der Spur enthält. Wenn andere den Link öffnen, wird dieselbe Debug-Ansicht angezeigt. Dies ist nützlich, wenn Sie Analyseergebnisse mit anderen teilen möchten. Teammitglieder können dies für die Zusammenarbeit, Analyse und gemeinsame Diskussion nutzen!

Zusammenfassend lässt sich sagen, dass der typische Workflow für die Verwendung von Phalcon Debug zur Analyse einer gehackten Transaktion wie folgt aussieht.

  • Finden Sie das mögliche Problem im Aufruflaufzeit und starten Sie dort das Debugging.
  • Debuggen Sie den Quellcode und überprüfen Sie die Parameter und Rückgabewerte von internen Aufrufen.
  • Teilen Sie die Ansicht Ihrer Analyse mit Teammitgliedern (oder öffentlichen Lesern) zur Zusammenarbeit.

Weitere Features

Phalcon Debug bietet viele Funktionen, um Ihre Effizienz zu verbessern.

  • Die Aufrufspur-Ansicht kann die vollständigen Parameter anzeigen, indem der folgende Schalter aktiviert wird.
Parameter-Schalter
Parameter-Schalter
  • Bei externen Aufrufen können Sie durch Klicken auf "Rawdata" die rohen Aufrufparameter anzeigen.

Erfahren Sie mehr über BlockSec: Website | Dokumentation | Twitter | Medium | TG-Gruppe

Sign up for the latest updates
Tether Freezes $6.76M USDT Linked to Iran's IRGC & Houthi Forces: Why On-Chain Compliance is Now a Geopolitical Battlefield
Security Insights

Tether Freezes $6.76M USDT Linked to Iran's IRGC & Houthi Forces: Why On-Chain Compliance is Now a Geopolitical Battlefield

Looking ahead, targeted freezing events like this $6.76M USDT action will only become more common. On-chain data analysis is improving. Stablecoin issuers are also working closely with regulators. As a result, hidden illicit financial networks will be exposed.

Weekly Web3 Security Incident Roundup | Mar 2 – Mar 8, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Mar 2 – Mar 8, 2026

During the week of March 2 to March 8, 2026, seven blockchain security incidents were reported with total losses of ~$3.25M. The incidents occurred across Base, BNB Chain, and Ethereum, exposing critical vulnerabilities in smart contract business logic, token deflationary mechanics, and asset price manipulation. The primary causes included a double-minting logic flaw during full token deposits that allowed an attacker to exponentially inflate their balances through repeated burn-and-mint cycles, a price manipulation vulnerability in an AMM-based lending market where artificially inflated vault shares created divergent price anchors to incorrectly force healthy positions into liquidation, and a flawed access control implementation relying on trivially spoofed contract interfaces that enabled attackers to bypass authorization to batch-mint and dump arbitrary tokens.

Weekly Web3 Security Incident Roundup | Feb 23 – Mar 1, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Feb 23 – Mar 1, 2026

During the week of February 23 to March 1, 2026, seven blockchain security incidents were reported with total losses of ~$13M. The incidents affected multiple protocols, exposing critical weaknesses in oracle design/configuration, cryptographic verification, and core business logic. The primary drivers included oracle manipulation/misconfiguration that led to the largest loss at YieldBloxDAO (~$10M), a crypto-proof verification flaw that enabled the FOOMCASH (~$2.26M) exploit, and additional token design and logic errors impacting Ploutos, LAXO, STO, HedgePay, and an unknown contract, underscoring the need for rigorous audits and continuous monitoring across all protocol layers.