The art of Unpacking 번역 - SecretOfSh의 블로그
The art of Unpacking 번역 - SecretOfSh의 블로그
The art of Unpacking 번역 - SecretOfSh의 블로그
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: