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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dexcalibur — [공식] Frida를 활용한 동적 계측 자동화에 초점을 맞춘 Android 리버스 엔지니어링 도구입니다. DEX를 디스어셈블하고, 정적으로 분석하며, 후크를 생성하고, 리플렉션 메서드를 발견하고, 가로챈 데이터를 저장하며, 이를 통해 새로운 작업을 수행합니다. 그 목표는 올인원 Android 리버스 엔지니어링 플랫폼이 되는 것입니다. | Kitploit
도구/GitHubGitHub/reversenseorg/dexcalibur
Android SecurityStatic AnalysisDynamic Analysis (Sandboxing)Reverse EngineeringDebuggersFuzzingMobile SecurityBinary Analysis
GitHubreversenseorg/dexcalibur

dexcalibur

[공식] Frida를 활용한 동적 계측 자동화에 초점을 맞춘 Android 리버스 엔지니어링 도구입니다. DEX를 디스어셈블하고, 정적으로 분석하며, 후크를 생성하고, 리플렉션 메서드를 발견하고, 가로챈 데이터를 저장하며, 이를 통해 새로운 작업을 수행합니다. 그 목표는 올인원 Android 리버스 엔지니어링 플랫폼이 되는 것입니다.

저장소 보기
1.2k13063일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

작업 진행 중 : dexcalibur 2.0으로 이동 | 코드명 : Reversense

npm dependencies npm npm Docker Automated build Build Status Twitter Follow PRs Welcome Maintainability

Dexcalibur 배너

Dexcalibur

Dexcalibur는 인스트루멘테이션 자동화에 초점을 맞춘 Android 리버스 엔지니어링 플랫폼입니다. 특이점은 동적 분석을 사용하여 정적 분석 휴리스틱을 개선한다는 점입니다. 다음과 같은 동적 인스트루멘테이션과 관련된 지루한 작업을 자동화하는 것을 목표로 합니다:

  • 실행 중 인터셉트된 바이트코드를 디컴파일/디스어셈블
  • 훅 코드 작성 및 많은 훅 메시지 관리
  • 훅할 흥미로운 패턴/항목 검색
  • 훅으로 수집된 데이터 처리 (dex 파일, 호출된 메서드, 클래스 로더 등)
  • 기타 등등... 하지만 그뿐만이 아닙니다. Dexcalibur는 자체 정적 분석 엔진을 가지고 있으며, smali의 일부 조각을 실행할 수 있습니다.

무언가를 공유하고 싶거나 도움이 필요하신가요? 공식 채팅에 참여하세요:

Telegram - 가장 빠르게 응답을 받을 수 있는 방법

https://discord.gg/Pfw7Kc3dS

공식 문서는 여기 (웹사이트 - 작업 중)에서 확인할 수 있습니다.

최신 소식은 여기에서 확인하세요: http://docs.dexcalibur.org/News.html

Dexcalibur 데모 동영상 보기: 데모: 1분도 안 되어 61개 메서드를 훅? 문제 없습니다. (youtube)

Dexcalibur를 지원하는 방법은 무엇인가요?

기여해 주세요!

망설이지 마세요! 기여할 수 있는 방법은 여러 가지입니다:

  • 수정 또는 새로운 기능과 관련된 풀 리퀘스트 만들기
  • 이슈를 생성하여 도구 패치/개선에 도움 주기
  • UI 개발 지원하기
  • 피드백을 이메일로 보내기
  • 기타 등등...

A. 설치

A.1 새로 설치

설치 문서로 이동하세요.

대안: Docker 사용

  • 호스트에 adb를 설치하세요 (적절하다면 Android 에뮬레이터도)
  • docker-compose build android-dexcalibur
  • docker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bash

A.2 Dexcalibur 실행

Linux 및 MacOS의 경우

NPM 설치: Dexcalibur가 NPM을 통해 전역으로 설치된 경우(-g 옵션), 터미널에서 $ dexcalibur를 입력하여 실행할 수 있습니다. 그렇지 않은 경우 $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js로 실행할 수 있습니다.

소스에서 설치: dexcalibur 폴더에서 $ dexcalibur 또는 $ node dexcalibur.js를 실행하세요.

Windows의 경우

NPM 설치: Dexcalibur가 NPM을 통해 전역으로 설치된 경우(-g 옵션)에도 터미널에서 node <NPM_ROOT>/dexcalibur/dexcalibur.js 명령을 실행해야 합니다.

소스에서 설치: dexcalibur 폴더의 터미널에서 node dexcalibur.js 명령을 실행하세요.

A.3 업데이트

버전 <= 0.6.x에서

이전 버전의 Dexcalibur를 사용 중이신가요?

새로 설치와 동일한 단계를 따르고, 작업 공간(workspace) 경로를 입력해야 할 때 현재 작업 공간 위치를 입력하세요.

버전 >= 0.7에서

다음을 수행하기만 하면 됩니다:

root@kitploit:~
$  npm install -g dexcalibur

기존 구성 및 작업 공간이 자동으로 감지됩니다.

C. 스크린샷

다음 스크린샷은 실행 중 xrefs의 자동 업데이트를 보여줍니다.

Xref 자동 업데이트

기능

D. 기능 및 제한 사항

현재 가장 큰 제한 사항은 Dexcalibur가 네이티브 함수(JNI 라이브러리 내)를 대상으로 하는 훅의 소스 코드를 생성할 수 없다는 것입니다. 그러나 훅을 편집하여 수동으로 Frida의 Interceptor를 선언할 수 있습니다.

Dexcalibur가 (현재로서는) JNI 라이브러리나 JNA와 같은 네이티브 부분을 분석하는 기능을 제공하지 않는다고 가정할 때, Java 부분과 관련된 기능 및 제한 사항만 자세히 설명했습니다.

분석 정확도는 분석 초기 단계에서 사용된 Android API 이미지의 완전성에 따라 달라집니다. 즉, Android SDK의 Android.jar 파일에서 생성된 DEX 파일을 사용하는 경우 Android Java API의 내부 메서드, 필드 또는 클래스에 대한 일부 참조가 누락될 수 있습니다. 대상 Android 버전을 실행하는 실제 기기에서 직접 추출한 'boot.oat' 파일에서 분석을 시작하면 더 나은 결과를 얻을 수 있습니다.

D.1 기능

D.1.A 정적 분석기

TODO: 텍스트 작성

D.1.B 훅 관리자

TODO: 텍스트 작성

D.1.C Dexcalibur의 smali VM

추적되는 동작

'Run smali (VM)' 작업과 관련된 정적 분석기는 다음 동작을 발견하고 수용하며 추적할 수 있습니다:

  • 범위를 벗어난 대상 레지스터 (v0 - v255 범위 밖의 레지스터)
  • 범위를 벗어난 소스 레지스터 (v0 - v65535 범위 밖의 레지스터)
  • 암묵적으로 내부 예외를 발생시키는 잘못된 명령어 감지
  • Android 사양을 준수하지 않는 유효한 바이트코드 조각 감지
  • 정의되지 않은 배열의 길이 계산
  • 정의되지 않은 배열 채우기
  • 그리고 더...

현재 이러한 잘못된 명령어에 대한 핸들러/리스너는 지원되지 않지만, 이벤트는 추적되고 렌더링됩니다.

Dexcalibur IR

VM은 사용자 정의되고 단순화된 중간 표현(IR)을 생성하며, 이는 분석가의 분석을 돕기 위해서만 표시됩니다.

호출 스택 깊이와 구성 값에 따라 IR은 호출된 함수 내에서 실행된 명령어를 포함하거나 포함하지 않을 수 있습니다. 실행이 try 블록에 진입하여 반환까지 계속되지만 catch를 실행하지 않으면, catch 블록은 렌더링되지 않습니다. 실제로 Dexcalibur IR의 목적은 VM 컨텍스트에서 "실행된 것" 또는 "일부 심볼 값에 따라 실행될 수 있는 것"만 렌더링하는 것입니다.

Dexcalibur IR은 불필요한 goto와 불투명 조건자(opaque predicate)를 제거하여 바이트코드의 정리된 버전을 읽는 데 도움을 줍니다. Dexcalibur IR은 두 가지 단순화 수준으로 VM에 의해 생성될 수 있습니다:

1단계 IR (2단계 IR을 신뢰하지 않는 경우 사용 가능):

  • CFG 단순화 없음: 조건부 및 무조건 점프가 렌더링됩니다.
  • 레지스터로의 모든 이동이 렌더링됩니다.

2단계:

  • 사용 전에 레지스터가 알 수 없는 값으로 수정되지 않은 경우 할당을 숨깁니다.
  • 항상 TRUE/FALSE 조건자는 제거됩니다.
  • 특정 조건에서 goto와 같은 무조건 점프가 제거됩니다: 대상 기본 블록의 단일 선행자 등.
  • 가능한 경우 Method.invoke() 호출을 호출된 메서드로 해결 및 대체합니다.
  • 예외가 발생하기 전에 try 블록의 명령어는 렌더링되지 않습니다.
  • 기타...

Android API 모의

TODO

세부 사항

Smali VM은 다음 단계를 따릅니다:

  1. VM 초기화: 스택 메모리, 힙, 클래스 로더, 메소드 영역 등
  2. VM이 메서드를 선언하는 클래스를 로드합니다.
  3. (선택 사항) 클래스에 정적 블록이 있으면 clinit()이 실행됩니다. 이는 정적 속성에 저장된 구체적인 값을 해결하는 데 도움이 됩니다.
  4. 메서드 메타데이터 로드
  5. 메서드 명령어 실행. PseudoCodeMaker가 활성화된 경우 Dexcalibur IR이 생성됩니다.

VM이 invoke-* 명령어를 처리하는 방법은 무엇인가요?

  1. invoke-*가 발생하면 로컬 심볼 테이블이 저장되고 호출된 메서드가 로드됩니다.
  2. 호출된 메서드를 선언하는 클래스가 이전에 로드된 적이 없으면 클래스가 로드됩니다.
  3. 메서드가 이전에 로드된 적이 없으면 (MethodArea에 의해) 메서드가 로드되고 호출자의 심볼 테이블에서 인수의 심볼을 가져와 로컬 심볼 테이블이 초기화됩니다.
  4. 호출된 메서드가 호출 스택(StackMemory)에 푸시됩니다.
  5. 메서드 명령어가 실행됩니다.
  6. 반환 값이 스택 메모리에 푸시됩니다.
  7. 호출자에게 제어 흐름이 반환됩니다.

D.1.D 애플리케이션 토폴로지 분석기

매니페스트 분석 (제한됨)

첫 번째 실행 전에 애플리케이션의 Android 매니페스트가 파싱됩니다. 실제로 보안되지 않은 구성과 같은 매니페스트의 이상 징후는 이 수준에서 감지됩니다.

Android 매니페스트 파싱의 유일한 목적은 다른 유형의 분석기를 채우는 것입니다.

권한 분석

매니페스트에서 추출된 모든 권한이 나열되고 식별되며, 대상 Android API 버전의 Android 사양과 비교됩니다.

Dexcalibur는 (일부 경우에만) 권한 목적의 설명, 최소 Android API 버전 등을 제공합니다.

액티비티 분석

프로바이더 분석

서비스 분석

리시버 분석

D.1.E 런타임 모니터링 (구현되지 않음)

네트워크 모니터링

인텐트 모니터링

파일 액세스 모니터링

D.1.F 협업 기능

다중 사용자 메뉴를 찾을 수 없으신가요? 문제 없습니다. 메뉴는 없지만 최소한의 협업 작업이 가능합니다.

Dexcalibur는 웹 서버를 실행합니다. 따라서 여러 사람이 이 웹 서버와 동일한 네트워크에 있고 호스트 방화벽이 잘 구성되어 있다면, 여러 명이 동일한 Dexcalibur 인스턴스에서 작업할 수 있습니다.

실제 제한 사항은 다음과 같습니다:

  • 인증 없음: 네트워크의 모든 사람이 Dexcalibur 인스턴스에 요청을 보내고 검색 엔진을 통해 호스트에서 RCE를 수행할 수 있습니다.
  • 식별 없음: 수정 사항이 추적되지 않으므로, 누군가 심볼 이름을 바꾸면 누가 이름을 바꿨는지 알 수 없습니다. 유사한 경우: 특정 훅을 누가 만들었는지 알 수 없습니다.
  • 단일 기기 인스트루멘테이션: 여러 대의 기기가 Dexcalibur 호스트에 연결되어 있어도, 인스트루멘테이션할 기기를 선택할 수 있지만 인스트루멘테이션과 훅 메시지는 마지막으로 선택한 기기에 연결됩니다. 따라서 여러 기기를 동시에 인스트루멘테이션할 수 없습니다.

E. Github 기여자

특별히 기여자분들께 감사드립니다:

  • ubamrein
  • jhscheer
  • eybisi
  • monperrus
  • cryptax

F. 문제 해결

F.1 Dexcalibur가 계속 "install mode"로 시작됩니다

더 깊이 들어가기 전에:

  • 인터넷에 연결되어 있는지 확인하세요: 설치 중 Apktool 및 대상 플랫폼이 다운로드됩니다.
  • dexcalibur --reinstall 명령을 사용하여 다시 설치를 시도해 보셨나요? 아직 시도하지 않았다면, 시도해 보세요.

먼저, 전역 설정이 <user_directory>/.dexcalibur/에 저장되었는지 확인하세요.

root@kitploit:~
$ ls -la ~/.dexcalibur      

total 8
drwxr-xr-x   3 test_user  staff    96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user  staff  2784 29 avr 11:47 ..
-rw-r--r--   1 test_user  staff   204 29 avr 11:41 config.json


$ cat ~/.dexcalibur/config.json 

{
    "workspace":"/Users/test_user/dexcaliburWS3",
    "registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
    "registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}

다음으로, Dexcalibur 작업 공간의 구조가 다음과 같은지 확인하세요 (/api 폴더의 내용은 다를 수 있음).

root@kitploit:~
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
drwxr-xr-x  8 test_user  staff  256 29 avr 11:41 sdk_androidapi_29_google

/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x   4 test_user  staff       128 29 avr 11:41 .
drwxr-xr-x   7 test_user  staff       224 29 avr 11:41 ..
-rwxr-xr-x   1 test_user  staff  17661172 29 avr 11:41 apktool.jar
drwxr-xr-x  18 test_user  staff       576 29 avr 11:41 platform-tools

/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
-rw-r--r--  1 test_user  staff  314 29 avr 11:41 config.json

/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

G. 자주 묻는 질문 (FAQ)

기기가 기기 목록에 나타나지 않습니다

USB를 통해 연결된 물리적 기기를 사용하는 경우, 개발자 모드와 USB 디버깅이 활성화되어 있는지 확인하세요.

가상 기기를 사용하는 경우 /splash.html로 이동하여 Device Manager를 선택한 후 Connect over TCP ...를 클릭하고 지시를 따르세요. 기기의 IP 주소를 모르는 경우 automatic configuration 체크박스를 선택하여 Dexcalibur가 자동으로 감지하도록 하세요.

USB 디버깅이 활성화되어 있지만 기기가 기기 목록에 나타나지 않습니다

  • USB를 연결/분리하고 컴퓨터가 허용되었는지 확인하세요.
  • 파일 전송을 선택하세요.

새 기기를 등록하는 이유는 무엇인가요?

대상 기기를 사용하려면 먼저 등록해야 합니다. 등록 중에 Dexcalibur는 기기 메타데이터를 수집하고 호환되는 버전의 Frida 서버를 푸시합니다.

이러한 메타데이터는 올바른 frida-server 및 frida-gadget 대상을 선택하는 데 사용됩니다.

내 기기가 Device Manager에 나열되지만 등록할 수 없습니다

기기 목록의 줄에 빨간색 느낌표 !가 나타나면, 데스크탑이 기기에서 허용되지 않은 것입니다. 아마도 확인이 필요할 것입니다.

기기가 DeviceManager에 나열되고 online 열이 선택되어 있으면 enroll을 클릭하세요.

G.1 내 기기가 Device Manager에 나열됩니다

기기가 DeviceManager에 나열되고 online 열이 선택되어 있으면 enroll을 클릭하세요.

물리적 기기 대신 에뮬레이터를 사용하려면 어떻게 해야 하나요?

버전 < v0.7의 Dexcalibur는 불완전한 ADB 출력 파싱으로 인해 에뮬레이트된 기기를 자동으로 감지하여 사용할 수 없었습니다.

버전 >= v0.7부터는 가상 기기가 실행 중인 상태에서 /splash.html로 이동하거나 탐색 모음에서 DEXCALIBUR를 클릭하세요. 왼쪽 메뉴에서 Device Manager 버튼을 클릭하고 배열 상단의 Refresh 버튼을 클릭하세요.

가상 기기의 ADB ID로 시작하는 행이 나타나야 합니다.

TCP를 통해 기기를 사용하려면 어떻게 해야 하나요?

먼저, 다른 대상 기기와 마찬가지로 등록해야 합니다.

TCP를 통해 새 기기를 추가하거나 등록된 기기를 TCP로 연결하려면 Connect over TCP ...를 클릭하세요.

기기가 이전에 등록된 적이 없다면, TCP를 통해 등록이 수행됩니다. 경우에 따라 TCP 연결이 USB보다 느릴 수 있으므로 등록 시간이 더 걸릴 수 있습니다.

기기가 USB를 통해 등록된 경우, 이 기기의 새로운 선호 전송 유형은 TCP가 됩니다.

dexcalibur에 기여하려면 어떻게 해야 하나요?

이 저장소에 풀 리퀘스트를 생성하거나 이슈를 생성하세요.

문서에 기여하려면 어떻게 해야 하나요?

dexcalibur-doc 저장소에 풀 리퀘스트를 생성하세요.

문서는 여기 (문서 웹사이트)와 여기 (위키)에서 확인할 수 있습니다.

H. 후원사

https://www.jetbrains.com/?from=dexcalibur
All Products 라이선스를 제공해주셨습니다 <3

I. 자료

현재 Dexcalibur에 대한 문서와 교육 자료는 거의 없습니다. CTF 챌린지에서 승리하거나 취약점을 찾기 위해 Dexcalibur를 성공적으로 사용하셨다면, 여러분의 경험을 공유해 주시기를 적극 권장합니다.

  • THCon 2020
  • SSTIC 2020
  • Pass the SALT 2019 슬라이드 (PDF)
  • Youtube : 데모
  • CLI 사용자 가이드
  • 사용자 가이드
  • 문제 해결
  • 스크린샷

J. Dexcalibur에 대해 글을 쓴 사람들

  • Awesome Frida
  • Awesome OpenSource Security
  • n0secure.org - PassTheSalt2019 J2
  • rootshell.be - PassTheSalt2019 Wrap Up
  • PentesterLand - the 5 hacking newsletter 61
  • Technology Knowledge Database
  • Xuanwu Lab Security
  • 모바일 Gitbook
  • 274 - AppsSec Ezine
  • ysh329 / Android 리버스 엔지니어링
도구 다운로드