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.
53 | 페이지<br />
004011E9 MOV ECX,EBP<br />
004011EB DAS<br />
004011EC DAA<br />
004011ED AND DWORD PTR DS:[EBX+58BA76D7],ECX<br />
6.5 API Redirection<br />
API 리다이렉션은 리버서들이 보호된 프로그램의 임포트 테이블을 쉽게 리빌딩 하는 것을 방지 하기 위한 기술입니다.<br />
오리지날 임포트 테이블은 파괴되고 할당된 메모리 앆에 불러온 리다이렉트되는 API 들의 루틴들이 존재합니다. 이 루틴들은<br />
API 를 불러올 때 사용됩니다.<br />
이 예제에서는 kernel32!CopyFileA() 함수를 불러옵니다:<br />
00404F05 LEA EDI,DWORD PTR SS:[EBP-20C]<br />
00404F0B PUSH EDI<br />
00404F0C PUSH DWORD PTR SS:[EBP-210]<br />
00404F12 CALL <br />
call 대싞 JMP 를 사용하며 점프하는곳의 주소는 임포트 테이블을 참조합니다.<br />
004056B8 JMP DWORD PTR DS:[]<br />
그러나 ASProtect 패커가 리다이렉트한 kernel32!CopyFileA() 함수를 불러올 때 할당된 메모리에서 CALL 루틴으로 수정 되어<br />
kernel32!CopyFileA() 의 훔쳐짂 명령은 결국 가장중요한 실행이 됩니다.<br />
004056B8 CALL 00D90000<br />
아래 설명은 훔쳐짂 명령어가 어떻게 사용되는지 설명합니다. 처음 7 개의 명령어들은 kernel!CopyFileA() 코드에서 복사된<br />
것입니다. 그리고 코드앆의 0x7C83005E 을 콜 하는 부분 또 한 복사되었습니다. RETN 명령어를 통하여 kernel32.dll 앆의<br />
kernel32!CopyFileA() 루틴 중갂읶 0x7C830063 으로 갑니다: