区块链-ByteCode逆向分析

以太坊上的智能合约几乎都是开源的,没有开源的智能合约就无从信任。但有些智能合约没有开源,那怎么办呢?反编译。直接研究EVM的ByteCode。

比如说Theta代币的智能合约就没有开源:

1)逆向工具Ethersplay和Porosity

这篇博客很详细的介绍Ethersplay的使用以及EVM智能合约的结构:https://arvanaghi.com/blog/reversing-ethereum-smart-contracts/。Etherplay是Binary Ninja的插件。Binary Ninja是收费软件,暂时没有尝试。

Porosity是开源的反编译工具:https://github.com/comaeio/porosity。我在Mac上尝试反编译Theta的智能合约,发现解析的有问题。

2)手动分析

从上图,我们可以发现transferFrom的跳转偏移地址(一般的智能合约是有初始程序的,Theta没有。如果有初始程序的话,需要加上初始程序的大小)。

用编辑工具获取从编译地址后的ByteCode,并使用EtherScan提供的翻译工具查看操作字:https://etherscan.io/opcode-tool。

下图是从0x212开始的代码信息:

总结:EVM的ByteCode反编译最好用反编译工具(推荐收费软件Binary Ninja + Ethersplay插件)。在没有好用的工具的情况下,可以考虑手动分析,虽然慢,但是完全可行。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180529G1BH1900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券