Evm

如何反編譯智能合約?

  • February 19, 2022

在區塊鏈上,我可以檢查合約程式碼,並查看 EVM 操作碼。有沒有辦法反編譯並將其轉換回(Solidity)原始碼?

編譯回原始原始碼是不可能的,因為所有變數名、類型名甚至函式名都被刪除了。在技​​術上可能會得到一些與原始原始碼相似但非常複雜的原始碼,尤其是在編譯期間使用優化器時。我不知道有什麼工具可以比將字節碼轉換為操作碼更多。

由於合約可以訪問自己的程式碼並因此(ab)使用程式碼來儲存數據,因此並不總是清楚程式碼的某些部分實際上是用作程式碼還是僅用作數據,以及嘗試反編譯它是否有意義. 某段程式碼是否可達,在計算上是無法確定的。

請注意,沒有專門的區域來儲存創建時間的固定數據(如查找表等)。除了合約的程式碼之外,也可以將數據儲存在儲存中,但這會更昂貴,因此將這些數據放入程式碼中實際上是很常見的事情。

引用自:https://ethereum.stackexchange.com/questions/188