본문 바로가기

reversing/rootkit

Debug Principle[디버거 구조와 원리] : 디버그 이벤트

SMALL

디버그 이벤트의 종류에 대해서 검색하다가 알게 되었다.

수많은 악성코드가 존재 한다.

행위를 분석 할 때, 원본 바이너리를 얻기 힘든경우가 다수 있다.

위와 같은 이벤트를 이용한 bp를 잘 걸고 분석하면 좀 더 수월하게 할 수있을것 같다.

EX) 새로운  DLL이 로드 될 때, Injection 탐지 유용?

     통신을 위한 Thread를 생성 되었을 때 

언패킹 할 때, 메모리에 풀리는 데이터를 감지 할 때는 메모리 bp

etc ...


1. CREATE_PROCESS_DEBUG_EVENT : 프로세스가 생성되었을 때 발생
2. EXIT_PROCESS_DEBUG_EVENT : 프로세스가 종료되었을 때 발생
3. CREATE_THREAD_DEBUG_EVENT : 스레드가 생성되었을 때 발생
4. EXIT_THREAD_DEBUG_EVENT : 스레드가 종료되었을 때 발생
5. LOAD_DLL_DEBUG_EVENT : DLL 로드되었을 때 발생
6. UNLOAD_DLL_DEBUG_EVENT : DLL 언로드되었을 때 발생
7. EXCEPTION_DEBUG_EVENT : 예외 이벤트 발생
    - EXCEPTION_BREAKPOINT : INT3(0xCC) 브레이크 포인트 발생
    - EXCEPTION_SINGLE_STEP : TRAP((eflags & 0x100) == TRUE)
8. OUTPUT_DEBUG_STRING_EVENT : OutputDebugString() 함수 호출시 발생


출처 [http://egloos.zum.com/jbjempire/v/1413336]

LIST

'reversing > rootkit' 카테고리의 다른 글

장치 노드[Device node], 장치 개체[Device Object] 개념  (0) 2016.08.07
Driver 개념  (0) 2016.08.02
Anti Disassembly[안티 디스어셈블]  (0) 2016.08.01
요구 페이지 처리[Demanding Page]  (0) 2016.07.29
함수 프롤로그  (0) 2016.03.29