pwnkidhn.github.io

고정 헤더 영역

글 제목

메뉴 레이어

pwnkidhn.github.io

메뉴 리스트

    • 분류 전체보기 (194)
      • memo (0)
      • Pwnable Exploitation (19)
        • 01.Shellcode (4)
        • 02.Return to Shellcode (1)
        • 03.RTL(Return to libc) (2)
        • 04.Frame faking(Fake ebp) (1)
        • 05.Frame Pointer Overwrite (2)
        • 06.ROP(Return Oriented Prog.. (3)
        • 07.SROP(Sigreturn-oriented .. (2)
        • 08.JOP(Jump-Oriented Progra.. (1)
        • 09.Return-to-csu(__libc_csu.. (0)
        • Malloc - glibc(ptmalloc2) (3)
      • Pwnable Write-Up (54)
        • 00.CTF (0)
        • 01.hackerschool F.T.Z (20)
        • 02.hackerschool L.O.B (21)
        • 03.dreamHack (13)
        • 04.HackCTF (0)
      • Reversing Write-Up (38)
        • 01.Abex's crackme (5)
        • 02.CodeEngn Basic (20)
        • 03.CodeEngn Advance (13)
      • Fuzzing (1)
        • Theory (1)
      • Programming (22)
        • Data Structure (0)
        • Windows System (22)
      • Computer Science (60)
        • Computer Architecture (18)
        • OS Concepts (29)
        • Linux System (5)
        • Reverse Core (8)

    검색 레이어

    pwnkidhn.github.io

    검색 영역

    컨텐츠 검색

    Programming

    • 12.4 쓰레드의 우선순위 컨트롤

      2020.04.19 by RACC8N

    • 12.3 쓰레드의 상태 컨트롤

      2020.04.19 by RACC8N

    • 12.2 쓰레드의 성격과 특성

      2020.04.19 by RACC8N

    • 12.1 Windows에서의 쓰레드 생성과 소멸

      2020.04.19 by RACC8N

    • 11.2 쓰레드 구현 모델에 따른 구분

      2020.04.19 by RACC8N

    • 11.1 쓰레드란 무엇인가?

      2020.04.19 by RACC8N

    • 09.1 프로세스의 스케줄링(Scheduling)

      2020.04.18 by RACC8N

    • 08.3 프로세스 환경변수

      2020.04.18 by RACC8N

    12.4 쓰레드의 우선순위 컨트롤

    프로세스는 실행의 주체가 아닌 쓰레드를 담는 그릇에 지나지 않는다. * Windows에서는 프로세스가 우선순위를 갖는 것이 아니라, 프로세스 안에서 동작하는 쓰레드가 우선순위를 갖는다. 이전에 말한 프로세스의 우선순위를 가리켜 기준 우선순위라고 표현한다. 쓰레드는 상대적 우선순위를 갖는다. THREAD_PRIORITY_LOWEST -2 THREAD_PRIORITY_BELOW_NORMAL -1 THREAD_PRIORITY_NORMAL 0 (Default) THREAD_PRIORITY_ABOVE_NORMAL +1 THREAD_PRIORITY_HIGHEST +2 - 쓰레드의 우선순위는 프로세스의 기준 우선순위와 쓰레드의 상대적 우선순위의 조합으로 결정된다. [EXAMPLE] 기준 우선순위가 NORMAL_PRI..

    Programming/Windows System 2020. 4. 19. 17:22

    12.3 쓰레드의 상태 컨트롤

    쓰레드의 상태 변화 - Windows에서는 상태가 변화하는 주체가 프로세스가 아니라 쓰레드이다. https://pwnkidh8n.tistory.com/123?category=871712 05.2 프로세스의 스케줄링과 상태 변화, 컨텍스트 스위칭 프로세스의 스케줄링(Scheduling) CPU는 하나인데, 어떻게 여러 개의 프로그램이 동시에 실행 가능한 것인가? 기본적으로 CPU는 한 순간에 하나의 프로그램만 실행 가능하다. -> 하나의 CPU가 여러 개의 프로세스.. pwnkidh8n.tistory.com - 이제 프로세스에서 쓰레드로 바꿔 생각하면 된다. Suspend & Resume - 특정 쓰레드를 지목하여 Blocked 상태 혹은 Ready 상태로 이동 시킬 수 있다. 쓰레드를 Blocked 시키..

    Programming/Windows System 2020. 4. 19. 17:07

    12.2 쓰레드의 성격과 특성

    Heap, Data, Code 영역의 공유 - 쓰레드는 메모리를 공유한다. (Heap, Data, Code) 동시접근에 있어서의 문제점 [EXAMPLE] 현재 변수 total의 값은 10이고 두 개의 쓰레드가 각각 6과 9를 더하는 상황이라고 가정해 보자. 6을 더하는 쓰레드를 A쓰레드, 9를 더하는 쓰레드를 B쓰레드라고 하겠다. CPU는 현재 A쓰레드 과정에 있다. 6을 더한 16을 이제 메모리에 저장하면 된다. 그런데 이때 스케줄러에 의해서 실행 대상이 A쓰레드에서 B쓰레드로 이동하였다. A쓰레드의 연산 값을 임시저장하고, B쓰레드는 total 값 10을 갖고와 9를 더해 19가 되었다. B쓰레드의 연산결과인 19가 total에 저장되고 다시 A쓰레드로 바뀌었다. A쓰레드는 임시저장했던 16을 tot..

    Programming/Windows System 2020. 4. 19. 16:55

    12.1 Windows에서의 쓰레드 생성과 소멸

    쓰레드의 생성 쓰레드 생성 함수 : CreateThread() lpThreadAttributes 보안 속성 지정 (핸들 상속 여부) dwStackSize 쓰레드의 스택 크기 지정 ( 0 : default ) lpStartAddress 쓰레드로 동작하기 위한 함수 (쓰레드의 Main 역할을 하는 함수) 반환 타입 : DWORD, 매개변수 타입 : LPVOID(void*) lpParameter 쓰레드 함수에 전달할 인자 지정 (main 함수의 argv와 유사) dwCreationFlags 쓰레드의 생성 및 실행을 조절 (CREATE_SUSPENDED : 쓰레드 생성과 동시에 blocked상태) lpThreadId 쓰레드 ID를 전달받기 위한 변수의 주소값을 전달 (필요 없으면 NULL) 쓰레드 흐름도 - m..

    Programming/Windows System 2020. 4. 19. 15:18

    11.2 쓰레드 구현 모델에 따른 구분

    쓰레드는 누구에 의해 만들어 지는가? 커널 레벨(Kernel Level) 쓰레드와 유저 레벨(User Level) 쓰레드 - 커널 레벨 쓰레드와 유저 레벨 쓰레드는 기능의 제공 주체가 누구야에 달려있다. 1. 커널 레벨(Kernel Level) 쓰레드 - 쓰레드를 생성해 주는 대상이 커널 - 운영체제가 제공하는 시스템 함수 호출을 통해서 쓰레드 생성을 요구 > 프로그래머 요청에 따라 쓰레드를 생성 및 스케줄링하는 주체가 커널 유저 영역 : 일반 프로그램이 동작하기 위해 사용되는 메모리 공간 (Code, Data, Heap, Stack) 커널 영역 : 운영체제라는 하나의 소프트웨어를 실행시키기 위해서 필요한 메모리 공간 - 쓰레드 A,B,C의 실행코드는 유저 영역에 존재할 것이다. 그러나 스케줄러와 쓰레드..

    Programming/Windows System 2020. 4. 19. 13:13

    11.1 쓰레드란 무엇인가?

    하나의 프로그램 내에서 둘 이상의 실행 흐름을 두기 위해서, 모든 것을 독립시키는 구조(Process)로 갈 필요는 없다. > 쓰레드의 등장 프로세스는 완전히 독립된 두 개의 프로그램 실행을 위해서 사용된다. > 쓰레드는 하나의 프로그램 내에서 둘 이상의 프로그램 흐름을 만들어 내기 위해서 디자인된 것이다. > 쓰레드간에는 공유하는 상태 정보들이 있다. 이것이 쓰레드의 컨텍스트 스위칭을 빠리게 하는 요인이 된다. ● 쓰레드는 하나의 프로그램 내에서 여러 개의 실행 흐름을 두기 위한 모델이다. ● 쓰레드는 프로세스처럼 완벽히 독립적인 구조가 아니다. 쓰레드들 사이에는 공유하는 요소들이 있다. ● 쓰레드는 공유하는 요소가 있는 관계로 컨텍스트 스위칭에 걸리는 시간이 프로세스보다 짧다. 메모리 구조 관점에서 ..

    Programming/Windows System 2020. 4. 19. 11:35

    09.1 프로세스의 스케줄링(Scheduling)

    일반 OS와 리얼타임(Real Time) OS (응답성으로 OS를 구분) - RTOS와 일반 OS의 차이는 응답성(응답속도)에 있다. 일반 OS는 범용적인 사용을 위해서 디자인 되어있다. RTOS는 사용하는 영역이 제한적이다. 범용적인 OS보다 하는 일이 적다. ※ RTOS는 일반 OS에 비해서 속도가 빠른 것이 아니다. 사용되는 목적이 구체적이고 제한적이다 보니, 보다 단순하게 디자인되어 있고 일반 OS에 비해서 훨씬 가볍다. 따라서 응답성이 좋을 뿐이다. Soft RTOS vs Hard RTOS Soft RTOS : 하는 일이 특화되다 보니 응답성이 일반 OS에 비해 좋은 것뿐. 접하는 대부분의 RTOS 가 Soft RTOS Hard RTOS : 데드라인(Dead Line)이 존재. 정말 크리티컬한 ..

    Programming/Windows System 2020. 4. 18. 20:13

    08.3 프로세스 환경변수

    환경변수 : 프로세스별로 별도의 메모리 공간에 문자열 데이터를 저장하고 관리할 수 있도록 되어 있다. key = value 부모 프로세스는 자식 프로세스 생성 시, 자식 프로세스의 환경변수를 등록할 수도 있고, 그냥 부모 프로세스의 환경변수를 상속시킬 수 있다. 환경변수 등록 함수 : SetEnvironmentVariable() lpName key에 해당하는 값을 지정 (key를 통해 value를 참조하게 됨) lpValue value에 해당하는 값을 지정 환경변수 참조 함수 : GetEnvironmentVariable() lpName key를 전달 (key에 해당하는 value를 얻게 됨) lpBuffer value 값을 저장하기 위한 메모리의 주소 지정 nSize lpBuffer가 가리키는 메모리의 ..

    Programming/Windows System 2020. 4. 18. 19:18

    추가 정보

    페이징

    이전
    1 2 3
    다음
    TISTORY
    pwnkidhn.github.io © rvkhun
    페이스북 트위터 인스타그램 유투브 메일

    티스토리툴바