완료됨
.rdata 설명에서
'아래는 .rdata 섹션에 포함되는 여러 데이터의 유형입니다. 주의 깊게 살펴봐야할 변수는 str_ptr입니다. str_ptr은 “readonly”라는 문자열을 가리키고 있는데, str_ptr은 전역 변수로서 .data에 위치하지만, “readonly”는 상수 문자열로 취급되어 .rdata에 위치합니다.'
const char data_rostr[] = "readonly_data";
char *str_ptr = "readonly"; // str_ptr은 .data, 문자열은 .rdata
int main() { ... }
여기에서 그러면 char *str_ptr = "readonly"; 은 .data 섹션에서도 존재하고 .rdata 에도 존재하나요?
#리버싱
#배경지식
작성자 정보
답변
2
wyv3rn
무플 방지 위원회장
넵 댓으로 적어주신게 맞습니다.
뭐야
대표 업적 없음
str_ptr[0] = 'c';
등으로 문자열 안에 문자 변경하면 문제 없이 동작하는데 .rdata
에 위치하는게 맞나요?
str_ptr = data_rostr; str_ptr[0] = 'c';
의 경우는 컴파일은 되는데 "readonly_data" 의 내용 변경하는 부분에서 실행 에러나는거로 봐서 .rdata
가 맞는 것 같은데 "readonly" 문자열은 쓰기가 되는거로 봐서 그냥 .data
에 있는게 아닌가 싶어서요.