WhatsABI 簡介
從 EVM 字節碼中猜測出 ABI(和其他元數據),即使沒有源代碼。
特點
WhatsABI 在一些重要方面與其他 EVM 分析工具不同:
使用 TypeScript 構建,依賴最小化,以便在瀏覽器中運行並嵌入錢包中
所使用的算法僅限於具有較小常數因子的算法,以確保復雜的合同不會導致超時或使用無限內存
不依賴於源代碼,因此可以與未經驗證的合約一起使用。
不假設源語言,因此可以適用於除 Solidity(Vyper,甚至手寫匯編)之外的源語言
开放源代碼(MIT 許可證),以便任何人都可以使用它
可以做什么
從字節碼返回選擇器
從選擇器中查找函數籤名
解決代理合同
使用方法
安裝
使用
控制台將打印合約地址、abi 等數據
(完整項目見 whatsabi[2])
其它方法
selectorsFromBytecode
: 從合約字節碼中獲取函數選擇器
whatsabi.selectorsFromBytecode(code)abiFromBytecode
:從合約字節碼中獲取 ABI
whatsabi.abiFromBytecode(code)loadFunctions
:獲取函數選擇器匹配的函數籤名
new whatsabi.loaders.OpenChainSignatureLookup().loadFunctions("0x06fdde03")loadEvents
:獲取函數選擇器匹配的函數籤名
new whatsabi.loaders.OpenChainSignatureLookup().loadEvents("0x721c20121297512b72821b97f5326877ea8ecf4bb9948fea5bfcb6453074d37f")
注意事項
不一定能找到有效的函數選擇器
有一些參數存在的猜測,不夠可靠
事件解析有些不穩定
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。