在区块链上,我可以检查合同的代码,并查看EVM操作码。 有没有办法可以反编译并将其转换回(Solidity)源代码?

原文地址

3 人回答 0

3 个回答
投票数
最旧发布
最近发布

回答发布于 2018-09-05 16:21:16

编译回源代码是不可能的,因为所有变量名、类型名甚至函数名都被删除了。在技术上可能会得到一些类似于源代码的代码,但这非常复杂,尤其是在编译期间使用优化器(optimizer)时。我不知道任何能够仅仅将字节码转换为操作码的工具。

由于合约可以访问自己的代码,因此可以使用代码来存储数据,这也使得我们不清楚代码的某些部分到底是作为代码使用还是仅仅为数据,也不清楚试图反编译它的意义何在?从计算角度上不可判断某些代码是否是可获得的。

请注意,没有专用区域来存储创建时间确定的数据(如查找表等)。除了合约代码之外,还可以将数据存储在存储库(storage)中,但这样会花费更大,因此将这些数据放入代码中实际上是很常见的事情。

||
||

回答发布于 2018-09-05 16:21:15

这有个项目:Porosity(链接:https://github.com/comaeio/porosity).它还被整合到Quorum toolchain中。(链接:https://www.coindesk.com/first-ethereum-decompiler-launches-jp-morgan-quorum-integration/

||
||

回答发布于 2018-09-05 16:21:14

重新反编译成solidity代码是不可行的。你只能将字节码编译成操作码。

看看这个示例:https://etherscan.io/opcode-tool?a=0x9e1b57fc92eba6434251a8458811c32690f32c45

||
||

回答发布于 2018-09-05 16:21:14

重新反编译成solidity代码是不可行的。你只能将字节码编译成操作码。

看看这个示例:https://etherscan.io/opcode-tool?a=0x9e1b57fc92eba6434251a8458811c32690f32c45

||
||

回答发布于 2018-09-05 16:21:15

这有个项目:Porosity(链接:https://github.com/comaeio/porosity).它还被整合到Quorum toolchain中。(链接:https://www.coindesk.com/first-ethereum-decompiler-launches-jp-morgan-quorum-integration/

||
||

回答发布于 2018-09-05 16:21:16

编译回源代码是不可能的,因为所有变量名、类型名甚至函数名都被删除了。在技术上可能会得到一些类似于源代码的代码,但这非常复杂,尤其是在编译期间使用优化器(optimizer)时。我不知道任何能够仅仅将字节码转换为操作码的工具。

由于合约可以访问自己的代码,因此可以使用代码来存储数据,这也使得我们不清楚代码的某些部分到底是作为代码使用还是仅仅为数据,也不清楚试图反编译它的意义何在?从计算角度上不可判断某些代码是否是可获得的。

请注意,没有专用区域来存储创建时间确定的数据(如查找表等)。除了合约代码之外,还可以将数据存储在存储库(storage)中,但这样会花费更大,因此将这些数据放入代码中实际上是很常见的事情。

||
||

回答发布于 2018-09-05 16:21:16

编译回源代码是不可能的,因为所有变量名、类型名甚至函数名都被删除了。在技术上可能会得到一些类似于源代码的代码,但这非常复杂,尤其是在编译期间使用优化器(optimizer)时。我不知道任何能够仅仅将字节码转换为操作码的工具。

由于合约可以访问自己的代码,因此可以使用代码来存储数据,这也使得我们不清楚代码的某些部分到底是作为代码使用还是仅仅为数据,也不清楚试图反编译它的意义何在?从计算角度上不可判断某些代码是否是可获得的。

请注意,没有专用区域来存储创建时间确定的数据(如查找表等)。除了合约代码之外,还可以将数据存储在存储库(storage)中,但这样会花费更大,因此将这些数据放入代码中实际上是很常见的事情。

||
||

回答发布于 2018-09-05 16:21:15

这有个项目:Porosity(链接:https://github.com/comaeio/porosity).它还被整合到Quorum toolchain中。(链接:https://www.coindesk.com/first-ethereum-decompiler-launches-jp-morgan-quorum-integration/

||
||

回答发布于 2018-09-05 16:21:14

重新反编译成solidity代码是不可行的。你只能将字节码编译成操作码。

看看这个示例:https://etherscan.io/opcode-tool?a=0x9e1b57fc92eba6434251a8458811c32690f32c45

||
||