手动逆向工程以太坊合约教程
在以太坊开发中,逆向工程合约是一项重要的技能,它可以帮助开发者深入理解合约的工作原理,发现潜在的安全问题,同时也有助于提升开发者的编程能力。本文将详细介绍如何对一个去中心化自治组织(DAO)合约进行逆向工程。
准备工作
首先,我们需要获取合约的字节码。可以前往 Etherscan,加载地址为 0x8C3b8f0A17DB8dA0a57071Ee813be23e314DBA80 的 DAO 合约,并切换到 “Contract” 选项卡。由于该合约的源代码未发布和验证,所以只会显示字节码。点击 “Switch to Opcodes View” 按钮,将字节码转换为操作码表示。
在查看操作码时,会发现很多 JUMPI 和 JUMPDEST 操作码,这些跳转操作使得跟踪合约的控制流变得困难。为了提高可读性,我们可以使用一个电子表格。你可以从 这里 获取该电子表格。
如果电子表格不可用,也可以自己创建。具体步骤如下:
1. 在 A 列输入十六进制表示的位置。在 A1 单元格中输入位置 0,在 A2 单元格中插入公式 =dec2hex(hex2dec(A1)+B1) ,然后将此公式复制到 A 列的所有后续单元格。
2. 在 B1 单元格中复制并粘贴
超级会员免费看
订阅专栏 解锁全文
665

被折叠的 条评论
为什么被折叠?



