[WINDOWS] 스레드
2021. 6. 11. 01:38
Programming/Windows
스레드가 가지고 있는 정보들 CPU레지스터 정보(=컨텍스트) 현재 모드 스택 개인 저장 영역 임의의 보안 토큰 메시지 큐 메시지 큐를 이용해 윈도우나 스레드를 생성하고 관리할 수 잇다. 스레드 우선순위 스레드 상태 정보 스레드 관련 API 스레드 생성 CreateThread 스레드 일시중지 / 재개 SuspendThread ResumeThread 스레드 종료 ExitThread Terminate Thread 1.스레드 스택 스레드는 2개의 스택을 가지고 있다. 커널모드에서 사용하는 물리메모리 스택 32비트에서는 12kb, 64비트에서는 24kb 유저모드에서 사용하는 스택 기본 1mb로 예약되고 공간이 더필요할 때 4kb씩 증가되어 커밋되며, 기본크기는 64kb로 생김 linker를 이용하여 기본 크기 지..
[WINDOWS] 프로세스
2021. 6. 9. 23:55
Programming/Windows
프로세스 운영체제 입장에서 실행되는 하나의 작업 실제 커널객체로 생성되어 위치함 프로세스가 소유하는 정보 개인 가상 메모리 영역 메모리 크기는 32비트 프로세스에서 최대 4GB , 64비트에서 최대 16GB 개인 물리 메모리 영역 보안토큰 공유자원을 Access할 때 사용 핸들 테이블 스레드 우선 순위 메모리 주소 현재 프로세스가 사용하는 메모리 주소 프로세스 사용 용도에 따른 구분 시스템 프로세스 운영체제에서 생성하고 반드시 존재해야하는 프로세스 네이티브 API사용 WinLogon 이나 세션매니저(SMSS) 등 서비스 프로세스 Win32 Services에 의지하여 서비스 형태로 실행되는 프로세스 응용 프로그램(사용자 프로그램) 유저모드에서 실행되는 프로그램 환경 서브시스템 프로그램의 실행 환경에 맞게 ..
[WINDOWS] 윈도우 기본 개념 (2)
2021. 6. 9. 02:06
Programming/Windows
이전 게시글에서 1~5번 개념까지 설명하였다. 해당 게시글에서 소개할 개념은 다음과 같다. 6. 멀티프로세싱 7. 유니코드 8. 서브시스템 9. 세션 6. 멀티 프로세싱 SMP 윈도우는 다수의 프로세서가 하나의 메모리영역과 하드웨어 자원을 공유해서 사용하는 SMP(Symmetric multiprocessing)을 지원한다. 이는 리눅스와 같은 대부분의 시스템이 지원하는 시스템구조이다. CPU입장에서 데이터가 어느 위치에 있던 각 프로세스가 동일하게 접근할 수 있고, 작업스케줄링을 통해 효율적으로 프로세스를 이용할 수 있게한다. win10기준 256개의 논리 프로세서까지 지원한다. windows 버전별로 지원하는 물리적 프로세서(CPU) 개수를 제한 하고 있다. 자료는 구글링 하길 바란다. 7. 유니코드 ..
[WINDOWS] 윈도우 기본 개념 (1)
2021. 6. 9. 01:35
Programming/Windows
WINDOWS 프로그래밍을 위해 꼭 필요한 개념은 다음과 같다. 1. 유저모드와 커널모드 2. 프로세스 3. 스레드 4. 가상메모리 5. 객체와 핸들 6. 멀티프로세싱 7. 유니코드 8. 서브시스템 9. 세션 1. 유저 모드와 커널 모드 유저모드 운영체제의 시스템 영역을 제외한 데이터 영역에 접근 가능 하드웨어 액세스 불가 유저 모드에서 실행되는 개별 프로그램으로 인한 시스템 동작 불가 오류를 막는다. 커널모드 커널과 디바이스 드라이버들만 사용 모든 시스템 자원에 대해 접근 가능 오류 발생시 컴퓨터 뻑날수 있음..^^ Ring 권한을 의미하는 용어 Ring 0 : 커널 모드 Ring 3 : 주로 유저모드에게는 해당 권한 부여 2. 프로세스 하나의 프로그램을 실행하기 위한 자원의 집합 프로그램을 실행하면 ..
[windbg] Windbg 사용법 / 덤프 분석
2021. 2. 23. 17:45
Programming/Windows
1. Windbg 다운로드 docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools Download Debugging Tools for Windows - WinDbg - Windows drivers This page provides downloads for the Windows Debugging tools, such as WinDbg. docs.microsoft.com 2.
[windows] 프로세스와 스레드
2021. 2. 13. 22:12
Programming/Windows
프로세스(Process) : 실행중인 상태의 프로그램, 테스크(task)라고도 부른다. 스레드(Thread) : 디스패칭의 단위, 실제적으로 명령어가 CPU를 사용하여 실행되어지는 객체의 단위 같은 프로세스 내의 스레드는 같은 주소공간에 존재함 같은 프로세스 내의 스레드는 같은 메모리를 참조함 프로세스의 구조 EPROCESS windbg로 EPROCESS구조체를 볼 수 있다! (windbg를 커널에 연결해야한다) EPROCESS란 프로세스가 생성되면 해등 프로세스의 정보를 담고있는 구조체, 커널메모리에 생성된다. PEB? 유저모드에서의 프로세스 구조체 windbg로 EPROCESS의 구조를 보는 과정은 추후에 작성하도록 하겠다.. 프로그램에서EPROCESS의 구조체를 보려면? 본인 프로세스라면 아래 ap..
[windows] 프로시저와 스택구조 간단정리
2021. 2. 12. 21:21
Programming/Windows
한줄 요약 : 스택에 저장하는 값 -> 복귀주소, 로컬변수, 파라미터 복귀주소 (Return Address) : 프로시저가 해당 기능을 끝마친 뒤 다음 코드의 내용이 실행될 수 있게 아래와 같은 이유로 복귀주소를 스택에 저장. 프로시저가 호출 되기 직전에 저장했다가, 끝나게되면 복귀주소 역시 필요 없어 진다. 프로시저 안에서 또다른 프로시저의 호출이나 , 재귀 등의 흐름이 가능하므로, 복귀주소가 중첩하여 여러개 존재할 수 있다 -> 즉, 복귀주소들 간의 순서를 나타낼 수 있어야한다. ESP(Extended Stack Pointer) : 현재 스택의 위치(스택에서 가장 아랫부분)를 저장 EBP(Extended Base Pointer) : 스택의 처음값을 저장 -> 스택프레임이 소멸되지 않는 한 유효하다. ..