본문 바로가기

프로세스13

올리디버거(OllyDBG)의 Executable Modules 을 통한 문제풀이 올리디버거 창들 중에 Executable Modules 창이 있다. 현재 불러온 프로세스에서 실행중인 모듈들을 보여준다. 한 프로그램에서 여러개의 모듈(ex. DLL 등)을 사용할 경우 올리디버거는 하나의 모듈만을 트레싱할 수 있기 때문에 제대로 분석할수가 없다. 따라서 Executable Modules 창을 이용해 실행 가능한 모듈을 골라서 중요한 코드에 BreakPoint 를 걸어놓음으로써 해당 코드가 실행될 때에 제어권을 올리디버거로 받아 문제를 해결할 수 있다. 일단 해당문제를 실행시켜보자. Ezbeat 문제 패스워드 찾기 올바른 패스워를 찾으시오! 난이도 : ★☆☆☆☆ 위의 메시지 박스가 뜨며 확인을 누르면 콘솔창 하나가 뜨며 Input Password : 를 입력하라고 뜬다. 올리디버거로 프로.. 2010. 7. 18.
메모리 컨트롤 메모리 상태 : 페이지의 개수 = 가상 메모리의 크기 / 페이지 하나당 크기 페이지 개수는 가상 메모리의 크기에 비례하며(가상 메모리는 몇 비트 환경인지에 비례 (ex. 32비트 4GB)), 모든 페이지는 Reserve, Commit, Free 세가지 중 하나의 상태를 지닌다. Commit : 물리 메모리에 할당된 상태 Reserve : Free 와 Commit 의 중간상태이다. 해당 번지에 대해 예약을 한다. 다른 메모리 함수가 물리 메모리에 해당 번지에 할당하지 못하도록 한다. 하지만 물리 메모리의 소비는 발생하지 않는다. Free : 물리 메모리 할당이 이뤄지지 않은 상태 메모리 할당의 시작점과 단위 확인 : 가상 메모리 시스템은 페이지 단위로 관리된다. 페이지의 중간 위치에서부터 할당을 시작할수 .. 2010. 3. 24.
라이브러리(Library) 라이브러리(Library) : 여러 프로그램에서 자주 사용하는 함수와 데이터들을 실행이 가능한 바이너리 형태로 묶어놓은 파일을 의미한다. (참고 : 즉, 함수와 데이터들의 정의가 컴파일된 바이너리 코드로 라이브러리에 존재한다) (ex. C Run - Time Library Characteristics Libcmt.lib Multithreaded, static link Libcmtd.lib Multithreaded, static link (debug) Msvcrt.lib Multithreaded, dynamic link Msvcrtd.lib Multithreaded, dynamic link (debug)---d.lib : 디버그 모드로 컴파일) Static Library : 정적 라이브러리 개념 : 헤더파.. 2010. 3. 11.
쓰레드(Thread)의 생성과 소멸 쓰레드 생성 : HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // 보안속성(TRUE : 상속, NULL : 상속제외) SIZE_T dwStackSize, // 쓰레드의 스택 크기 LPTHREAD_START_ROUTINE lpStartAddress, // 쓰레드로 동작하기 위한 함수(쓰레드 main) // 리턴타입 DWORD, 매개변수 타입 LPVOID(void*) LPVOID lpParameter, // 쓰레드 함수에 전달할 인자 지정 DWORD dwCreationFlags, // 쓰레드 생성 및 실행을 조절 LPDWORD lpThreadId // 쓰레드 ID를 전달받기 위한 변수의 주소값 ); 쓰레드 소멸 : 1. return(일반적,.. 2010. 2. 28.
쓰레드(Thread) 쓰레드(Thread) : 하나의 프로그램 내에서 여러 개의 실행 흐름을 두기 위한 모델 1. 독립적인 스택(Stack)을 가진다. 2. 코드 영역을 공유한다. (위와 같이 쓰레드 main 함수는 코드 영역에 존재하는 모든 함수를 호출할 수 있다) 3. 데이터 영역과 힙을 공유한다.(전역변수와 동적 할당된 메모리 공간 공유 가능) 4. 프로세스 핸들 테이블 공유 프로세스 핸들 테이블에 대한 핸들 정보는 프로세스 내의 쓰레드 들에게 공유되어 각 쓰레드가 그 핸들에 대해 접근이 가능하다 (참고 : 같은 프로세스내의 쓰레드들은 스택 이외의 모든 것을 공유한다) 프로세스와 쓰레드 Windows 에서 프로세스는 단순히 쓰레드를 담는 상자다. 실제 프로그램 흐름을 형성하는 것은 쓰레드이다. 따라서 스케줄러(Windo.. 2010. 2. 28.
스케줄링 알고리즘과 우선순위 우선순위(Priority) 스케줄링(Scheduling) 알고리즘 : 각각의 프로세스마다 우선순위를 부여해서 우선순위가 높은 프로세스를 먼저 실행한다. 우선순위가 다른 두 프로세스를 동시 실행할 때, 우선순위가 높은 프로세스가 작업을 마치지 않는다면(블로킹 상태가 되거나 I/O 작업을 하지 않는다면) 우선순위가 낮은 프로세스는 절대로 실행되지 않는다. (기아 상태 : Starvation) 라운드 로빈(Round-Robin) 스케줄링 알고리즘 : 우선순위가 동일한 프로세스들의 형평성 유지를 위해 정해진 시간 간격(타임 슬라이스(Time Slice), 퀀텀(Quantum))만큼만 실행하고 CPU 할당을 넘긴다. 타임 슬라이스 ↑ -> 반응속도 ↓ 타임 슬라이스 ↓ -> 성능 ↓ (잦은 컨텍스트 스위칭 발생으.. 2010. 2. 25.