사용자 도구

사이트 도구


kb:appverifier

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

kb:appverifier [2014/11/06 17:51] (현재)
줄 1: 줄 1:
 +====== AppVerifier ======
 +{{appverifier.gif?​500}}
 +
 +간단하게 설명하자면 [[http://​www.microsoft.com/​technet/​prodtechnol/​windows/​appcompatibility/​appverifier.mspx | AppVerifier]]는 윈도우즈 API를 후킹하여 그 파라미터를 검사해서 런타임 시에 발생하는 문제점을 미리 예측하게 해주는 툴이다. 코드 정적 분석과 실제 디버깅 중간 어디쯤에 위치하는 툴이라고 볼 수 있겠다.
 +
 +위 스크린샷에서도 볼 수 있듯이 API 사용 문제점 뿐만 아니라 호환성 문제 체크라던지,​ 보안 문제, 리소스 부족 상황 시뮬레이션 등도 해주는 고마운 프로그램이다. GUI 방식으로도 동작하지만,​ 진정한 가치는 커맨드 라인을 이용해 UnitTest의 일환으로 실행시키는데 있다고 나 혼자서 생각한다. -_-
 +
 +
 +====== 기본적인 사용법 ======
 +메뉴 구성이 간단하기 때문에 딱히 어려울 건 없다. 애플리케이션 항목에다 디버깅하고자 하는 프로그램을 추가하고,​ 우측의 메뉴에서 로그를 남길 이벤트(?​)들을 고른다. 그 다음 아래 쪽의 Save 버튼을 누른다. 그러면 해당 애플리케이션은 시작하자마자 디버그 브레이크가 걸린다. 그러므로 Visual Studio 혹은 WinDbg를 이용해 프로그램을 시작해야 한다. (그냥 시작해서 디버거 붙여도 되겠네) 네이티브 프로그램 말고도 되는 모양인데,​ 별로 해볼일이 없으므로 무시~
 +
 +프로그램에서 문제점이 발견되면 디버그 브레이크가 걸리면서 로그가 남게 된다. 로그는 View -> Logs 항목에서 볼 수 있다. XML 형식으로 문제점 설명 그리고 콜스택 정도가 남는다.
 +
 +
 +====== 문제점 ======
 +  * 힙 체크 기능 같은 경우 유저 메모리 블록 앞뒤에다 헤더를 붙이는 방식으로 동작한다. 이 헤더의 크기가 꽤 크기 때문에 메모리를 많이 할당하는 프로그램은 체크를 꺼버리지 않으면 정상적으로 동작하지 않을 수 있다. 히밤.
 +  * 설명문에도 나와있지만,​ 락 체크를 켜놓은 경우 access violation이 발생할 수 있다. 음...
 +
 +
 +====== 링크 ======
 +  * [[http://​www.microsoft.com/​technet/​prodtechnol/​windows/​appcompatibility/​appverifier.mspx | Microsoft Application Verifier]] \\ AppVerifier 다운로드
 +  * [[http://​technet.microsoft.com/​en-us/​library/​bb457063.aspx | Testing Applications with AppVerifier]] \\ 기본적인 소개
 +  * [[http://​talhatariq.wordpress.com/​2006/​08/​08/​runtime-unmanaged-code-analysis-for-software-and-security-testing-part-i/​ | Runtime Unmanaged Code Analysis for Software and Security Testing]] \\ AppVerifier를 이용해 네이티브 프로그램 테스트하기. 우왕ㅋ굳ㅋ
  
kb/appverifier.txt · 마지막으로 수정됨: 2014/11/06 17:51 (바깥 편집)