본문 바로가기
반응형

Security/Windows System26

※Debug관련 API 개인적인 프로젝트를 진행하며 알게된 사실을 정리합니다. ※WaitForDebugEvent?- 디버기 프로세스에서 DebugEvent가 발생할때까지 기다림. 함수형태는 다음과 같습니다.BOOL WINAPI WaitForDebugEvent( _Out_ LPDEBUG_EVENT lpDebugEvent, //발생되는 이벤트는 이곳으로 나옴. _In_ DWORD dwMilliseconds // 기다리는 시간. ); - lpDebugEvent : 디버기이벤트 발생시 저장되는 이벤트데이터구조체 typedef struct _DEBUG_EVENT { DWORD dwDebugEventCode; DWORD dwProcessId; DWORD dwThreadId; union { EXCEPTION_DEBUG_INFO Except.. 2018. 3. 2.
IO_STACK_LOCATION란? ※ IO_STACK_LOCATION란?- IO_STACK_LOCATION는 계층화된 드라이버에서 IRP를 각계층에 맞게 관리 및 동작을 위해 만들어진 구조체. (라고 이해함 보다 정확한 설명을 위해 msdn형님은 "The I/O manager gives each driver in a chain of layered drivers an I/O stack location for every IRP that it sets up. "라고 설명하고 있음... ) 구조체의 생김새는 다음과 주요 필드에 대한설명은 같습니다. typedef struct _IO_STACK_LOCATION { UCHAR MajorFunction; UCHAR MinorFunction; UCHAR Flags; UCHAR Control; union.. 2018. 2. 3.
※CONTEXT 정리 CONTEXT는 말그대로 문맥인데 특정 Thread의 레지스터 정보를 담고 있다.처음에 접근하게 된 계기는 인젝션기법중 Process hollowing라는 기법이 있는데 Context구조체를 사용하기 때문에 정리를 위해 글을 작성했습니다. 아무튼! 해당 인젝션 기법은 다음의 API들을 사용합니다. ※Injection기법 사용API 1) NtUnmapViewOfSection 2) NtReadVirtualMemory 3) NtWriteVirtualMemory 4) NtGetContextThread 5) NtSetContextThread 6) NtResumeThread 위 API중 SetContext와 GetConxtThread의 형태는 다음과 같다.BOOL WINAPI GetThreadContext( _In.. 2017. 12. 6.
※SEH(Structed Exception Handler)란? . ※SEH(Structed Exception Handler)란? Windows에서 제공하는 예외처리 시스템. ※예외처리방법 프로그램 실행중 예외가 발생할 경우 발생한 예외처리는 해당 프로세스에게 맡기며 별도의 SEH가 존재하지 않으면 Windows에서 처리합니다. 그러나 디버깅중에는 Windows는 예외처리를 디버거에게 맡긴다. 이를 이용하여 안티디버깅이 가능합니다. ※안티디버깅 코드 디버깅중에 예외처리를 디버거에서 맡는다는 특징을 이용하여 안티디버깅 코드를 작성해 보았습니다. 올리디버거로 디버깅결과, 예외처리를 디버거에서 처리하기때문에 프로세스의 예외처리루틴이 동작하지 않아 "정상 작동중!"이 출력과 debugflag가 TRUE로 변환되지 않는 것을 볼 수 있습니다. ※SEH Chain 예외처리 루틴.. 2017. 8. 23.
반응형