본문 바로가기

PE text 섹션 속성에 따른 VirtualQuery PE파일에서 .text 섹션의 파일 상에서 이렇게 저렇게 바꾸면서 VirtualQuery 로 해당 섹션이 메모리에 올라왔을 때 메모리 속성을 정리하겠습니다. ( 순전히 저만의 테스트 용도 ) 많이 사용되는 속성들만 정리를 하겠습니다. 속성의 값이 많아 모든 조합을 다 해버리면 개수가 ㅎㄷㄷ.. Section Header의 Characteristics 의 값 => MEMORY_BASIC_INFORMATION 구조체 값 MEMORY_BASIC_INFORMAITON 구조체에는 - AllocationProtect - Protect - State - Type 순으로 적었습니다. Characteristics Section attribute in file Section attribute in memory(MEMORY.. 더보기
Windows 32bit/64bit 어플리케이션 간 통신 시 주의할 점 Windows 64bit OS에서 IPC를 사용해 프로세스간 통신을 하고 있었습니다.IPC 서버는 64bit 프로세스 하나만 존재하며 열린 IPC로 메시지를 전송하는 클라이언트는 32bit/64bit 둘다 있습니다. 그리고 전송되는 메시지 구조체는 다음과 같습니다. ( 예를 든 것입니다 )( 32bit/64bit 프로그램에 정의 된 구조체 형태는 같습니다 ) typedef struct _TEST {ULONG ulNum;ULONG_PTR ulptrNum;BOOL bStatus;} TEST; 딱 봐도 평범해보입니다. 32bit 프로세스에서 IPC 서버로 메시지를 보내기 전 다음과 같이 구조체가 채워져있다고 가정하겠습니다. -----------0xaaaaaaaa ; 구조체 주변 다른 지역변수 값--------.. 더보기
Windows DEP Exception 모니터링 특정 프로그램이 작동하고 있을 때 Windows DEP에 의해서 데이터 영역 같은 곳에서 실행이 막힌 경우Access violation 예외가 발생하게 됩니다. 이 예외 정보를 가져와 처리를 해야하는데 어떠한 함수를 후킹해야 할까 디버깅 해보니 알 수 있었습니다. 윈도우에서는 예외를 발생시킬 때 ZwRaiseException 함수를 사용하는데요. 이 함수만 후킹해서 핸들러에서 적절히 인자 값 보고 판단만 해주면 끝납니다.( 과연? ) NTSTATUS ZwRaiseException( IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT ContextRecord, IN BOOLEAN FirstChance ); 함수 원형입니다. ContextRecord 에는 예외가 발생하기.. 더보기