
Rattle은 배포 된 스마트 계약에서 작동하도록 설계된 EVM 바이너리 정적 분석 프레임 워크입니다. Rattle은 EVM 바이트 문자열을 가져 가고, 유량에 민감한 분석을 사용하여 원래 제어 흐름 그래프를 복구하고, 제어 흐름 그래프를 SSA/무한 레지스터 형태로 들어 올리고, SSA를 최적화-DUP, 스왑, 푸시 및 팝을 제거합니다. 스택 머신에서 SSA 양식으로 변환하면 모든 EVM 지침의 60%이상이 제거되고 상호 작용하는 스마트 계약을 읽고 자하는 사람들에게 훨씬 더 친근한 인터페이스를 제공합니다.
python3 rattle-cli.py --input inputs/kingofether/KingOfTheEtherThrone.bin -O다음과 같은 등록기 출력을 생성합니다.

기능이 복구되어 분할됩니다. 또한 기능 인수, 메모리 위치 및 스토리지 위치가 복구됩니다.
Rattle은 런타임 계약 육각 문자열에서 실행됩니다.
계약에서 딸랑이를 실행중인 경우 견고성으로 컴파일 할 수 있고 --bin-runtime 옵션을 사용하여 헤더를 벗겨냅니다.
$ solc --bin-runtime KingOfTheEtherThrone.sol 2> /dev/null | tail -n1 > contract.bin Python 종속성을 설치하려면이 명령을 실행하십시오.
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtGraphViz를 설치하려면 다음 명령을 실행하십시오.
Linux :
sudo apt-get graphvis마코스 :
brew install graphviz다음과 같은 구문 오류가 발생하면 다음과 같습니다.
File "rattle-cli.py" , line 16
def main () -> None :
^
SyntaxError : invalid syntaxPython3 대신 Python2로 딸랑이를 쳤을 것입니다.
Rattle 디자인 및 기능에 대한 자세한 내용은 여기에 주석이 달린 Recon Montreal Presentation을 참조하십시오.
Rattle은 AGPLV3 라이센스에 따라 라이센스 및 배포됩니다. 약관에 대한 예외를 찾고 있다면 저희에게 연락하십시오.