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