본문 바로가기

분류 전체보기88

C++ 독학 10일차 - 캐스팅, C++ 표준 문자열 벌써 10일차군요(공부한날만 계산해보면..) 머리는 빨리 끝내고싶은데, 마음은 계속 침대로 가고 있고... 머리는 따라주질 않아요 흡.. C의 캐스팅 방법은 암시적 캐스팅과 명시적 캐스팅이 있다. 암시적 캐스팅은 int와 double 변수가 덧셈을 할 때 int형이 자동으로 double형이 되는 것을 말하고 명시적 캐스팅은 void* 형의 주소를 특정 구조체 포인터 타입의 주소로 바꾸는 등의 캐스팅이다. 명시적 캐스팅은 말도안되는 캐스팅에 대해서도 컴파일러가 오류를 발생시키지 않는다. 그래서 프로그래머의 실수에 취약하다. 그리고 괄호 안에 타입을 넣는 방식으로 변환을 수행하기 때문에 가독성도 떨어진다. c++에서는 4가지의 캐스팅을 제공하고 있다. static_cast : 언어적 차원에서 지원하는 일반적.. 2021. 8. 7.
리버싱을 위한 기초지식 : 프로그램 실행 구조, 레지스터, 스택프레임, PE파일, 어셈블러 2021. 8. 5.
CVE-2020–0796 취약점 분석 보고서 내용 및 실습 분석 추진 배경 공유 폴더로 원격에서 파일에 접근해본 적이 있을 것이다. 또한 학교, 사무실에서 여러 PC가 하나의 프린터를 공유해본 적도 있을 것이다. 이 때 사용되는 프로토콜이 SMB이다. SMB 프로토콜은 Server Message Block의 약자로, 윈도우 시스템에서 파일 공유, 프린터 공유, 원격 윈도우 서비스 액세스 등을 목적으로 사용되는 전송 프로토콜이다. 2017년 4월 30만대의 PC를 감염시킨 워너크라이 랜섬웨어가 SMB 프로토콜을 이용해서 다른 PC로 전파되었다. 이때부터 SMB 취약점에 대해서 사람들이 관심을 갖게 되었다. 위 취약점은 이미 패치된 취약점이지만, 내용을 분석하면서 모르는 내용을 공부할 수 있는 기회이기 때문에 조사해보았다. 또한 분석을 통해서 시스템에 어떠한 취약점.. 2021. 8. 2.
C++ 독학 9일차 - 오버로딩 c에서는 +,-,==,[] 이런 기본 연산자는 c언어에 정의된 데이터 타입에만 사용이 가능했다. 그러니까 int a=1; int b=2; int c; c=a+b; 이런식으로 정수형이나 float형 같은 것들에만 쓸 수 있고 char a="h"; char b="i"; char c[2]; c=a+b; 뭐 이런거는 안된다. c는 hi가 될 수 없다는 것이다 그런데 C++에서는 사용자 정의 연산자가 가능하다. 단 ::이랑 .이랑 .* 이거 빼고 기본 연산자들을 직접 사용자가 정의하는 것을 연산자를 오버로딩 한다고 한다. ==연산자 오버로딩 연산자 오버로딩을 위해서는 (리턴타입) operator (연산자) (연산자가 받는 인자) 이런 형태로 함수를 제작하면 된다. 두 문자열이 같은지 다른지 조사하는 함수를 만들 .. 2021. 7. 29.