메모장 입니다2
Windows] SEH - 예외 종류 본문
0. 디버깅 중 자주 접하는 예외 목록.
-EXCEPTION_ACCESS_VIOLATION(0xC0000005)
:존재하지 않거나 접근 권한이 없는 메모리 영억에 대해서 접근.
ex) MOV DWORD PTR DS:[0], 1
> 메모리 주소 0은 할당된 영역이 아님.
ADD DWORD DS:[401000], 1
> .text 섹션의 시작주소 [401000]은 write 불가능(read 속성만 가짐)
XOR DWORD PTR DS:[80000000], 1234
> Kernel 영역인 [80000000]는 user모드에서 접근 불가능.
-EXCEPTION_BREAKPOINT(0x80000003)
:CPU가 BP 명령어(INT3:0xCC)를 실행할 때 발생되는 예외.
> 디버거는 이 예외를 이용하여 BP 기능을 제공.
/* 일반 실행으로 BP 명령어를 만날 경우,
위 예외가 발생한 뒤 OS의 기본 예외처리기에 의해 프로세스가 종료됨.
> 시스템 레지스트리에 기본 디버거를 설정했다면,
해당 디버거에 위 예외가 발생한 프로세스를 Attach 시켜줌. */
-EXCEPTION_ILLEGAL_INSTRUCTION(0xC000001D)
:CPU가 해석할 수 없는 Instruction을 만날 때 발생.
-EXCEPTION_INT_DIVIDE_BY_ZERO(0xC0000094)
:INTEGER(정수) 나눗셈 연산에서, 0으로 나누는 경우 발생.
-EXCEPTION_SINGLE_STEP(0x80000004)
:CPU가 싱글스텝 모드로 전환되면, 명령어를 하나 실행할 때마다 위 예외 발생 후 멈춤.
> 변경하려면 EFLAGS 레지스터의 TF 비트를 1로 셋팅.
'Study > 리버싱' 카테고리의 다른 글
세그먼트/플래그 레지스터 (0) | 2017.08.08 |
---|---|
Windows] SEH (0) | 2017.08.08 |
Windows] PEB (0) | 2017.08.08 |
QR Code (0) | 2017.08.08 |
Windows] TLS 콜백함수 - 실습 (0) | 2017.08.08 |