일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Bandit
- 취약점
- 어셈블리어
- css
- 시스템프로그래밍
- 워게임
- Leviathan
- 컴퓨터구조
- 리눅스 커널
- Pwnable.kr
- C++
- px4
- kernel
- radare2
- 리버싱
- 드론
- 알고리즘
- 시스템 프로그래밍
- write up
- 프로그래밍
- wargame
- pwn.college
- 리눅스커널
- 시그널
- 시스템해킹
- pwncollege
- 리눅스
- 커널
- 시스템
- C언어
- Today
- Total
목록정보보안 (179)
Computer Security
일반화 C++은 일반화 프로그래밍(Generic Programming)이 가능한 언어이다. C++에서는 템플릿(Template)을 이용해서 일반화 프로그래밍을 사용할 수 있다. 템플릿 (template 명령어) 템플릿(Template)이란 매개변수의 타입에 따라서 함수 및 클래스를 손쉽게 사용할 수 있도록 해준다. 템플릿은 그 타입 자체가 매개변수에 의해서 다루어 진다. 따라서 템플릿을 사용하면 타입마다 별도의 함수나 클래스를 만들지 않고, 다양한 타입에서 동작할 수 있는 단 하나의 객체를 정의할 수 있다. 결과적으로 소스코드의 재사용성을 극대화할 수 있는 객체 지향 프로그래밍 기법 중 하나다. 함수 템플릿 함수 템플릿(Function Template)이 각각의 자료형에 대해서 처음으로 호출이 될 때, ..
가상 함수 가상 함수(Virtual Function)란 자식 클래스에서 재정의할 수 있는 멤버 함수다. virtual 키워드를 이용해 가상함수를 선언할 수 있으며 자식 클래스에서 가상 함수를 재정의하면 재정의된 멤버 함수 또한 가상 함수로 분류된다. C++ 컴파일러는 가상 함수 테이블(Virtual Function Table)을 이용해 가상 함수를 다루게 된다. C++ 컴파일러는 각각의 객체마다 가상 함수 테이블을 가리키는 포인터를 저장하기 위한 멤버를 하나씩 저장한다. 가상 함수 테이블에는 특정한 클래스의 객체들을 위해 선언된 가상 함수들의 주소가 저장된다. 따라서 가상 함수를 호출하면 C++ 프로그램은 가상 함수 테이블에 접근하여 자신이 필요한 함수의 주소를 찾아 호출하게 된다. 이러한 과정은 말 그..
다형성 칼 객체, 대포 객체, 총 객체를 attack() 분류한 구성에서는 무기 객체에서 attack() 함수를 실질적으로 구현할 필요가 없다. 이럴 때 무기 객체를 추상 클래스(Abstract Class)로 구현하면 효과적으로 설계를 할 수 있다. 자식 클래스에서 오버라이딩의 문제점 자식 클래스에서 멤버 함수를 재정의하여 사용하는 것은 일반적으로 정상적으로 동작한다. 하지만 포인터 변수로 객체에 접근할 때는 예상치 못한 결과가 발생할 수 있다. C++ 컴파일러는 포인터 변수가 가리키고 있는 변수의 타입을 기준으로 함수를 호출하지 않고, 포인터의 타입을 기준 으로 함수를 호출한다. 따라서 A라는 객체를 가리키는 포인터 변수는 A 객체의 멤버 함수만을 호출할 수 있다. 함수의 바인딩 - 함수를 만들어 컴파..
정적 멤버 정적 멤버(Static Member)란 클래스에는 포함 되어 있는 멤버이지만 모든 객체가 공유하는 멤버이다. 정적으로 선언된 멤버는 메모리 상에 오직 하나만 할당되어 관리된다. 정적 멤버를 public으로 선언하면 외부의 어떠한 클래스에서 접근이 가능하며, 오직 하나만 관리된다. 코드 예시 #include #include using namespace std; class Person { private: string name; public: static int count; Person(string name) : name(name) { count++; } }; int Person::count = 0; int main(void) { Person p1("고동산"); Person p2("2동산"); Pe..