분류 전체보기(66)
-
[시스템 해킹] 02-1. Computer Science-Linux Memory Layout
세그먼트 ; 적재되는 데이터의 용도별로 메모리의 구획을 나눈 것 용도별로 메모리를 나누면 각 용도에 맞게 적절한 권한을 부여할 수 있다는 장점. 권한: 읽기, 쓰기, 실행 코드 세그먼트 (==텍스트 세그먼트) ; 실행 가능한 기계 코드가 위치하는 영역. 읽기/실행 권한. 쓰기 권한이 있으면 공격자가 악의적인 코드를 삽입하기 쉬워짐. * 정수 31337을 반환하는 main함수가 컴파일 되면 554889e5b8697a00005dc3라는 기계 코드로 변환되는데, 이 기계 코드가 코드 세그먼트에 위치하게 됩니다. int main() { return 31337; } 데이터 세그먼트 ; 컴파일 시점에 값이 정해진 전역 변수 및 전역 상수들이 위치. 읽기 권한+ -쓰기 가능한 세그먼트: 전역변수 처럼 실행되면서 가변..
2024.01.28 -
[시스템 해킹] 02. Computer Science-Computer Architecture
컴퓨터 구조 Computer Architecture ; 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안, 이들을 구성하는 방법 -기능 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍처, 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등 명령어 집합구조 Instruction Set Architecture ; CPU의 명령어에 대한 설계. 마이크로 아키텍처 Micro Architecture ;CPU의 하드웨어적 설계. CPU 회로 설계. 폰 노이만 구조 ; (연산, 제어)->CPU + (저장)->기억장치. 장치간에 데이터나 제어 신호를 교환할 수 있도록 버스라는 전자 통로 사용. 중앙처리장치 CPU ; 연산을 처리하고 시스템을 관리하는 컴퓨터의 두뇌. -산술/논리 연산을 처리하는..
2024.01.28 -
[시스템 해킹] 01. 리눅스 환경 구축
1. wsl2 설치 2. 관리자 권한 powershell에서 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart wsl --set-default-version 2 실행 3. vmware 설치 4. ubuntu 설치 5. vmware에 ubuntu올리기 이런 오류가 떴다.. https://kb.vmware.com/s/article/76918 Error : Your host does not meet minimum requirements to..
2024.01.27 -
백준 14888_연산자 끼워넣기 / Python
문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다. 예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(×) 1개, 나눗셈(÷) 1개인 경우에는 총 60가지의 식을 만들 수 있다. 예를 들어, 아래와 같은 식을 만들 수 있다. 1+2+3-4×5÷6 1÷2+3+4-5×6 1+2÷3×4-5+6 1÷2×3-4+5+6 식의 계산은 연산자 우선..
2024.01.23 -
백준 10819_차이를 최대로 / Python
문제 N개의 정수로 이루어진 배열 A가 주어진다. 이때, 배열에 들어있는 정수의 순서를 적절히 바꿔서 다음 식의 최댓값을 구하는 프로그램을 작성하시오. |A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]| 입력 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. 출력 첫째 줄에 배열에 들어있는 수의 순서를 적절히 바꿔서 얻을 수 있는 식의 최댓값을 출력한다. 예제 입력 1 6 20 1 15 8 4 10 예제 출력 1 62 ##10819 차이를 최대로 from itertools import permutations n=int(input()) ..
2024.01.23 -
백준 14501_퇴사 / Python
문제 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일2일3일4일5일6일7일TiPi 3 5 1 1 2 4 2 10 20 10 20 15 40 200 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은 15이다. 상담을 ..
2024.01.22