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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dex-oracle — 패턴 기반 Dalvik 디오브퓨케이터로, 제한된 실행을 사용하여 의미론적 분석을 개선합니다. | Kitploit
도구/GitHubGitHub/calebfenton/dex-oracle
Android SecurityReverse EngineeringMalware AnalysisBinary Analysis
GitHubcalebfenton/dex-oracle

dex-oracle

패턴 기반 Dalvik 디오브퓨케이터로, 제한된 실행을 사용하여 의미론적 분석을 개선합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Oracle

패턴 기반 Dalvik 난독화 해제 도구로, 제한된 실행을 사용하여 의미 분석을 개선합니다. 또한 다른 Android 난독화 해제 도구인 Simplify에 영감을 주었습니다.

Gem Version Code Climate Test Coverage

전 전

후 후

sha1: a68d5d2da7550d35f7dbefc21b7deebe3f4005f3

md5: 2dd2eeeda08ac8c15be8a9f2d01adbe8

설치

1단계: Smali / Baksmali 설치

당신은 정예 Android 리버서이므로 이미 Smali와 Baksmali가 경로에 있을 것이라고 확신합니다. 만약 어떤 이상한 이유로 아직 설치되지 않았다면, 다음 명령어로 시작할 수 있지만 실행하기 전에 주의 깊게 확인하세요:

root@kitploit:~
mkdir ~/bin || cd ~/bin
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali-2.2.5.jar && mv smali-*.jar smali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.2.5.jar && mv baksmali-*.jar baksmali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali
chmod +x ./smali ./baksmali
export PATH=$PATH:$PWD

2단계: Android SDK / ADB 설치

adb가 경로에 있는지 확인하세요.

3단계: Gem 설치

root@kitploit:~
gem install dex-oracle

또는, 소스에서 빌드하려면:

root@kitploit:~
git clone https://github.com/CalebFenton/dex-oracle.git
cd dex-oracle
gem install bundler
bundle install

4단계: 기기 또는 에뮬레이터 연결

Oracle이 작동하려면 에뮬레이터가 실행 중이거나 기기가 연결되어 있어야 합니다. 최소 요구 Android 버전은 5.0입니다!

Oracle은 활성 Android 시스템에서 메서드를 실행해야 합니다. 이는 기기 또는 에뮬레이터(권장)에서 가능합니다. 기기를 사용하는 경우, 잠재적으로 적대적인 코드를 실행해도 괜찮은지 확인하세요.

에뮬레이터를 사용하고 싶고 Android SDK가 이미 설치되어 있다면, 다음 명령어로 에뮬레이터 이미지를 생성하고 시작할 수 있습니다:

root@kitploit:~
android avd

사용법

root@kitploit:~
Usage: dex-oracle [opts] <APK / DEX / Smali Directory>
    -h, --help                       Display this screen
    -s ANDROID_SERIAL,               Device ID for driver execution, default=""
        --specific-device
    -t, --timeout N                  ADB command execution timeout in seconds, default="120"
    -i, --include PATTERN            Only optimize methods and classes matching the pattern, e.g. Ldune;->melange\(\)V
    -e, --exclude PATTERN            Exclude these types from optimization; including overrides
        --disable-plugins STRING[,STRING]*
                                     Disable plugins, e.g. stringdecryptor,unreflector
        --list-plugins               List available plugins
    -v, --verbose                    Be verbose
    -V, --vverbose                   Be very verbose

예를 들어, obad.apk라는 APK 안에 있는 Lcom/android/system/admin/CCOIoll; 클래스의 메서드만 디오브퓨스케이트하려면:

root@kitploit:~
dex-oracle -i com/android/system/admin/CCOIoll obad.apk

작동 방식

Oracle은 Android 앱(APK), Dalvik 실행 파일(DEX), Smali 파일을 입력으로 받습니다. 먼저, 입력이 APK 또는 DEX인 경우, Smali 파일로 디스어셈블됩니다. 그런 다음, Smali 파일은 분석 및 수정을 수행하는 다양한 플러그인에 전달됩니다. 플러그인은 더 읽기 쉬운 형태로 변환할 수 있는 패턴을 검색합니다. 코드가 무엇을 하는지 이해하기 위해 일부 Dalvik 메서드가 실제로 실행되고 출력이 수집됩니다. 이렇게 하면 일부 메서드 호출을 상수로 대체할 수 있습니다. 그 후, 모든 Smali 파일이 업데이트됩니다. 마지막으로, 입력이 APK 또는 DEX 파일이었다면, 수정된 Smali 파일이 다시 컴파일되어 업데이트된 APK 또는 DEX가 생성됩니다.

메서드 실행은 Driver에 의해 수행됩니다. 입력 APK, DEX 또는 Smali는 dexmerge를 사용하여 Driver와 결합되어 단일 DEX가 되고, 기기 또는 에뮬레이터로 푸시됩니다. 플러그인은 Driver를 사용할 수 있으며, Driver는 Java 리플렉션을 사용하여 입력 DEX의 메서드를 실행합니다. 반환 값은 단순한 패턴 인식을 넘어서 의미 분석을 개선하는 데 사용될 수 있습니다. 이는 일반적으로 암호화된 문자열이나 바이트 배열을 입력으로 받는 많은 문자열 복호화 메서드에 특히 유용합니다. 한 가지 제한 사항은 실행이 정적 메서드로 제한된다는 것입니다.

해킹

나만의 플러그인 만들기

Oracle에 포함된 세 가지 플러그인이 있습니다:

  1. Undexguard - 특정 유형의 Dexguard 난독화를 제거합니다.
  2. Unreflector - 일부 Java 리플렉션을 제거합니다.
  3. String Decryptor - 일반적인 문자열 암호화 유형을 제거하는 간단한 플러그인입니다.

새로운 유형의 난독화를 발견한 경우 Oracle로 디오브퓨스케이트하는 것이 가능할 수 있습니다. Smali를 살펴보고 코드가 1. 재배열될 수 있는지, 2. 일부 정적 메서드를 실행하여 이해될 수 있는지 파악하세요. 이 두 경우 중 하나에 해당한다면, 자신만의 플러그인을 작성해 보세요. 자신만의 플러그인을 만드는 네 가지 단계가 있습니다:

  1. Smali 패턴 식별
  2. 패턴을 단순화하는 방법 파악
  3. Driver와 상호작용하고 메서드를 호출하는 방법 파악
  4. 수정 사항을 직접 적용하는 방법 파악

포함된 플러그인은 3단계와 4단계를 이해하는 좋은 안내서가 될 것입니다. Driver는 2단계를 돕기 위해 설계되었습니다. 물론, 발견한 난독화를 언제든지 공유해 주시면 누군가가 결국 처리할 수도 있습니다.

Driver 업데이트

먼저, dx가 경로에 있는지 확인하세요. 이는 Android SDK의 일부이지만, 당신이 하드코어하지 않다면 경로에 없을 것입니다.

driver 폴더는 Gradle로 관리되는 Java 프로젝트입니다. Eclipse, IntelliJ 등에 가져와서 원하는 대로 변경하세요. Driver 업데이트를 완료하려면 ./update_driver를 실행하세요. 이렇게 하면 Driver가 다시 빌드되고 출력 JAR이 DEX로 변환됩니다.

문제 해결

에뮬레이터나 기기에서 Driver 코드를 실행하는 데 문제가 있으면 monitor(Android SDK의 일부)를 열어서 단서가 있는지 확인하세요. 오류가 이해되지 않더라도, 생성할 이슈와 함께 게시하면 도움이 됩니다.

모든 Android 플랫폼이 dex-oracle과 잘 작동하는 것은 아닙니다. 일부는 임의의 DEX 파일을 실행하려고 할 때 제대로 작동하지 않습니다. Segfaults 또는 Driver 충돌 문제가 있다면 ARM과 함께 Android 4.4.2 API 레벨 19를 사용해 보세요.

플러그인이 난독화라고 생각하는 패턴을 발견했지만 실제로는 실행해서는 안 되는 코드일 가능성이 있습니다. 난독화 패턴이 매우 특이하기 때문에 가능성은 낮지만, 가능합니다. 특정 플러그인이 문제를 일으키고 있고 앱이 해당 난독화 프로그램으로 보호되지 않는다고 확신하는 경우, 즉 앱이 DexGuarded가 아닌데 DexGuard 플러그인이 무언가를 실행하려고 한다면, 그냥 비활성화하세요.

추가 정보

  1. TetCon 2016 - Android 난독화 해제
  2. dex-oracle을 사용한 Android 악성코드 난독화 해제 해킹
도구 다운로드