첨듣;;
c에 예외처리가있나요?
머출갤(112.159)
2015-07-05 19:56
추천 0
댓글 6
다른 게시글
-
대기업 IT 부서에서 일하는 신입인데 상담점... [4]ㅇㄹㄱ(182.227) | 15.07.05추천 0
-
C언어 초보가 질문드립니다 {,}이 이해가 안가요 [5]♥히로세스..(jndiana) | 15.07.05추천 0
-
최민의 시사만평에어로홍(aerohong) | 15.07.05추천 0
-
자바 추상화 다형성 상속성 [4]머출갤(112.159) | 15.07.05추천 0
-
퍼즐 버블 플래시 게임 디컴파일해서 수정하다가 [3]ㅅㅅㅅ(221.145) | 15.07.05추천 0
-
비주얼에서 gcc의 __WINDOWS__에 해당하는 키워드가뭐냐? [2]익명(175.223) | 15.07.05추천 0
-
와 어젠가 mastering regular expressions 빨았는ㄷ [3]codingmon(codingmon) | 15.07.05추천 0
-
컴퓨터 언어 독학 하는데 얼마나 걸림? [3]질문.(61.83) | 15.07.05추천 0
-
플밍 문법때고 네트워크 들어가야대냐? [2]ㅇㄴㅇㄴ(110.70) | 15.07.05추천 0
-
비전공자가 인공지능 수업들어가면 영혼까지털리냐? [2]ㅋㄹ(112.159) | 15.07.05추천 0
Visual C++ 한정으로 SEH(구조화 예외 처리) 기능이 존재. 이건 0으로 나누기와 같은 예외 상황을 캐치하기 위한 기능으로 __try ~ __except 블록을 씀. __try { ... } __except(EXCEPTION_EXECUTE_HANDLER) { ... } 식으로. Visual C++에서는 C++의 try ~ catch 블록이 내부적으로 __try ~ __except 블록으로 구현된다고 함. 리버싱해 보면 확인할 수 있음.
예외를 발생시키는 건 Win32 API인 RaiseException API를 이용하면 됨.
근데 리눅스 환경이면 저건 쓸 수 없고 대신 Process Signaling을 쓸 수 있겠지. signal() 함수로.
내가 머릿속으로만 실제로 구현은 안해보고 구상 중이기만 하는 것 중에. 윈도우 디버깅 API 안 쓰고 돌아가는 디버거 구현하는 아이디어가 있는데(Anti Debugger 트릭들을 모두 우회하기 위해서) 그 원리가 UnhandledExceptionFilter 기능하고 예외를 고의로 발생시키는 코드를 이용한 거임. SEH Handler에 레지스터 스택들 다 넘어오고 그 값 조작하면 그대로 레지스터 값도 바뀌니깐. 디버깅 API 안 쓰고도 Exception Filter로 디버거 만들 수 있을 듯.
누군가setjmp/longjmp같은거이야기하면서있다고하는사람나올지도모르겠다능
그렇군요 잇엇군요 감사합니당^^