티스토리 뷰
구조체 초기화, 동적 할당 초기화 왜 처음만 할까?
구조체 및 동적 항당을 하여 사용하기 위해서 프로그래머들은 여러가지 방법을 사용한다.
하지만 결국 컴파일러가 모든 메모리를 초기화 시켜주는 옵션을 하지 않는 이상
::ZeroMemory(어디부터,어디까지), memset(어디부터,무엇으로,어디까지)을 사용하여 초기화를 하게 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
/******************************************************************************
* _ _ _ _ __ _____ _ _
*| | | | | | | |/ / | __ \ | | | |
*| |__| | __ _ ___ | |_ _| ' / | | | | _____ __ | | __ _| |__
*| __ |/ _` |/ _ \_ | | | | | < | | | |/ _ \ \ / / | | / _` | '_ \
*| | | | (_| | __/ |__| | |_| | . \ | |__| | __/\ V / | |___| (_| | |_) |
*|_| |_|\__,_|\___|\____/ \__,_|_|\_\ |_____/ \___| \_(_) |______\__,_|_.__/
*
* Copyright (c) HaeJuK Dev Lab All Rights Reserved.
*
*******************************************************************************/
struct Data
{
int nData1 ;
bool bData2;
};
Data *pData = new Data;
::ZeroMemory(pData ,sizeof(Data));
::memset(pData,0x0,sizeof(Data));
|
cs |
총평
이것은 프로그래머들이 하나의 규약과 같이 생각하는 방식이다.
OS에서는 메모리에 데이터를 포인터로 연결해 줄 때 해당 메모리가 어떻게 구성이 되어 있는지
신경을 쓰지 않는다.
다만 점유하고 있는지만 판단한다. 고로 쓰레깃값이 넘쳐난다.
여기까지는 프로그램을 배울 때 시험 문제 대략 20번 내외로 항상 나오는 말들이다.
그럼. 진짜 문제는 무엇일까? 요즘 다들 시큐어 코딩 하느라 힘들 것이다.
이것이 시큐어 코딩의 절대적 이자 가장 처음에 해야 할 일이다.
"사용한 메모리는 반환할 때도 깨끗이!!"
문명 메모리를 할당 받을 때는 쓰레깃값이 있을 수 있다고 했다!!
그럼 그 쓰레깃값은? 어디서 온 것일까?
바로 직전에 사용하였던 메모리 값들이다.
이것을 이해했다면 보안에 엄청난 걸림돌이 된다는. 느낌이 쫙~ 오지 않는가?
간단하게 말해서
비밀번호를 암호화한다고 하면 열심히 할당하고 암호화했다!!
그리고 반환을 한다.
크래커가 메모리 번지를 뒤지기 시작한다 !! 메모리에 이상한 배열들이 있다. 의심하기 시작한다.
둘 다 평문인데 하나는 길고 하나는 짧다!! "앗!" 비번이다." 이렇게 된다는 말이다.
그럼 우리는 어떻게 해야 할까?
쓸 때 쓰레깃값 때문에 Application이 문제가 있을까 봐 초기화했다면
쓰고 나서는 보안을 생각해서 다시 초기화해주어야 한다.
Free, Delete만 하면 안된다. 그것은 그냥 메모리 해지다.
memset, Zeromemory를 해줘야 한다.
- Total
- Today
- Yesterday
- C#.NET
- 해시
- 알고리즘
- IV
- 네트워크 연결
- 네트워크 정보
- 디자인 패턴
- C#
- cpu 점유율
- C# 고급 기술
- Project
- 암호화
- RSA
- AES
- C++
- string
- 블록암호화
- 대칭키
- 블럭암호화
- 디자인패턴
- 백터
- 네트워크 카드 이름
- cpu 이용률
- 패턴
- cpu 정보
- 네트워크설정
- absl-cpp
- 최우림
- bit
- C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |