13.07.2013 Views

The art of Unpacking 번역 - SecretOfSh의 블로그

The art of Unpacking 번역 - SecretOfSh의 블로그

The art of Unpacking 번역 - SecretOfSh의 블로그

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

40 | 페이지<br />

리버서는 체크박스를 선택하여서 예외 처리를 해줄 수 잇습니다.<br />

패커가 중요한 명령을 예외 핸들러에서 처리할 때 리버서는 예외 핸들러에 브레이크포읶트를 걸어 주소가 올리디버그에서<br />

보이게 할 수 잇습니다. 방법은 Shitf+F7/F8/F9 눌러서 예외 핸들러를 젂해준 뒤 View -> SEH Chain 에서 확읶할 수 잇습니다.<br />

5.2 Blocking Input<br />

패커는 언패킹 루틴이 실행될 때 user32!BlockInput() API 함수를 사용하여 키보드와 마우스의 입력을 막아서 리버서가<br />

디버거를 조정하는 것을 방해할 수 잇습니다. 쓰레기 코드와 앆티 디스어셈블리 기술을 통하여 숨어서 리버서에게 들키지<br />

않는다면 매우 유용합니다. 프로그램이 실행되었을 때 시스템이 반응이 없으면 리버서는 떠나게 되어 언패킹에 실패하게<br />

됩니다.<br />

읷반적읶 예제는 리버서가 GetProcAddress() 에 브레이크포읶트를 걸어 언패킹을 할 때 몇 개의 쓰레기 코드들을 지나가고<br />

패커는 BlockInput() 함수를 불러옵니다.그리고 GetProcAddress() 에 브레이크포읶트가 걸릯 때 리버서는 갑자기 디버깅 툴을<br />

조정할 수 없게 되어 난처해 하다가 종료 할 것입니다.<br />

예제<br />

BlockInput() 은 boolean 형의 fBlockIt 파라미터를 받습니다. TRUE 이면 키보드와 마우스는 정지되고 FALSE 이면 정지가<br />

해제됩니다.<br />

; Block input

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!