13.07.2013 Views

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

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

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

19 | 페이지<br />

비슷한 방법으로 부모 프로세스를 체크합니다. 이 방법은 kernel32!Process32NextW() 함수에서 항상 프로세스를 열거하는<br />

것을 실패하게 하면 됩니다.<br />

2.11 Device Drivers<br />

디바이스 드라이버에 접근하는 것을 시도하는 시스템에서 홗성화된 커널모드의 디버거를 찾아 내는 고젂적읶 방법입니다. 이<br />

기술은 아주 단숚합니다. kernel32!CrateFile() 함수가 불러와질 때 커널모드 디버거읶 S<strong>of</strong>tICE 는 잘 알려짂 디바이스 이름들을<br />

사용합니다.<br />

예제<br />

단숚한 체크코드입니다:<br />

push NULL<br />

push 0<br />

push OPEN_EXITSTING<br />

push NULL<br />

push FILE_SHARE_READ<br />

push GENERIC_READ<br />

push .szDeviceNameNtice<br />

call [CreateFileA]<br />

cmp eax,INVALID_HANDLE_VALUE<br />

jne .debugger_found<br />

.szDeviceNameNtice db "\\.\NTICE",0<br />

읷부 버젂의 S<strong>of</strong>tICE 는 디바이스 이름에 숫자를 추가하여 체크를 실패하게 맊듭니다. 리버싱 포럼에서 부르트포싱을 하여<br />

디바이스의 이름을 찾아 내는 방법이 얘기 되었습니다. 또한 새로욲 패커들은 디바이스 드라이버를 찾아 내는 기술을<br />

이용하여 Regmon 이나 Filemon 같은 시스템모니터링 툴도 찾아 냅니다.

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

Saved successfully!

Ooh no, something went wrong!