전체 글(77)
-
C++ (2)
클래스와 객체 1.1 객체 캡슐화 : 객체의 구성 요소들을 캡슐로 싸서 보호하고 볼수 없게 하는 것 (객체의 본질적인 특징) 객체 = state(상태) + behavior(행동) 실제 코드 상에서는 "객체 = 멤버 변수(상태) + 멤버 함수(행동)" 이다. 이러한 객체를 사용하기 위해서는 인스턴스(instance)를 만들어야한다. 붕어빵 틀에 밀가루 반죽을 넣어 붕어빵을 제작하듯, 객체를 인스턴스를 통해 직접 객체에 있는 변수나 함수들을 사용한다. 1.2 클래스 클래스 = 클래스 선언부 + 클래스 구현부 1.2.1 클래스 선언부 class [클래스이름] { [접근지정자] : int a; // 멤버 변수 void getA(); //멤버 함수 }; 접근지정자 : public(외부 접근 가능), private..
2024.03.25 -
C ++ 기초 (1)
1. C++이란? C언어 + 객체 지향 언어 = C++ ▶ C언어의 모든것을 담고 있음 1.1. C++의 역사 Asembly → BCPL → B → C → C++ → Java/C++표준 변화 → C# 1.2. 객체 지향 프로그래핑이란? 클래스와 상속을 이용하여 소프트웨어의 재사용성을 높이고 개발과 관리를 쉽게하는 것 객체 지향의 특징으로는 클래스를 통해 캡슐화를 진행하며, 실체인 객체가 존재한다. 또한, 상속성과 다형성이 있다. 1.3. 표준 C++의 중요성 어떠한 C++ 버전이냐에 따라 특정 컴파일러에서만 컴파일이 진행된다. 즉, 표준 C++은 볼랜드, 비주얼, GNU등의 모든 컴파일러에 대해 컴파일이 되지만 비주얼 C++은 비주얼 컴파일러에 대해서만 실행파일이 제작된다. 1.4. C++ 특징 (a) ..
2024.03.22 -
DarkWeb Onion Link List
보호되어 있는 글입니다.
2023.12.27 -
Linux vs. Windows Ransomware
(1) 공격 타겟의 차이 Linux 용 랜섬웨어는 Window 랜섬웨어 보다 더 명확하게 내부 네트워크의 서버 액세스를 지향한다. Windows 용 랜섬웨어는 개인용 컴퓨터와 조직용 사용자 워크스테이션(개인과 엔드포인트)를 타겟으로 진행한다면, Linux 용 랜섬웨어는 서버 준야에서 배포가 효과적이다. 즉, Linux 랜섬웨어는 Windows 위협에 비해 중대형 조직을 대상으로 공격을 진행한다. (2) 암호화하기 위한 폴더 및 파일에 대한 접근 방식 차이 Windows 용 랜섬웨어는 중요 시스템 폴더를 피하려고 시도하는 반면, Linux 용 랜섬웨어는 매개변수나 구성을 통해 직접 지정된 폴더 및 파일을 암호화한다. 이러한 차이로 인해 공격자들의 특이한 행동이 존재한다 : CL0P 랜섬웨어는 파일과 폴더를..
2023.11.24 -
커널&유저모드, 프로세스 독점, 커널 타이머
커널과 유저 모드 마이크로소프트사에서 Windows 이전에 사용한 운영체제로, MS-DOS는 유닉스는 항상 단일 CPU 모드에서 실행된다. 반면, 유닉스 같은 운영체제는 효율적인 시분할을 위해 이중 CPU 모드를 사용한다. 리눅스 CPU는 커널모드와 유저모드로 동작한다. 사용자 프로세스는 유저모드에서 동작 & 접근 권한을 가질려면 시스템 호출을 통해 디바이스 드라이버나 커널 모드로 요청을 전달해야 함 ➜ 그래서 유저 모드는 페이지 폴트가 가능함 더보기 페이지 폴트란? 인터럽트의 일종 프로세스가 실행중에 필요한 페이지가 물리 메모리에 없을때 발생한다. 커널 자체는 커널모드에서 동작& 프로세스 명령어 집합, 전체 메모리, 입출력 영역에 대한 모든 접근 권한 소유 프로세스 독점 [유저 모드] # 리눅스 커널 ..
2023.11.17 -
jamp table, switch case
jamp table은 제어권을 다른 특정 위치로 전송하는데 사용되는 추상 데이터 구조이다. 일반적인 경우, 구현이 더 쉽고 빠르게 만들기 위해 제한된 형식에서만 제공된다. 하지만, 모든 case문에 break문이 존재하는데, 이는 각 경우가 서로 독립적인 경우이다. 이러한 독립적인 경우에는 jump table의 전체 기능이 필요하지 않다. 이에, "제한된 jump table'은 효율성을 활용하지만, 각 '액션'이 다른 액션과 독립적일 때 사용된다. 즉, 각 경우가 서로 영향을 주지 않고 독립적으로 동작할 때 사용하여 코드의 효율성을 높일 수 있다. 해당 매핑은 보통 해쉬 테이블이 그 예시이며, jump table과 독립적으로 사용될 수 있다/ jump table의 복잡도는 다음과 같다. 보통은 O(K) ..
2023.11.10