x86에서는 핸들러를 다음 세 가지 명령어로 등록하기 만하면됩니다.Windows의 x86-64 아키텍처에서 구조적 예외 핸들러를 어셈블리에 등록하려면 어떻게해야합니까?
push addrOfExceptionHandler
push dword [fs:0]
mov [fs:0],esp
하지만 64 비트 Windows에서는 작동하지 않습니다.
x64 예외 처리기가 테이블 기반이고 Visual C++의 __try
및 __except
블록이 예외 디렉토리에 하드 연결되어 있음을 읽었습니다. 이것은 Microsoft가이 오래된 방법을 완전히 삭제했음을 의미합니까? 코드에서 프로그래밍 방식으로 핸들러를 등록하는 방법이 있습니까?
아마도 [AddVectoredExceptionHandler] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms679274.aspx) 함수를 찾고 계십니까? – Jester
예, 사라졌습니다. 악성 코드에서도 악용되었습니다. SAFESEH는 큰 주제이며, "ml64 예외 처리"를 검색하여 도움을 얻습니다. –