본문 바로가기

학부_대학원/대학원_학과공부정리

(37)
리눅스 커널 부팅 과정[0] 리눅스 커널 소스의 부팅 과정 하나 하나 깊게 짚고 들어가기 전에 넓게 그림을 그리고 간다. (0) start.S 부분이 리눅스 커널의 가장 먼저 시작 부분. (/linux-3.16.3-elv210-v01/arch/arm/boot/compressed) misc.c 부분 (/linux-3.16.3-elv210-v01/arch/arm/boot/compressed) (1) 리눅스 커널의 압축이 해체가 됨 (2) 압축된 코드를 재배치 함 (compressed/head.S) (3) head.S (arch/arm/kernel/) —> 위의 head.S 와는 다름 시스템을 초기화 한 후, start_kernel을 호출한다. 이러한 부분에서 스택과 같은 것을 설정한다. 그 후 이제 .c 파일이 실행 할수 있게 된다. ..
리눅스 커널 이미지 구조 리눅스 커널 이미지 구조 - vmlinux 파일 커널 소스의 최상위 디렉토리에 만들어짐 압축되지 않은 elf 포맷의 파일의 커널 이미지 ex) 다음과 같은 경로에 생김. (최상위 디렉토리) - System.map 파일 symbol들의 메모리 위치 맴을 보여준다. (디버깅, 포렌식에 사용된다) 리눅스 커널 이미지는 다시 0xc0000000에 다시 매핑된다. - Image 최상위 디렉토리의 vmlinux 를 binary 포맷으로 변환시킨 압축되지 않은 커널 이미지 위의 vmlinux에서 실행될 때 사용되는 것만 가져옴 - vmlinux 파일 (~/arch/(cpu)/boot/compressed/) 해당 위치에 존재하는 vmlinux파일의 경우, 압축되어 있는 파일이다. 최상위 디렉토리에서의 vmlinux에서..
VFS - Virtual File System[1] Unix 시스템을 공부하다 보면, VFS 라는 개념이 나온다.먼저 VFS가 나오게 된 배경을 알아본다. 하나의 시스템에서 하나의 파일 시스템만 사용하지 않는다.예를들어서 하나의 hdd를 여러 파티션을 나누어서 사용하는 경우를 생각해보자. 하나의 파티션은 fat 파일시스템, 다른 하나는 ext2 파일 시스템, 나머지는 msdos 파일 시스템으로 나누어서 사용한다고 생각하자.각 파티션에 TXT AVI IMG 파일을 분산해서 저장 해 놓았다.이럴 경우 사용자 입장에서 해당 파일에 접근해서 데이터를 읽기 위해서 어떠한 과정이 필요한지 생각해보자.Passwrod.txt 파일을 가져오기 위해서는 fat 파일 시스템에 맞는 open으로 핸들을 획득하고 그 다음 fat_read 나 fat_write 함수를 사용할 것이..
[*nix] 자가 삭제(unlink), 프로세스 이름 변경(prctl) Linux Anti Reversing 말이 안티 리버싱이지 찾기 힘들게 하는 기법. 파일자가 삭제 #include "stdio.h" int main(int argc, char* argv[]){unlink(argv[0]);} link : 쉽게 말하면 Hard link이다. 파일을 inode 블록을 가리키게 한다. 프로세스 이름 변경 NAME prctl - operations on a process SYNOPSIS #include int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); PR_SET_NAME (since Linux 2.6.9) Set the name of the ca..
리눅스 커널 디렉토리 구조 리눅스 커널 구조 확인 richong@ubuntu:/usr/src/linux-3.16.43/arch/x86/kernel$ pwd/usr/src/linux-3.16.43/arch/x86/kernel arch Directory리눅스 커널 기능 중 하드웨어 종속적인 부분들이 구현되어 있고 architecture를 의미한다. 각 CPU에 해당하는 디렉토리에 기능들이 구현되어 있다.richong@ubuntu:/usr/src/linux-3.16.43/arch$ lsalpha arm64 c6x hexagon Kconfig metag mn10300 powerpc sh um xtensaarc avr32 cris i386 m32r microblaze openrisc s390 sparc unicore32arm blackfi..
Linux Kernel Build 항상 커널 만들 때, 아무 생각없이 명령어만 따라 쳤는데, 정리하려고 한다. 리눅스 커널을 만드는 과정은 크게 3단계로 나뉘어진다. 1. 커널 구성 : Kernel Configuration2. 커널 컴파일 : Kernel Compile3. 커널 인스톨 : Kernel Installation 사전에 linux kernel을 다운로드하여 /usr/src/ 디렉토리에 압축 해체한다. 1. 커널 구성이란?커널 이미지를 만들 때, 주변의 기기나 네트워크 상태 등을 고려하지 않고 만들면 분명 문제가 생길 것이다.예를들면, 어떤 커널 이미지는 무선 전용 네트워크인데 설치되는 호스트는 무선 카드가 없으면 동작 하지 않을 것이다. --> 예가 맞는지는...그래서 이러한 구성을 해줘야 하는데, 아무런 지식없이 하는건 하기..
Memo 보호되어 있는 글입니다.
PGP[Pretty-Good Privacy] Phil Zimmermann가 1991년 개발.이메일은 보안이 너무 취약하다. SMTP, POP,IMAP과 같은 보안이 고려되지 않은 프로토콜.그리고 인터넷상에 돌아다니는 데이터들 모두 누가 확인할지 모른다.그러니까 암호화를 이용해서 통신하자!!그런데 PGP는 유료인지는 모르겠지만, Symantec 회사 소유이다. 그렇기 때문에 GPG로...GPG는... 비대칭키 방식으로 개인키 공개키가 존재하고, 암호, 디지털 서명이 가능하다! $gpg --gen-key 키를 생성 할 수있다. 다양한 종류도 선택 할 수있고.. 하지만 키를 생성하는데 엔트로피가 필요해서 이것저것 딴짓 해줘야한다.$gpg --list-keys 현재 내가 가지고 있는 키 목록을 볼 수 있다. //키를 생성했으면 이제 보내고 받고 해야겠지...