일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- write up
- 시스템
- C언어
- 시스템해킹
- 어셈블리어
- Leviathan
- radare2
- 시그널
- css
- 리눅스
- Bandit
- pwn.college
- 컴퓨터구조
- wargame
- kernel
- pwncollege
- 드론
- 취약점
- Pwnable.kr
- 프로그래밍
- C++
- 리눅스 커널
- 리버싱
- 커널
- px4
- 리눅스커널
- 시스템프로그래밍
- 시스템 프로그래밍
- 워게임
- Today
- Total
목록알고리즘 (7)
Computer Security

가상 함수 가상 함수(Virtual Function)란 자식 클래스에서 재정의할 수 있는 멤버 함수다. virtual 키워드를 이용해 가상함수를 선언할 수 있으며 자식 클래스에서 가상 함수를 재정의하면 재정의된 멤버 함수 또한 가상 함수로 분류된다. C++ 컴파일러는 가상 함수 테이블(Virtual Function Table)을 이용해 가상 함수를 다루게 된다. C++ 컴파일러는 각각의 객체마다 가상 함수 테이블을 가리키는 포인터를 저장하기 위한 멤버를 하나씩 저장한다. 가상 함수 테이블에는 특정한 클래스의 객체들을 위해 선언된 가상 함수들의 주소가 저장된다. 따라서 가상 함수를 호출하면 C++ 프로그램은 가상 함수 테이블에 접근하여 자신이 필요한 함수의 주소를 찾아 호출하게 된다. 이러한 과정은 말 그..

다형성 칼 객체, 대포 객체, 총 객체를 attack() 분류한 구성에서는 무기 객체에서 attack() 함수를 실질적으로 구현할 필요가 없다. 이럴 때 무기 객체를 추상 클래스(Abstract Class)로 구현하면 효과적으로 설계를 할 수 있다. 자식 클래스에서 오버라이딩의 문제점 자식 클래스에서 멤버 함수를 재정의하여 사용하는 것은 일반적으로 정상적으로 동작한다. 하지만 포인터 변수로 객체에 접근할 때는 예상치 못한 결과가 발생할 수 있다. C++ 컴파일러는 포인터 변수가 가리키고 있는 변수의 타입을 기준으로 함수를 호출하지 않고, 포인터의 타입을 기준 으로 함수를 호출한다. 따라서 A라는 객체를 가리키는 포인터 변수는 A 객체의 멤버 함수만을 호출할 수 있다. 함수의 바인딩 - 함수를 만들어 컴파..

C++에서의 Hello World 는? 코드예시 #include using namespace std; int main(void) { cout input; std::cout 와 는 공백 문자(Space, Enter, Tab)을 기준으로 입력을 받는다. C++의 네임스페이스 네임스페이스(Namespace)는 특정한 영역에 이름을 설정할 수 있도록 하는 문법이다. 네임스페이스는 서로 다른 개발자가 공동으로 프로젝트를 진행할 때 각자 개발한 모듈을 하나로 합칠 수 있도록 해준다. 코드예시 #include using namespace std; namespace A { void function() { cout

라빈 카프 문자열 매칭 -아스키 코드 기반의 해시함수(Hash Function)을 이용해 특정한 문자열에 대한 해시 값을 구한다. -'연속적인 문자열이 이어지는' 상황이므로 해시함수의 동작에 있어서 연산 속도가 O(1)이다. 라빈 카프 문자열 매칭: 해시 함수 -라빈 카프 문자열 매칭 알고리즘에서 해시 함수는 '각 문자의 아스키 코드 값에 2의 제곱 수를 차례대로 곱해 더한 값'을 구한다. -일반적으로 서로 다른 문자열의 경우 해시 값이 다르게 나온다. 해시 함수에 기반한다는 점에서 해시 충돌에 대한 처리가 필요하다. (해시 함수(hash function) 또는 해시 알고리즘 또는 해시함수알고리즘은 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다.) ex) 문자열: “bbacdab” = ..