콘텐츠로 이동

ScyllaHide - 유저모드 안티-안티-디버그 치트시트

ScyllaHide - 유저모드 안티-안티-디버그 치트시트

ScyllaHide는 고급 오픈소스 유저모드 안티-안티-디버그 라이브러리다 (Windows, x86/x64). 멀웨어와 상용 패커는 잘 알려진 API 호출과 플래그 세트를 통해 디버거를 감지한다; ScyllaHide는 해당 함수를 훅하여 “디버거가 없다”고 반환하므로 분석가가 보호된 코드를 디버깅할 때 회피를 트리거하지 않는다. x64dbg, IDA, OllyDbg의 플러그인으로 제공되며, 대상에 주입하여 독립 실행형으로도 실행할 수 있다.

승인된 멀웨어 분석 및 소프트웨어 연구에만 해당. ScyllaHide는 방어 연구 도구다; 분석할 권한이 있는 샘플과 소프트웨어에만 사용하라.

설치

방법방법
x64dbg플러그인 DLL을 x64dbg/plugins/에 드롭
IDAIDA 플러그인을 IDA의 plugins/ 폴더로 복사
Standalone (injector)InjectorCLIx64.exe / InjectorGUI.exe 사용
소스x64dbg/ScyllaHide 리포지토리에서 빌드
확인디버거의 플러그인 메뉴 표시

숨기는 것

기술ScyllaHide가 대응
IsDebuggerPresentfalse 반환
CheckRemoteDebuggerPresent디버거 없음 보고
PEB BeingDebugged 플래그제거됨
NtGlobalFlag정규화됨
NtQueryInformationProcessProcessDebugPort/Flags 스푸핑
Heap 플래그정규화됨
NtSetInformationThread (HideFromDebugger)차단됨
타이밍 체크 (GetTickCount, rdtsc)선택적 완화
OutputDebugString / 하드웨어 중단점처리됨/숨겨짐

플러그인 사용 (x64dbg)

단계작업
타겟 열기x64dbg에서 패킹됨/보호된 바이너리 로드
옵션Plugins → ScyllaHide → Options
프로필 선택훅 프로필 선택 또는 조정
훅 첨부안티-디버그 체크를 통과하기 전에 활성화
실행계속 실행; 체크가 이제 통과

프로필

프로필사용
사전 설정된 템플릿일반적인 패커 (예: VMProtect, Themida 스타일)
사용자 정의까다로운 타겟을 위해 개별 훅 토글
저장/로드샘플/패커당 프로필 유지

Standalone 주입

# 이미 실행 중인 (또는 생성된) 프로세스에 ScyllaHide 주입
InjectorCLIx64.exe <pid|path> HookLibraryx64.dll <profile>
옵션목적
Spawn vs attachScyllaHide 아래에서 타겟 시작 또는 나중에 첨부
Hook library훅을 설치하는 DLL
Profile적용할 안티-디버그 훅

전형적인 언팩 워크플로우

ScyllaHide는 일반적으로 그의 형제 도구와 함께 언팩 도구 키트의 한 부분이다.

도구역할
ScyllaHideOEP에 도달하기 위해 실행할 수 있도록 안티-디버그 무효화
x64dbg원래 진입점 디버그 및 도달
Scylla가져오기 주소 테이블 재구성, PE 덤프
Detect It Easy패커 식별 / 언팩된 파일 확인
# 개념: 보호된 샘플 언팩
1. ScyllaHide가 활성화된 x64dbg에서 샘플 로드
2. 패커 스텁을 통과하여 OEP 실행 (안티-디버그 중립화됨)
3. 프로세스 덤프 및 Scylla로 IAT 재구성
4. Detect It Easy로 덤프 확인

ScyllaHide vs 관련 도구

측면ScyllaHideTitanHide수동 패칭
레이어Usermode 훅커널 모드 드라이버개별 체크 패치
범위광범위 API 세트커널 수준 은닉패치한 것만
설정플러그인/주입드라이버 설치지루함
최고일상적인 RE 디버깅더 깊은 은닉 필요일회성 체크

자료