디버그 이벤트의 종류에 대해서 검색하다가 알게 되었다.
수많은 악성코드가 존재 한다.
행위를 분석 할 때, 원본 바이너리를 얻기 힘든경우가 다수 있다.
위와 같은 이벤트를 이용한 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]
'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 |