Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
lighthouse — 리버스 엔지니어를 위한 커버리지 탐색기 | Kitploit
도구/GitHubGitHub/gaasedelen/lighthouse
Static AnalysisDynamic Analysis (Sandboxing)Vulnerability AnalysisCode AnalysisReverse EngineeringDebuggersFuzzingBinary AnalysisPapers & Research
GitHubgaasedelen/lighthouse

lighthouse

리버스 엔지니어를 위한 커버리지 탐색기

2.6k33647개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
저장소 보기
공유

Lighthouse - 리버스 엔지니어를 위한 커버리지 탐색기

Lighthouse Plugin

개요

Lighthouse는 IDA Pro와 Binary Ninja를 위한 강력한 코드 커버리지 탐색기로, 소프트웨어 연구자들이 심볼이나 소스 없이도 네이티브 애플리케이션의 실행 맵을 연구할 수 있도록 독특한 대화형 제어 기능을 제공합니다.

이 프로젝트는 IDA의 2017 플러그인 콘테스트에서 2위를 차지했으며, 이후 보안 연구 업계에 기여한 공로를 인정받아 2021 Pwnie Awards에 후보로 지명되었습니다.

영감을 주신 @0vercl0k께 특별히 감사드립니다.

릴리스

  • v0.9 -- Python 3 지원, 사용자 정의 커버리지 형식, 커버리지 상호 참조, 테마 하위 시스템 등 다수.
  • v0.8 -- Binary Ninja 지원, HTML 커버리지 리포트, 일관된 스타일링, 다수의 개선 및 버그 수정.
  • v0.7 -- Frida, C++ 디맹글링, 컨텍스트 메뉴, 함수 접두사, 개선 및 버그 수정.
  • v0.6 -- Intel pintool, 순환 복잡도, 일괄 로드, 버그 수정.
  • v0.5 -- 검색, IDA 7 지원, 다수의 개선, 안정성.
  • v0.4 -- 대부분의 연산이 이제 비동기화됨, 버그 수정.
  • v0.3 -- 커버리지 합성, 대화형 합성 셸.
  • v0.2 -- 다중 파일 지원, 성능 개선, 버그 수정.
  • v0.1 -- 최초 릴리스

설치

Lighthouse는 크로스 플랫폼(Windows, macOS, Linux) Python 2/3 플러그인입니다. 서드파티 의존성이 전혀 없어 코드가 이식성이 높고 설치가 쉽습니다.

사용 중인 디스어셈블러에 맞는 아래 지침을 따르세요.

IDA 설치

  1. IDA의 Python 콘솔에서 다음 명령을 실행하여 플러그인 디렉터리를 찾습니다:
    • import idaapi, os; print(os.path.join(idaapi.get_user_idadir(), "plugins"))
  2. 이 저장소의 /plugins/ 폴더 내용을 해당 디렉터리에 복사합니다.
  3. 디스어셈블러를 재시작합니다.

Binary Ninja 설치

Lighthouse는 Binary Ninja의 플러그인 관리자를 통해 설치할 수 있으며, v3.5 이상을 지원합니다.

  1. 다음 하위 메뉴를 탐색하여 Binary Ninja의 플러그인 관리자를 엽니다:
    • Edit -> Preferences -> Manage Plugins
  2. 플러그인 관리자에서 Lighthouse를 검색하고, 오른쪽 하단의 Enable 버튼을 클릭합니다.
  3. 디스어셈블러를 재시작합니다.

사용법

제대로 설치되면 디스어셈블러에 몇 가지 새로운 메뉴 항목이 나타납니다. 이들은 사용자가 커버리지 데이터를 로드하고 Lighthouse를 사용하기 시작하는 진입점입니다.

Lighthouse Menu Entries

Lighthouse는 몇 가지 다른 '종류'의 커버리지 데이터를 로드할 수 있습니다. Lighthouse에 로드할 수 있는 커버리지 데이터를 생성하려면 이 저장소의 coverage 디렉터리에 있는 README를 참고하세요.

커버리지 페인팅

Lighthouse가 사용되는 동안, 디스어셈블러에서 사용 가능한 모든 코드 뷰어에 걸쳐 활성 커버리지 데이터를 '페인팅'합니다. 구체적으로, 이는 선형 디스어셈블리, 그래프, 디컴파일러 창에 적용됩니다.

Lighthouse Coverage Painting

Binary Ninja에서는 선형 디스어셈블리, 그래프, IL 뷰만 지원됩니다. Binary Ninja의 디컴파일러 출력 페인팅 지원은 기능이 안정화되는 대로 가까운 시일 내에 Lighthouse에 추가될 예정입니다.

커버리지 개요

커버리지 개요는 커버리지가 Lighthouse에 로드되면 열리는 도킹 가능한 위젯입니다.

Lighthouse Coverage Overview

이 대화형 위젯은 로드된 커버리지 데이터의 함수 수준 뷰를 제공합니다. 또한 로드된 데이터를 관리하고 더 고급 형태의 커버리지 분석을 수행하기 위한 여러 도구를 갖추고 있습니다.

컨텍스트 메뉴

커버리지 개요의 테이블을 마우스 오른쪽 버튼으로 클릭하면 테이블에서 정보를 추출하거나 리버스 엔지니어링 과정의 일환으로 데이터베이스를 조작하기 위한 몇 가지 기본 기능이 담긴 컨텍스트 메뉴가 나타납니다.

Lighthouse Context Menu

이 컨텍스트 메뉴에 추가하면 유용할 것 같은 다른 작업이 있다면 이슈를 등록해 주세요. Lighthouse의 향후 릴리스에서 검토될 것입니다.

커버리지 콤보박스

로드된 커버리지와 사용자가 구성한 합성은 커버리지 콤보박스를 통해 선택하거나 삭제할 수 있습니다.

Lighthouse Coverage ComboBox

HTML 커버리지 리포트

Lighthouse는 기본적인 HTML 커버리지 리포트를 생성할 수 있습니다. 샘플 리포트는 여기에서 볼 수 있습니다.

Lighthouse HTML Report

커버리지 셸

커버리지 개요 창의 하단에는 커버리지 셸이 있습니다. 이 셸은 로드된 커버리지 집합을 결합하거나 조작하는 논리 기반 연산을 수행하는 데 사용할 수 있습니다.

Lighthouse Coverage Composition

이 기능은 여러 실행에 걸친 프로그램 실행의 관계를 탐구하는 데 매우 유용합니다. 다시 말해, 셸을 사용하여 커버리지 집합 간의 실행을 'diff'하고, 개별 부분의 노이즈 속에 가려져 있던 더 깊은 의미를 추출할 수 있습니다.

합성 문법

위에서 시연한 커버리지 합성, 즉 _Composing_은 합성 셸에서 간단한 표현식 문법과 '축약형' 커버리지 기호(A부터 Z)를 통해 이루어집니다.

문법 토큰

  • 논리 연산자: |, &, ^, -
  • 커버리지 기호: A, B, C, ..., Z, *
  • 괄호: (...)

합성 예시

  1. 커버리지 A와 커버리지 B 사이에 공유되는 실행 코드:
A & B
  1. 커버리지 A에만 고유한 실행 코드:
A - B
  1. A 또는 B에 고유하지만 C에는 없는 실행 코드:
(A | B) - C

표현식은 임의의 길이나 복잡도를 가질 수 있지만, 합성의 평가는 오른쪽에서 왼쪽으로 이루어질 수 있습니다. 따라서 모호할 수 있는 표현식에는 괄호를 사용하는 것이 좋습니다.

핫 셸

또한, 사용자 합성을 실시간으로 비동기 평가하고 캐시하는 '핫 셸' 모드가 있습니다.

Lighthouse Hot Shell

핫 셸은 합성된 관계를 자유롭게 탐구하는 자연스러운 관문 역할을 합니다.

검색

셸을 사용하여 쿼리 앞에 /를 붙여 커버리지 테이블에 나열된 함수를 검색하고 필터링할 수 있습니다.

Lighthouse Search

셸의 헤드에는 남은 함수만으로 계산된 업데이트된 커버리지 %가 표시됩니다. 이는 특정 함수 패밀리의 커버리지를 분석할 때 유용합니다.

점프

셸에 주소나 함수 이름을 입력하면 테이블의 해당 함수 항목으로 점프할 수 있습니다.

Lighthouse Jump

커버리지 상호 참조 (Xref)

Lighthouse를 사용하는 동안, 임의의 기본 블록(또는 명령어)을 마우스 오른쪽 버튼으로 클릭하고 'Coverage Xref' 작업을 사용하여 선택한 블록을 실행한 커버리지 집합을 확인할 수 있습니다. 나열된 항목 중 하나를 더블 클릭하면 즉시 해당 커버리지 집합으로 전환됩니다.

Lighthouse Xref

이는 수천 개의 커버리지 파일을 Lighthouse에 빠르게 로드하고 집계할 수 있는 'Coverage Batch' 기능과 잘 어울립니다. 블록을 상호 참조하고 '집합'을 선택하면 디스크에서 '문제가 되는' 집합을 새로운 커버리지 집합으로 로드하여 배치와 별도로 탐구할 수 있습니다.

테마

Lighthouse는 두 가지 기본 테마, 즉 '라이트' 테마와 '다크' 테마와 함께 제공됩니다. 디스어셈블러에서 현재 사용 중인 색상에 따라 Lighthouse는 가장 적절해 보이는 테마를 선택하려고 시도합니다.

Lighthouse Themes

테마 파일은 디스크에 간단한 JSON으로 저장되며 매우 구성 가능합니다. 기본 테마나 색상이 마음에 들지 않으면 자신만의 테마를 만들어 사용자 테마 디렉터리에 넣기만 하면 됩니다.

Lighthouse는 향후 로드 및 사용을 위해 테마 기본 설정을 기억합니다.

향후 작업

시간과 동기가 허락한다면, 향후 작업에는 다음이 포함될 수 있습니다:

도구 다운로드