서론 보기더보기들어가기 전, 이 게시물에서는 여러분들이 흔히 들어보신 부모 프로세스(parent process), 자식 프로세스(child process)가 언급됩니다. 빠른 정리를 위해 parent, child로 축약해 부르겠습니다. 단어에 혼동이 있을 수 있습니다. 해당 챕터에서는 프로세스를 만들고 제어하는 방법에 대해 다룬다. 코드 실습은 https://github.com/remzi-arpacidusseau/ostep-code/Get it right. Neither abstraction nor simplicity is a substitute for getting it right.Process 생성 및 제어UNIX 시스템에서 제공하는 다음 3가지 시스템 콜을 살펴볼 것이다.fork()exec()wai..
프로세스를 구현하기 위해 수많은 추상화 과정들이 있다. 프로세스가 실행될 땐 무언가 읽거나 써야지주소 공간 : 프로세스가 처리할 수 있는 메모리레지스터 : 명령어를 읽거나 업데이트할 수 있는 저장공간 (i.e. 프로그램 카운터, 스택 포인터)입출력 정보 : 프로세스가 현재 열어놓은 파일 목록 프로세스도 상호작용을 해야한다 (Process API)아무런 상호작용을 하지 못하는 프로세스는 쓸 이유가 없지.Create : 사용자가 프로세스를 생성할 수 있어야 한다. 예시로 리눅스에서 특정 명령어를 입력했을 때 특정한 프로세스가 실행되어야 한다. 그것이 안 된다면 의미가 없는 명령어이다.Destroy : 프로세스에서 오류가 발생했을 때 사용자는 프로그램을 임의로 종료할 할 수 있어야 한다.Wait :실행이 중단..
보호기법 완전 제거(ASLR 제외)64비트gcc -no-pie -fno-stack-protector -z norelro -z execstack -fno-builtin 32비트 gcc -m32 -no-pie -fno-stack-protector -z norelro -z execstack -fno-builtin -mpreferred-stack-boundary=2 ASLR 제거echo 0 > /proc/sys/kernel/randomize_va_spacerandomize_va_space = 0ASLR 제거randomize_va_space = 1스택, 라이브러리 랜덤randomize_va_space = 2스택, 라이브러리, 힙 랜덤ulimit -s unlimited일시적 ASLR 해제보호기법Canary-fno-..
포트포워딩 방법 (스크립트)Windows 환경에서 Powershell로 열어줘야한다.해당 코드를 복사해서 {filename}.ps1로 저장하고 관리자 권한으로 실행하거나Powershell을 관리자 권한으로 열고 코드를 복붙하면 된다.remoteport=bash.exe−c"ifconfigeth0|grep′inet′"found = remoteport−match′\d1,3\.\d1,3\.\d1,3\.\d1,3′;if(found ){ remoteport=matches[0];} else{ echo "The Script Exited, the ip address of WSL 2 cannot be found"; exit;}#[Ports]#All the ports ..
use std::time::Instant;fn main() { let start_time = Instant::now(); // 측정 시작 ... your code ... let end_time = Instant::now(); // 측정 종료 /* 아래 2개 값 모두 같은 값 assert_eq!endtime−starttime),endtime.durationsince(starttime; */ let elasped_time = end_time - start_time; let elapsed_time = end_time.duration_since(start_time); println!("Elapsed : {:?}", elapsed..
개요소프트웨어 공급망(Supply Chain)은 SW 개발 단계에서 사용자에게 도달하기 전까지를 일컫는다.개발 환경, 소스 코드 저장소, 소프트웨어 배포 플랫폼까지 포함된다. 위와 같이 SW 개발 프로세스를 탈취하여 해당 SW의 사용자에게 영향을 끼치는 모든 경우를 공급망 공격이라고 부른다. 공급망 단계공격 유형공격 사례개발서버서버 침투 및 악성코드 삽입SolarWinds(20~21), Codecov(21), Kaseya(21)프로젝트 파일 대상 악성코드 배포Octopus Scanner(20), rest-client(19)악성 IDE 배포Xcode Repackaging(15)저장소오펀 패키치 탈취(Orphan Package Takeover)Arch User Repository acroread(18)계정 ..
Summary1. --release 옵션을 주어 릴리즈 모드로 컴파일2. 배포전에 LTO 활성화 및 바이너리 strip 옵션3. 메모리 집약적 프로그램이 아닐 경우 system allocator 사용4. 훨씬 큰 프로그램을 사용할 경우 UPX / 압축 사용5. 그외 더 작게 만드는 방법은 여러가지 방법을 사용 Optimization Level Table0no optimizations1basic optimizations2some optimizations3all optimizations"s"optimize for binary size"z"optimize for binary size, but also turn off loop vectorization.https://doc.rust-lang.org/cargo/..
출력 매크로 종류format!작성한 포맷팅대로 string 생성print!format! + 콘솔로 출력 (io::stdout)println!print!에서 줄바꿈 추가eprint!format! + 표준에러로 출력 (io::stderr)eprintln!eprint!에서 줄바꿈 추가 Positional parameters (arguments by position) println!("{} 일", 1); 1 일 (i32) println!("{} 일", 2i64); 2 일 (i64) println!("내 생일은 {}월 {}일", 6, 9); 내 생일은 6월 9일 (i32)Named parametersprintln!("{0}에는 은방울님이 계신다면 {1}에는 달씨님이 계신다.", "고대", ..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.