컴퓨터의 구조 및 소프트웨어 실행 원리
1. 언어 별 실행 환경의 차이
▶ Low-level programs은 메모리를 직접 다룬다.
▶ Low-level program의 장점: 효과적 / 정확한 제어 가능
▶ Low-level program의 단점: 데이터의 추상화원칙 위배 가능!
2. 안전한 메모리 사용 방법
▶ 명확하게 지정된 메모리 영역만을 사용하도록 하기 위해 강력하게 지켜져야 하는 규칙
3. 컴퓨터의 구조 - 코드와 데이터
▶ 폰 노이만 모델 - 코드와 데이터를 동일 시 한다.
▶ 폰 노이만 컴퓨터 구조
- 해당 모델을 하드웨어 형태로 개발
- 컴퓨팅 환경의 혁명의 기폭제 (1950s - 1970s)
▶ 폰 노이만 컴퓨터 구조 문제점
- 데이터와 코드가 같은 경로를 사용
- 데이터와 코드의 경계가 불분 명해짐
- 코드가 스스로 갱신되는 것의 불안전성
4. C언어의 실행 원리
5. Java의 실행 원리
6. 프로세스와 메모리
▶ 프로세스: 실행 중인 프로그램 (OS의 관리)
▶ 운영체제마다 메모리 보호의 정도가 다르다!
C언어와 어셈블리어의 이해
1. C언어와 어셈블리어 - C언어가 갖고 있는 여러 가지 이슈
▶ Pointers to memory locations (&val, *ptr)
- 문자열의 길이가 가변적이고 NULL로 끝남
- 고정크기의 구조체(structs)에 값을 저장
- malloc()을 활용한 동적 메모리 할당
▶ Function return code conventions
▶ 다음 에러에 대해 관대함
- type errors
- uninitialized variables
▶ 컴파일러에 따라 다른 반응(Strong Warning)
- 에러 마저도 다르게 나타남
- C 코드 내에 방어적 코딩이 되도록 조치 함
2. C 코드 샘플

3. 어셈블리어
▶ 가장 기본적인 컴퓨터 구조
- Processor
- Memory (휘밠어을 가진다)
- 외부 입력장치
- 이 셋을 연결해 주는 system bus
-> 우리가 알아야 할 건 CPU와 메모리 사이의 상호작용!
▶ 컴퓨터 구조 중 Memory는 피라미드 계층 구조를 갖고 있다!
- 용량
- 비용
- 속도 (지연, 대역폭)
▶ 컴퓨터 구조 중 프로세서의 레지스터
- CPU는 메모리에 있는 데이터를 레지스터에 임시로 저장한다.
* 범용 레지스터 용도
- 플래그 레지스터: 프로세서의 상태
'Study > Software Security' 카테고리의 다른 글
[소프트웨어보안] Set-UID 권한 프로그램과 공격 기법 (0) | 2022.11.16 |
---|---|
[소프트웨어보안] Stack buffer overflow 이론 (0) | 2022.11.06 |
[소프트웨어보안] 소프트웨어의 정적 분석 방법 (0) | 2022.10.12 |
[소프트웨어보안] Security advisories, CVE (0) | 2022.10.12 |
[소프트웨어보안] 소프트웨어의 개발 절차 및 보안관리, 취약점에 대한 Public Advisory (0) | 2022.10.05 |