Swing41 [Reversing] Stack 구조와 Stack Frame 스택(Stack)이란? - 위 사진에서 가장 아래 쪽에 있는 영역이 스택 영역이다. - 한 쪽 끝에서만 자료를 넣고 뺄 수 있는 LIFO(Last In First Out, 후입선출) 형식의 자료 구조이다. - 프로그램이 자동으로 사용하는 임시 메모리 영역으로 함수의 호출과 관계되는 지역변수, 매개변수, 리턴 값 등의 임시 데이터를 저장하는데 사용된다. 1) 코드(텍스트) 영역 - 실행할 프로그램의 소스 코드가 저장되어 있는 영역 - 실행 파일을 구성하는 명령어(함수, 제어문, 상수 등)들이 저장된다 - 저장된 명령어를 CPU에서 하나씩 가져가 처리한다 2) 데이터 영역 - 전역변수와 static 변수, 배열, 구조체 등이 할당되는 영역 - 프로그램 시작과 동시에 할당되고 프로그램이 종료되어야 메모리가 소.. 2020. 9. 8. [Reversing] 32bit 레지스터의 종류와 특징 레지스터란? - CPU의 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치이고 처리 결과 역시 이 곳에 저장된다. - 공간은 작지만 CPU와 직접 연결되어 있어 연산 속도가 메모리보다 훨씬 빠르다. - 종류 > 범용 레지스터 > 인덱스 레지스터 > 포인터 레지스터 > 세그먼트 레지스터 > 플래그 레지스터 1) 범용 레지스터 - 범용적으로 막 쓰는 레지스터로 어셈블리 명령어에서 특정 레지스터를 조작하는데 사용하기도 한다. - 32bit 크기의 레지스터 8개로 구성되어 상수/주소를 저장할 때 쓰인다. - 인덱스 레지스터와 포인터 레지스터는 범용 레지스터에 포함된다. (1) EAX 레지스터 (Extended Accumulator Register) - 누산기라고 불리며 데이터 전송(입출력) 및 연.. 2020. 9. 7. [Go언어] 암호화, 프로토콜 사용 교재 : 가장 빨리 만나는 Go언어 5주차 : UNIT 52 ~ 60 [UNIT 52] 압축 사용하기 - 압축 알고리즘은 파일, 네트워크 패킷을 압축해 용량을 줄이고 압축된 파일, 네트워크 패킷을 해제할 때 사용 - compress/gzip 패키지에서 제공하는 압축 함수 > func NewReader(r io.Reader) (*Reader, error) : io.Reader 인터페이스로 io.Reader 인터페이스를 따르는 압축 해제 인스턴스 생성 > func NewWriter(w io.Writer) *Writer : io.Writer 인터페이스로 io.Writer 인터페이스를 따르는 압축 인스턴스 생성 - io/ioutil 패키지에서 제공하는 데이터 읽기 함수 > func ReadAll(r io... 2020. 8. 17. [Go언어] 동기화 객체, 파일처리, JSON 사용 교재 : 가장 빨리 만나는 Go언어 3주차 : UNIT 35 ~ 51 [UNIT 35] 동기화 객체 사용하기 - 동기화 객체 > Mutex : 상호 배제라고도 하며 여러 스레드에서 공유되는 데이터를 보호할 때 사용 > RWMutex : 읽기/쓰기 뮤텍스., 읽기와 쓰기 동작을 나누어 잠금을 걸 수 있다 > Cond : 조건 변수, 대기하고 있는 하나의 객체를 깨울 수 있고 여러 개를 동시에 깨울 수 있다 > Pool : 멀티 스레드에서 사용할 수 있는 객체, 자주 사용하는 객체를 품에 보관했다 다시 사용한다 > WaitGroup : 고루틴이 모두 끝날 때까지 기다리는 기능 > Atomic : 원자적 연산, 더 이상 쪼갤 수 없는 연산이라는 뜻으로 멀티 스레드, 멀티 코어 환경에서 안전하게 값을 연산.. 2020. 8. 8. [C++] 입출력, 연산자 1. 설계 목표 - 호환성 (C언어의 문법 체계를 그대로 계승) - 객체 지향 개념 (캡슐화, 상속, 다형성 / 소프트웨어의 재사용으로 생선성 up)ㅈ - 타입 체크를 업격하게 해 실행 시간 오류의 가능성을 줄이고 디버깅을 도움 - 실행시간의 효율성 저하를 최소화 1) 객체지향형 언어 특징 - 캡슐화 : 데이터를 캡슐로 싸서 외부의 접근으로부터 보호 클래스로 캡슐 표현 - 클래스 : 객체를 만드는 틀 / 멤버 변수들과 멤버 함수로 이루어짐 - 객체 : 클래스라는 틀에서 생겨난 실체 - 상속 : 객체가 자식 클래스의 멤버와 부모 클래스에 선언된 모양 그대로 멤버들을 갖고 탄생 재사용성을 높여 소프트웨어 생산성을 높임 - 다형성 : 하나의 기능이 경우에 다라 서로 다르게 보이거나 다르게 작동하는 현상 Ex).. 2020. 8. 2. [Go언어] 함수, 구조체, 채널 사용 교재 : 가장 빨리 만나는 Go언어 3주차 : UNIT 24 ~ 34 [UNIT 24] 함수 사용하기 - 함수 정의 & 호출 > 함수 정의를 시작한 줄에서 {(여는 중괄호)가 시작되어야 한다 > Go언어에서 함수를 정의할 때 위치의 제약이 없다 (다른 언어는 함수 호출보다 함수 선언 or 정의가 앞에 있어야 함) 1. 매개변수와 리턴값 사용하기 - 형식 : func 함수명(매개변수명 자료형)리턴값_자료형 { } - 리턴값에 이름을 지정할 수 있다 - 리턴값 변수에 rktq을 대입한 뒤 마지막에 return을 사용할 때 뒤에 리턴할 변수를 지정하지 않아도 된다 2. 리턴값 여러 개 사용하기 - Go언어에서는 여러 개의 값을 리턴할 수 있다 - 형식 : func 함수명(매개변수명 자료형)(리턴값_자료형.. 2020. 8. 1. 이전 1 2 3 4 5 6 7 다음