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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Dna — LLVM 기반 정적 바이너리 분석 프레임워크 | Kitploit
도구/GitHubGitHub/colton1skees/dna
Static AnalysisVulnerability AnalysisCode AnalysisExploitationReverse EngineeringDebuggersBinary AnalysisFirmware Analysis
GitHubcolton1skees/dna

Dna

LLVM 기반 정적 바이너리 분석 프레임워크

저장소 보기
3653454개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Dna

Dna는 LLVM 기반으로 구축된 정적 바이너리 분석 프레임워크입니다. 특히 LLVM, Remill, Souper에 대한 관리형 바인딩을 포함하여 거의 전적으로 C#으로 작성되었습니다.

기능

Dna는 SATURN 논문에서 크게 영감을 받은 반복적 제어 흐름 그래프 재구성을 구현합니다. 완전한 제어 흐름 그래프가 복구될 때까지 재귀 하강, 리프팅(remill 사용), 경로 해석을 반복적으로 적용합니다. 점프 테이블의 경우 Souper와 z3를 기반으로 한 재귀 알고리즘을 사용하여 가능한 점프 테이블 대상 집합을 해석합니다. 반복적 탐색 알고리즘은 여기에서, 점프 테이블 해석 알고리즘은 여기에서 확인할 수 있습니다.

제어 흐름 그래프가 완전히 탐색되면 여기 및 여기의 알고리즘을 사용하여 x86으로 재컴파일하고 바이너리에 다시 삽입할 수 있습니다. 컴파일된 코드가 어떤 의미에서도 예쁘지는 않지만, 복구된 제어 흐름 그래프가 정확하기만 하면 실행되어야 합니다. 그렇다고 해도 여전히 연구용 프로토타입이므로 버그와 예외적인 경우가 있을 수 있습니다. 예를 들어 무한 점프 테이블이나 리프팅할 수 없는 명령어의 경우 제어 흐름 그래프 탐색이 실패할 수 있습니다.

기타 주목할 만한 기능:

  • MSVC의 중첩 또는 이른바 압축 점프 테이블을 포함한 대부분의 점프 테이블을 지원합니다.
  • SEH가 포함된 코드를 LLVM IR로 리프팅하는 것을 지원합니다. SEH가 있으면 제어 흐름 그래프에 try/ 문과 내장 함수가 삽입됩니다. 다만 재컴파일러가 아직 SEH를 지원하지 않으므로(SEH 항목이 수정되지 않음) 예외가 발생하면 크래시가 발생합니다.
catch
filter
  • C#에서 기본적으로 LLVM 패스를 작성할 수 있는 강력한 API를 포함합니다. 예를 들어 MemorySSA, LoopInfo, 지배자 트리(dominator tree), 패스 파이프라인 관리 등에 대한 바인딩이 있습니다.
  • graphviz를 사용한 LLVM IR 및 바이너리 제어 흐름 그래프의 그래프 시각화, 또는 Binary Ninja용 스크립트 생성기를 제공합니다.
  • 주의 사항:

    • x86_64만 지원됩니다
    • 재컴파일된 코드는 CET를 준수하지 않습니다

    종속성

    • LLVM/LLVMSharp
    • Remill
    • Souper
    • AsmResolver
    • Rivers

    참고로 Dna는 현재 LLVM 17을 기반으로 합니다.

    VMProtect

    Dna에는 Dna.BinaryTranslator/VMProtect에 위치한 VMProtect 디버추얼라이제이션(devirtualization) 플러그인이 포함되어 있습니다. 자세한 내용은 이 PR을 참조하세요.

    빌드

    Dna는 현재 LLVM 17을 대상으로 하며 Windows x64에서 Visual Studio 2022로 빌드해야 합니다. Dna.LLVMInterop을 Release 모드로 빌드하세요. 네이티브 종속성 트리는 Release로 빌드되며 Debug 인터롭 빌드는 지원되지 않습니다.

    사전 요구 사항

    • C++/MSBuild 도구가 포함된 Visual Studio 2022
    • CMake
    • Ninja
    • VS 툴체인에서 제공되는 clang-cl / LLVM 도구
    • EqSat 단순화기 DLL용 Rust/Cargo
    • .NET SDK 8+

    아래 명령을 VS x64 개발자 셸 또는 PATH에 VS C++ 도구가 있는 다른 셸에서 실행하세요.

    1. 네이티브 종속성 빌드

    종속성 슈퍼빌드는 LLVM 17, Remill, Z3, XED, gflags/glog 및 관련 네이티브 라이브러리를 Dna.LLVMInterop/dependencies/install에 설치합니다.

    root@kitploit:~
    cmake -S Dna.LLVMInterop/dependencies `
          -B Dna.LLVMInterop/dependencies/build `
          -G Ninja `
          -DCMAKE_BUILD_TYPE=Release `
          -DCMAKE_C_COMPILER=clang-cl `
          -DCMAKE_CXX_COMPILER=clang-cl
    
    cmake --build Dna.LLVMInterop/dependencies/build
    

    컴파일러, 빌드 유형 또는 CRT 설정을 변경하는 경우 재구성 전에 Dna.LLVMInterop/dependencies/build와 Dna.LLVMInterop/dependencies/install을 모두 삭제하세요.

    2. Rust 단순화기 DLL 빌드

    Dna.Example 및 단순화기 프로젝트는 Cargo 릴리스 출력에서 eq_sat.dll을 복사합니다.

    root@kitploit:~
    cargo build --manifest-path Simplifier/EqSat/Cargo.toml --release
    

    3. 솔루션 빌드

    root@kitploit:~
    & "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" `
      Dna.sln `
      /restore `
      /p:Configuration=Release `
      /p:Platform=x64 `
      /m
    
    도구 다운로드