linux process 생성

linux에서는 fork(), vfork(), clone() 시스템 콜로 자식 프로세스를 생성 할 수 있다. fork, vfork, clone 모두 do_fork()를 호출한다. fork, vfork, clone 모두 인터럽트를 이용해서 커널의 sys_fork, sys_clone, sys_vfork를 호출하고 이 세 함수 모두 특정 플래그를 첫번째 인자로 넘겨 결국엔 do_fork()를 호출한다. 세번 째 인자인 pt_regs는 커널스택의...
Read more

_start, __libc_start_main, main

_start, __libc_start_main, main hello를 출력하는 hello C언어로 작성한 간단한 elf파일의 헤더를 보면 실행파일의 시작주소값인 Entry point address에 _start 의 주소가 들어있는가 있다. 프로그램을 실행하면 _start함수부터 실행이 될것이다. 따라가보장 그 전에 _start함수가 호출되기 전의 스택에는 hello의 argc, argv, env값이 들어가있다.(커널이...
Read more

ANTI DEBUG 기법들(종명이형 강의 간단정리)

ANTI DEBUG 1. snapshot      process context snapshot 2. checksum 3. packing      section 권한 체크      *virtualprotect - 권한 변경 함수      암호화      EP는 암호화를 푸는 루틴, 암호화 푸는 루틴이 실행되면서 암호화가 풀리면서 진짜 코드가      쓰기, 실행가능한 영역에 써짐, 복호화된 코드의 시작이 OEP, 프로그램 실행! 4. garbage code      prefix, code에 공백등 넣어서...
Read more