전공 53

리눅스 프로그래밍 개발 환경

GCC(컴파일러) + VIM(에디터) GCC(GNU Compiler Collection) - 그냥 score이라고만 하면 명령어로 생각함. 실행할 때는 ./score로 해야함 [gcc 컴파일] 1) gcc 파일명(*.c) : Default로 out 파일이 생성된다. a.out out 파일도 실행시킬 수 있음 2) gcc -c 파일명(*.c) : 오브젝트 파일을 생성한다. 3) gcc -c 오브젝트_파일명(*.o) 파일명(*.c) gcc -o 실행파일명(*.out) 오브젝트_파일명(*.o) 4) gcc -o 실행파일 파일명(*.c) : 실행 파일을 만든다. (3번을 한줄로...) 소문자 '오'(output) [gcc 옵션] 1. -W -Wall 옵션 : 아주 사소한 모호성에 대해서도 경고가 발생 2. -O..

전공/리눅스 2023.01.09

CentOS + Linux Services

SSH서버 설치 및 접속 MySQL sudo grep "A temporary password" /var/log/mysqld.log sudo mysql_secure_installation Web Server 구축하기 데미안 계열 vs 레드햇 계열 * 데몬 : 멀티태스킹 운영 체제에서 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램, ~~~~d, 부모 프로세스를 갖지 않으며(PPID가 1) 프로세스 트리에서 init 바로 아래에 위치 * 과제 확인

전공/리눅스 2023.01.06

리눅스 쉘

리눅스 쉘 기본 개념 리눅스의 구조 커널(kernel) 하드웨어를 제어하는 코드를 통해 시스템의 모든 자원을 통제/관리 쉘(shell) 사용자가 입력한 명령어를 커널에게 전달 응용 프로그램 리눅스에 있는 각종 프로그램 * 하드웨어 1) CPU 2) Mem 3) I/O장치 쉘의 기능 1. 명령어 해석기 - 사용자와 커널 사이에서 명령 해석 2. 프로그래밍 - Shell Programming : 반복적으로 수행하는 작업을 하나의 프로그램으로 제작 가능 - 이러한 프로그램을 Shell Script -> Interptreter * Interpreter(Interpret 방식) : txt file(script)을 한 줄씩 번역 Compiler(Compile방식) 한 번에 번역, 실행시간 빠름 3. 사용자 환경 설..

전공/리눅스 2022.12.27

[12] BufferOverflow

movl $0x100, %eax // int* eax = (int*)0x100; movl $0x4050, (%eax) // *eax = 0x4050; IA-32/Linux Memory Layout application을 실행시키면 process가 되고 4G메모리 공간 할당받음 윗부분은 kernel 공간, 아랫부분은 application 공간 프로그램은 code(->text영역)+data Stack • Runtime stack (8MB limit) / int arr[100000큰수] => 에러 Heap • Dynamically allocated storage • When call malloc(), calloc(), new() DLLs (shared libraries) 다른 프로세서와 공유되는 라이브러리 •..

[13] Linking

Program Translation ● ○ 간단한 방법으로 한 번에 translate하지 않음 ○ 문제 : Efficiency : small change requires complete recompilation Modularity : hard to share common functions (e.g. printf) ○ 해결 : (Static) linker ● 오브젝트 파일 : 기계어로 번역된 상태 relocatable : address가 정해지지 않아서 나중에 정함 ● Compiler driver /coordinates /all steps in the translation and linking process - Typically included with each compilation system (gcc)..

[09] ASM2 : Control Flow

IA-32 Processor State 32bit compiler general purpose 6개는 범용으로 용도가 정해져 있지 않음. 컴파일러가 그때그때 결정 저장공간 6개를 (레)로 쓸 수 있다 %eax accumulate temporary data %ecx counter %edx data %ebx base %esi source index (배열 idx 관련) %edi destination index (배열 idx 관련) 특별한 목적의 (레) 범용 안 됨 %esp Current stack top stack pointer (스택이 어디까지 사용됐는지) Location of runtime stack %ebp Current stack frame 의 첫번째 위치(base address) base point..

[03-3] Integer(정수) / Representing and Manipulating Integers

Bit-Level Operations in C Operations &, |, ~, ^ available in C • Apply to any "integral" data type - long, int, short, char, unsigned Q) 나옴 ~0x00 -> 0xFF Logic Operations in C T/F? • &&, ||, ! • View 0 as "False" • Anything nonzero as "True" • Always return 0 or 1 Early termination // 앞부터 비교하기 때문에 적게 비교하는 게 더 좋음 Q) 나옴 char형 !0x41 0x00 !0x00 0x01 !!0x41 0x01 0x69 && 0x55 0x01 0x69 || 0x55 0x01 if..

[05] BYTE ORDERING

Memory model Physical memory - DRAM chips can read/write 4, 8, 16 bits - DRAM modules can read/write 64 bits Programmer's view of memory • Conceptually very large array of bytes 굉장히 큰 공간을 연속적으로 할당받고 있다 • Stored-program computers: keeps program codes and data in memory • Running programs share the physical memory • OS handles memory allocation and mangement word size • Nominal size of integer-val..