Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
ghidra-evm — Ghidra 모듈로 이더리움 스마트 계약 바이트코드를 디스어셈블링, 디컴파일링, 분석합니다. 안전하지 않은 명령어를 탐지하고, 숨겨진 메서드를 추출하며, 보안 감사를 위한 제어 흐름 그래프를 생성합니다. | Kitploit
도구/GitHubGitHub/adelapie/ghidra-evm
Static AnalysisVulnerability AnalysisReverse EngineeringBinary Analysis
GitHubadelapie/ghidra-evm

ghidra-evm

Ghidra 모듈로 이더리움 스마트 계약 바이트코드를 디스어셈블링, 디컴파일링, 분석합니다. 안전하지 않은 명령어를 탐지하고, 숨겨진 메서드를 추출하며, 보안 감사를 위한 제어 흐름 그래프를 생성합니다.

저장소 보기
149295년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Ghidra EVM 모듈

front

지난 몇 년 동안 이더리움 블록체인에 배포된 스마트 컨트랙트에 대한 공격은 프로그래밍 실수로 인해 상당한 양의 자금이 도난당하는 결과를 초래했습니다. 스마트 컨트랙트는 한 번 컴파일되어 배포되면 수정 및 업데이트가 복잡하기 때문에, 다양한 실무자들은 이더리움 가상 머신(EVM) 바이트코드만 사용할 수 있는 블록체인에서 보안을 검토하는 것의 중요성을 제안해 왔습니다. 이러한 측면에서 디스어셈블 및 디컴파일을 통한 리버스 엔지니어링이 효과적일 수 있습니다.

ghidra-EVM은 스마트 컨트랙트 리버스 엔지니어링을 위한 Ghidra 모듈입니다. 이를 사용하여 이더리움 블록체인에서 이더리움 가상 머신(EVM) 바이트코드를 다운로드하고 스마트 컨트랙트를 디스어셈블 및 디컴파일할 수 있습니다. 또한 생성 코드를 분석하고, 컨트랙트 메서드를 찾고, 안전하지 않은 명령어를 찾을 수 있습니다.

프로세서 모듈, 사용자 정의 로더 및 플러그인으로 구성되어 있으며, 이더리움 VM(EVM) 바이트코드를 디스어셈블하고 스마트 컨트랙트의 제어 흐름 그래프(CFG)를 생성합니다.

최신 버전은 Ghidra 9.1.2 API를 사용합니다. CFG 생성 과정에서 Ghidra를 지원하기 위해 crytic evm_cfg_builder 라이브러리(https://github.com/crytic/evm_cfg_builder)에 의존합니다.

Ghidra-evm은 다음으로 구성됩니다:

  • 각각 .evm 및 .evm_h 파일에서 바이트 및 헥스 코드를 읽는 로더 (예제 참조)
  • Ghidra 코어 제한 사항을 고려한 EVM 명령어 세트의 SLEIGH 정의 (참고 사항 참조)
  • evm_cfg_builder 및 ghidra_bridge를 사용하여 Ghidra가 CFG를 생성하고 스마트 컨트랙트의 함수 속성을 탐색하도록 돕는 헬퍼 스크립트
  • 스마트 컨트랙트의 다양한 측면을 리버스 엔지니어링하는 데 도움이 되는 스크립트 모음:
스크립트설명
search_codecopy.py스마트 컨트랙트의 생성 코드를 분석할 때, CODECOPY를 사용하여 런타임 코드를 메모리에 쓰는 _dispatcher 함수만 볼 수 있습니다. 이 스크립트는 유용한 CODECOPY 명령어를 찾고 컨트랙트의 런타임 부분에 숨겨진 스마트 컨트랙트 메서드를 찾습니다.
search_dangerous_instructions.pyCALL, CALLCODE, SELFDESTRUCT 및 DELEGATECALL과 같은 명령어는 때때로 다른 컨트랙트로 자금을 이체하는 데 악용될 수 있습니다. 이 스크립트는 이러한 명령어를 찾고 각 발생에 대해 레이블을 생성합니다.
load_external_contract.py블록체인에서 스마트 컨트랙트 바이트 코드를 다운로드하여 ghidra-evm에 로드할 수 있는 .evm_h 파일로 저장합니다.

설치 방법

  • https://github.com/justfoxing/ghidra_bridge의 지침에 따라 ghidra_bridge 설치
  • https://github.com/crytic/evm_cfg_builder의 지침에 따라 crytic evm_cfg_builder 라이브러리 설치
  • ghidra_evm/dist/에 있는 최신 ghidra-evm 릴리스 파일 설치:
    • Ghidra 열기
    • 파일 -> 확장 기능 설치
    • '+'를 클릭하고 zip 파일(예: ghidra_9.1.2_PUBLIC_20201102_ghidra_evm.zip)을 선택
    • 확인 클릭
    • Ghidra 다시 시작

컴파일 방법

ghidra-evm 디렉터리의 내용을 사용하여 ghidra_evm을 확장하거나 디버그하기 위해 Eclipse에서 프로세서 및 로더가 포함된 Ghidra 모듈을 생성할 수 있습니다.

튜토리얼

middle

외부 기호 실행 도구와의 통합

스크립트설명
teether익스플로잇을 생성하기 전에 Ghidra에서 중요 경로를 표시합니다. teether가 필요합니다.

참고 사항

  • CFG는 evm_cfg_builder에 따라 생성됩니다. JUMP 및 JUMPI 명령어가 사용됩니다.
  • 디스어셈블리 및 제어 흐름 창에서 분기를 감지하고 표시하기 위해 32x32 점프 테이블(evm_jump_table)이 그에 따라 생성됩니다.
  • Ghidra는 워드 크기가 64비트를 초과하는 아키텍처 및 메모리를 처리하도록 설계되지 않았습니다. 즉, PUSH32와 같은 명령어는 디컴파일 창에 올바르게 표시되지 않습니다.

라이선스

Ghidra-evm은 AGPLv3에 따라 라이선스가 부여되며 배포됩니다.

감사의 말

  • 이 작업은 유럽 위원회의 H2020 프로그램 프로젝트 M-Sec(보조금 번호 814917)의 지원을 받았습니다.
  • Ghidra-EVM은 Black Hat Asia 2021의 무기 트랙에서 발표되었습니다. 슬라이드는 여기에서 확인할 수 있습니다.
도구 다운로드
튜토리얼설명
사용법test.evm을 사용한 간단한 사용법
생성 바이트코드 분석search_codecopy.py를 사용하여 생성 코드를 분석하고 숨겨진 메서드 찾기
위험한 명령어 찾기search_dangerous_instructions.py를 사용하여 SELFDESTRUCT 발생 분석
블록체인에서 Ghidra로 스마트 컨트랙트 바이트코드 다운로드load_external_contract.py를 사용하여 블록체인에서 EVM 바이트 코드를 다운로드하여 .evm_h 파일로 저장