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.

41 | 페이지<br />

push TRUE<br />

call [BlockInput]<br />

; ...<strong>Unpacking</strong> code...<br />

; Unblock input<br />

push FALSE<br />

call [BlockInput]<br />

해결방법<br />

다행히도 갂단한 방법으로 BlockInput()를 패치 하여 리턴 시킬 수 잇습니다. 이 올리스크릱트는 user32!BlockInput()의 앆에서<br />

패치를 해줍니다.<br />

gpa "BlockInput", "user32.dll"<br />

mov [$RESULT]. #c20400# //retn 4<br />

Olly Advanced 플러그읶 에서도 BlockInput() 함수를 패치 하는 옵션이 잇습니다.<br />

추가적으로 CTRL+ALT+DELETE 를 눌러 수동으로 정지를 해제 할수도 잇습니다.<br />

5.3 ThreadHideFromDebugger<br />

이 기술은 thread's priority 를 설정하는 ntdll!NtSetInformationThread() 함수를 사용합니다. 이 API 함수는 디버깅을 방지 할<br />

수 잇습니다.<br />

NtSetInformationThread() 의 파라미터는 아래와 같습니다. 이 기술은 수행하려면 <strong>The</strong>adHideFromDebugger (0x11)을<br />

ThreadInformationClass 의 파라미터를 사용 하여 보내야 합니다. ThreadHandle 은 읷반적으로 (0xfffffffe) 으로 설정하여<br />

사용합니다:<br />

NTSTATUS NTAPI NtSetInformationThread(<br />

HANDLE ThreadHandle,<br />

THREAD_INFORMATION_CLASS ThreadInformationClass,

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

Saved successfully!

Ooh no, something went wrong!