時(shí)間:2023-11-09|瀏覽:260
之前寫(xiě)過(guò)一個(gè)關(guān)于“未開(kāi)源智能合約的調(diào)用”的方法,主要是在網(wǎng)站前端扒拉JS代碼,定位到ABI代碼,然后實(shí)現(xiàn)調(diào)用。這個(gè)方法當(dāng)然可以用來(lái)實(shí)現(xiàn)“半開(kāi)源”合約調(diào)用,但這個(gè)方法實(shí)在有些反人類(lèi),瘋狂扒拉JS代碼也很費(fèi)眼神,我們暫時(shí)先跳過(guò)。
沒(méi)有開(kāi)源的合約,為何可以在etherscan顯示詳細(xì)的調(diào)用參數(shù)信息(小狐貍錢(qián)包也能顯示)?其實(shí)秘密都在這個(gè)4 bytes signature上。如果其他已開(kāi)源合約有相同的“簽名”,那么面對(duì)一個(gè)未開(kāi)源合約,但簽名相同的函數(shù),etherscan和小狐貍會(huì)直接判定為同一函數(shù)并嘗試解析。
解決方案:針對(duì)這類(lèi)能被正常顯示的函數(shù),其實(shí)有一個(gè)相對(duì)簡(jiǎn)單的方法:通過(guò)函數(shù)信息反向生成ABI代碼。15行代碼,代碼出自人類(lèi)好幫手:chatGPT 4。經(jīng)過(guò)測(cè)試與對(duì)照,和原始ABI一字不差(當(dāng)然,output可能有區(qū)別,但不影響使用)。
簽名庫(kù):如果etherscan上未顯示,還可以先去這個(gè)簽名庫(kù)碰碰運(yùn)氣:https://4byte.directory/signatures/。注意,這個(gè)4四節(jié)簽名是有可能重名的!某些小狐貍釣魚(yú)合約,使用的就是這個(gè)“漏洞”。同一個(gè)簽名,可能對(duì)應(yīng)多個(gè)函數(shù),正常使用還得自行判斷。
熱點(diǎn):web開(kāi)發(fā) web前端 比特幣開(kāi)源 開(kāi)源比特幣 NFT開(kāi)源