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.

9 | 페 이 지<br />

; using ntdll!NtQueryInformationProcess(ProcessDebugPort)<br />

lea eax,[.dwReturnLen]<br />

push eax ;Returnlength<br />

push 4 ;ProcessInformationLength<br />

lea eax,[.dwDebugPort]<br />

push eax ;ProcessInformation<br />

push ProcessDebugPort ;ProcessInformationClass (7)<br />

push 0xffffffff ;ProcessHandle<br />

call [NtQueryInformationProcess]<br />

cmp dword [.dwDebugPort],0<br />

jne .debugger_found<br />

해결방법<br />

한가지 방법은 NtQueryInformationProcess() 함수가 리턴 되는 곳 에서 브레이크포읶트를 설정하여 브레이크포읶트가 작동할<br />

때 ProcessInformation 은 DWORD 값을 0 으로 패치 합니다. 아래는 자동으로 작동하는 올리스크릱트의 예제입니다.<br />

var bp_NtQueryInformationProcess<br />

// set a breakpoint handler<br />

eob bp_handler_NtQueryInformationProcess<br />

// set a breakpoint where NtQueryInformationProcess returns<br />

qpa "NtQueryInformationProcess", "ntdll.dll"<br />

find $RESULT, #c21400# //retn 14<br />

mov bp_NtQueryInformationProcess,$RESULT<br />

bphws bp_NtQueryInformationProcess,"x"<br />

run<br />

bp_handler_NyQueryInformationProcess:

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

Saved successfully!

Ooh no, something went wrong!