질문1. 모든 실행 프로그램안에는 __do_global_dtors()라는 함수가 있습니다.
이 함수는 소멸자로서 dtors섹션+4 번째 있는 메모리주소에 0이 아닌값이 있을 경우 함수로 실행을 시킵니다.
프로그램 자체에서 소멸자함수를 호출하지 않을 경우 dtros + 4번째 메모리값은 0이 기본으로 되어있습니다.
FSB로 dtors+4번째 있는 값을 쉘코드 주소로 바꿀경우 실행이 되는 이유가 이것때문입니다.
직접 눈으로 보고 싶으실 경우
아무 실행 파일이나 gdb로 실행한 후
disas __do_global_dtors 라고 쳐보시면 아실겁니다. ^^
'System Hacking > 정리' 카테고리의 다른 글
리눅스 보호 기법 확인 (0) | 2015.11.25 |
---|---|
IDA 리모트 디버깅 설정 (0) | 2015.11.11 |
FSB 소멸자 주소가 아닌 ret주소를 이용한 공격 (0) | 2015.11.10 |
/proc/pid/maps (0) | 2015.11.09 |
; cat 을 쓰는 이유 (0) | 2015.11.03 |