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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
obfuscation_analysis — 난독화된 코드를 분석하고 단순화하기 위한 Binary Ninja 플러그인 | Kitploit
도구/GitHubGitHub/mrphrazer/obfuscation_analysis
Static AnalysisCode AnalysisReverse EngineeringMalware AnalysisUtilities & FrameworksBinary Analysis
GitHubmrphrazer/obfuscation_analysis

obfuscation_analysis

난독화된 코드를 분석하고 단순화하기 위한 Binary Ninja 플러그인

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

난독화 분석 (v1.3)

작성자: Tim Blazytko & Nicolò Altamura

난독화된 코드를 분석하고 단순화합니다

설명:

난독화 분석 은 강력하게 보호된 바이너리를 다룰 때의 어려움을 덜어주는 Binary Ninja 플러그인입니다. 다음과 같은 몇 가지 집중적인 도우미 기능을 제공합니다.

  • 클릭 한 번으로 Mixed-Boolean Arithmetic (MBA) 표현식을 단순화합니다 (msynth 기반)
  • 디스어셈블리가 깨진 함수를 찾아 제거합니다

몇 가지 사용 예시는 examples에서 확인할 수 있습니다. 또한 REcon 발표 "Breaking Mixed Boolean-Arithmetic Obfuscation in Real-World Applications"에서 몇 가지 사용 사례를 보여줍니다. 슬라이드는 여기에서 확인할 수 있습니다. 이 플러그인은 Obfuscation Detection을 보완합니다: 의심스러운 함수가 표시되면 난독화 분석 이 해당 함수를 정리하고 이해하는 데 도움을 줍니다. 더 많은 도우미 기능이 시간이 지남에 따라 추가될 예정입니다.

핵심 기능

  • Binary Ninja의 디컴파일러 뷰에서 Mixed-Boolean Arithmetic 난독화를 단순화합니다
  • 디스어셈블리가 깨진 함수를 식별하고 제거합니다
  • 디컴파일러 뷰에서 함수를 인라인합니다
  • 효율적이고 아키텍처에 독립적인 구현
  • 백그라운드 작업으로 실행됩니다
  • 세심한 오류 처리: 간결한 사용자 메시지, Debug 로그에 전체 추적 기록

설치

이 도구는 Binary Ninja의 플러그인 관리자를 사용하여 설치할 수 있습니다.

수동 설치의 경우 Binary Ninja의 플러그인 폴더에서 다음 단계를 따르세요:

root@kitploit:~
git clone https://github.com/mrphrazer/obfuscation_analysis.git
cd obfuscation_analysis

# optionally: use a virtual environment
python -m venv obfana-env
source obfana-env/bin/activate

# install requirements
pip install -r requirements.txt

가상 환경을 사용하는 경우 Binary Ninja 설정에서 site-packages 경로를 수동으로 설정해야 합니다.

사용법

이 플러그인은 Binary Ninja의 상단 바 메뉴에서 Plugins -> Obfuscation Analysis 아래에서 사용할 수 있습니다.

Plugin Menu

MBA 단순화

산술 난독화를 단순화하려면 먼저 디컴파일러 뷰에서 단순화하려는 HLIL 표현식을 선택하세요. 그런 다음 Plugins -> Obfuscation Analysis -> MBA Simplification -> Slice & Simplify를 선택합니다. 플러그인은 전체 계산을 해석하고, msynth를 통해 실행한 후, 단순화된 결과를 같은 줄에 주석으로 삽입합니다. 아래 짧은 애니메이션은 전체 워크플로를 보여줍니다:

MBA Simplification Workflow

MBA 단순화는 msynth에 의존합니다. 기본적으로 플러그인은 플러그인과 함께 제공되고 미리 구성된 msynth의 기본 단순화 오라클을 사용합니다. 더 크거나 사용자 정의된 오라클을 사용하려면 obfuscation_analysis.mba_oracle_path를 수동으로 설정하거나 Binary Ninja의 Settings 창에서 파일을 찾아보세요.

Plugin Settings

문제가 발생하면 플러그인은 Log 창에 간결한 사용자 수준 메시지를 기록합니다. 전체 추적 기록을 보려면 로그 뷰를 Debug로 전환하세요.

Log Output

기능

이 플러그인은 보호된 바이너리를 리버싱할 때 흔히 마주치는 장애물을 해결하는 집중적인 도우미 기능을 제공하며, 각각 UI 또는 헤드리스 스크립트에서 백그라운드 작업으로 실행할 수 있습니다. 아래는 현재 사용 가능한 기능들입니다.

손상된 함수

손상된 함수는 디스어셈블리가 정의되지 않은 인공물—빈 기본 블록, 유효하지 않거나 겹치는 명령어 등—을 보여주는 함수입니다. 이 도우미는 전체 BinaryView를 순회하며 이러한 증상을 가진 함수를 표시하고, 분석가가 잘못 파싱되었거나 의도적으로 난독화된 코드를 빠르게 검사할 수 있도록 목록을 작성합니다. 선택적 제거 작업은 표시된 모든 함수를 삭제하고 새 분석을 강제하여 함수 목록을 정리합니다. 이는 특히 다음을 찾는 데 유용합니다.

  • 디스어셈블러가 실수로 코드로 승격시킨 데이터 블롭
  • 직선형 디스어셈블리를 깨뜨리는 난독화 스텁
  • 겹치는 명령어나 정렬되지 않은 점프를 사용하는 함수
  • 드문 명령어가 나타나는 최신 아키텍처의 문제

MBA 단순화

Mixed-Boolean Arithmetic (MBA)은 단순한 계산을 긴 산술 및 불리언 연산 체인에 묻어버리는 난독화 기법입니다. 이 기능은 디컴파일러에서 이러한 표현식을 단순화합니다. HLIL 명령어를 선택하면 플러그인은 현재 기본 블록으로 제한된 SSA 역방향 슬라이스로 전체 계산 체인을 수집하고, 해당 슬라이스를 Miasm IR로 변환하여 msynth에 입력한 후, 최종적으로 단순화된 결과를 디컴파일러 뷰에 주석으로 추가합니다. 이 기능을 사용하면 다음이 가능합니다.

  • 여러 줄의 MBA 얽힘을 하나의 읽기 쉬운 방정식으로 축소
  • MBA에 의존하는 불투명 술어 해석
  • 복잡하게 뒤엉킨 상수 인코딩을 리터럴 값으로 축소

함수 인라인

현재 선택된 함수에 대해 이 도우미는 디컴파일러 뷰 내의 모든 피호출자를 재귀적으로 인라인하여 Binary Ninja에 단일하고 자체 완결적인 IL을 제공합니다. 모든 경계가 사라지면 디컴파일러는 함수 간에 데이터를 전파할 수 있어 더 깊은 상수 폴딩, 데드 코드 제거, 그리고 일반적으로 더 명확한 로직이 가능해집니다. 다음과 같은 경우에 사용하세요.

  • 작은 래퍼, thunk 또는 접근자 도우미의 체인 축소
  • 여러 함수에 걸쳐 분할된 알고리즘 표현 개선
  • 로직이 의도적으로 함수 간에 흩어진 난독화 기법 분석

HLIL은 매우 큰 함수나 깊은 호출 트리에서 매우 거대해지고 렌더링이 느려질 수 있습니다. 또한 모든 것이 단일 단위로 병합되면 일부 디컴파일러 최적화가 덜 효과적일 수 있습니다. 이를 제어하려면 인라인 깊이를 제한할 수 있습니다: Settings -> Obfuscation Analysis -> Max Function Inlining Depth를 상한 N으로 설정합니다 (기본값은 1). 깊이 제한이 있으면 처음 N개의 호출 레벨만 인라인되고, 더 깊은 호출은 인라인되지 않습니다.

제한 사항

이 플러그인에는 알아두어야 할 몇 가지 주의 사항이 있으며, 대부분 MBA 단순화 파이프라인과 관련이 있습니다:

  • Binary Ninja 버그: BN 5.0 stable에서 누락된 HLIL 타입 캐스트로 인해 역방향 슬라이싱 단계가 실패할 수 있습니다: https://github.com/Vector35/binaryninja-api/issues/6371; 이 문제는 5.1.7477-de 및 이후 버전에서 수정되었습니다

  • 슬라이스가 하나의 기본 블록으로 제한됨: 선행 블록에 위치한 변수 정의는 무시됩니다 (종종 제어 흐름에 의존적), 따라서 일부 MBA 항은 부분적으로만 해석될 수 있습니다

  • HLIL에서 Miasm IR로의 변환 격차: 모든 HLIL 구성 요소에 건전한 Miasm 등가물이 있는 것은 아닙니다. 변환이 실패하면 표현식은 건너뛰고 오류가 기록됩니다

  • IL 커버리지: 제어 흐름 노드와 부동 소수점 연산은 현재 변환되지 않습니다

  • msynth 제약 상속: MBA 단순화는 모든 msynth 제한 사항을 상속합니다

연락처

더 많은 정보는 Tim Blazytko (@mr_phrazer) 또는 Nicolò Altamura (@nicolodev)에게 문의하세요.

도구 다운로드