Как вы можете декомпилировать смарт-контракт?

В блочной цепочке я могу проверить код контракта и увидеть коды операций EVM. Есть ли способ декомпилировать это и преобразовать его в исходный код (Solidity)?

41 голос | спросил Joris Bontje 21 Jam1000000amThu, 21 Jan 2016 09:53:58 +030016 2016, 09:53:58

3 ответа


33

Компиляция обратно к исходному исходному коду невозможна, потому что все имена переменных, имена типов и даже имена функций удаляются. Возможно, было бы технически возможно получить некоторый исходный код, похожий на исходный код, но это очень сложно, особенно когда оптимизатор использовался во время компиляции. Я не знаю никаких инструментов, которые делают больше, чем преобразование байт-кода в коды операций.

Поскольку контракты могут получить доступ к их собственному коду и, таким образом, (ab) использовать код для хранения данных, не всегда ясно, используется ли какая-то часть кода в качестве кода или только как простые данные и имеет ли смысл попробовать и декомпилировать его. Вычислительно неразрешимо, доступна ли какая-либо часть кода или нет.

Обратите внимание, что нет выделенной области для хранения фиксированных данных времени создания (например, таблицы поиска и т. д.). Помимо кода контракта, было бы также возможно хранить данные в хранилище, но это было бы дороже, поэтому размещение таких данных в коде на самом деле является обычным делом.

ответил chriseth 21 Jpm1000000pmThu, 21 Jan 2016 16:26:57 +030016 2016, 16:26:57
4
ответил xvorsx 27 J000000Thursday17 2017, 23:42:10
3

вернуть код целостности обратно невозможно. вы можете просто декодировать Bytecode в коды операций.

посмотрите на этот пример: https://etherscan.io/opcode-tool?a=0x9e1b57fc92eba6434251a8458811c32690f32c45

ответил Badr Bellaj 19 AM00000010000000431 2016, 01:25:04

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132