ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
ìê° ê¸°ë° í¤ ìì± ë°©ìì ì´ì©í ìí° ëë²ê¹ ê¸°ë² - SERSC
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
보안공학연구논문지 (Journal of Security Engineering), 제 10권 제 3호 2013년 6월<br />
를 이용해서 암호화된 를 복호화시킨다( ). 만약 코드 영역 a가 변조<br />
되었다면 복호화 키 a의 해시 값이 달라져 올바르지 못한 키 값이 생성된다. 올바르지 못한 키 값<br />
으로 복호화 되었을 경우 잘못된 데이터로 변조 되고 오류를 일으킨다. 복호화 과정이 올바르게<br />
진행 되면 원본 영역 b가 나올 것이고 코드 영역 b를 실행 시킨 후 다시 암호화하여 저장 한다<br />
( ).<br />
2.3 명령어 자가 변조 기법<br />
코드가 역어셈블러 되더라고 분석을 어렵게 하기 위해 원본 명령어 셋을 위장 명령어 셋으로<br />
변화하는 방식이다.<br />
[그림 2] 명령어 자가 변조<br />
[Fig. 2] camouflage instruction<br />
노출되고 싶지 않은 보호하려는 대상 명령어 셋을 설정한다. 보호하려는 대상 명령어 셋을 임의<br />
의 다른 명령어 셋으로 변환한다. [그림 2]의 원본 명령어 셋 cmpl과 jne를 movl과 call로 변환하<br />
였다. 실제 실행될 때 원본 명령어 셋이 실행되기 위해서 복원 루틴을 삽입하고 복원 루틴이 실행<br />
되고 원본 명령어 셋이 실행 된 후에 메모리에 원본 명령어 셋이 그대로 남아있기 때문에 은닉 루<br />
틴을 삽입하여 위장 명령어 셋으로 다시 변환한다.<br />
실행될 때는 목표 블록의 시간을 측정해서 실행 시간이 유효 범위 내에 있으면 복원 루틴을 실<br />
행시켜 원본 명령어 셋이 나오게 하고 원본 명령어 셋을 실행 시킨 후 다시 은닉 루틴을 통해 명<br />
령어 셋을 다시 위장시킨다. 만약 실행 시간이 유효 범위 밖이면 위장된 명령어 셋이 실행되어서<br />
잘못된 명령어로 인한 오류가 발생한다.<br />
295