Захотелось мне сделать хитрый код, который бы не давал отладчику remix себя отлаживать.
Идея проста.
Отладчик загружает код, парсит его, получает последовательность команд.
А что если в аргумент команды PUSHnn запихнуть тоже код и на него потом прыгнуть?
Идея проста.
Отладчик загружает код, парсит его, получает последовательность команд.
А что если в аргумент команды PUSHnn запихнуть тоже код и на него потом прыгнуть?
Код такой:
00 PUSH4 5b600856
05 PUSH1 01
07 JUMP
08 JUMPDEST
Если его развернуть, то будет:
00 63 PUSH4
01 5b JUMPDEST
02 60 PUSH1
03 08
04 56 JUMP
05 60 PUSH1
06 01
07 56 JUMP
08 5b JUMPDEST
Запустил я транзакцию на создание контракта и получил «Bad jump destination».
Получается, что не только отладчик, но и все клиенты сети парсят код только один единственный раз при загрузке.
ссылка на оригинал статьи https://habr.com/post/424883/
Добавить комментарий