전체 글 69

[Windows System] 메모리 계층(Memory Hierarchy)

메모리 종류 : 1. 메인(Main) 메모리 : 램(RAM) (D램) 2. 레지스터(Register) : CPU 안에 내장되어 있어서 연산을 위한 저장소 제공 3. 캐쉬(Cache) : S램. CPU와 램사이에서 중간 저장소 역할 4. 하드디스크(Hard Disk)와 이외 장치 : 하드 디스크, I/O 장치 등등 메모리 계층 구조(Memory Hierarchy) : 메모리들은 프로그램이 실행하는 동안 데이터의 입력 및 출력을 담당한다. 메모리들의 차이는 CPU 와의 거리에서 온다. CPU와의 거리가 가까울수록 빠르고 용량이 작으며 멀수록 느리고 용량이 크다.(기술과 돈의 문제) 하드디스크에 있는 내용은 프로그램의 실행을 위해 메인 메모리로 이동한다. 메인 메모리에 있는 일부 데이터도 실행을 위해 L2 캐..

[Windows System] MMF(Memory Mapped File)

개념 : File 을 Memory 에 Mapping(연결) 가상 메모리 중 파일에 연결되어 있는 영역에 데이터를 저장한다. 이렇게 메모리에 저장된 데이터는 실제 파일에도 영향을 미친다. 즉, 데이터가 메모리뿐만 아니라 메모리에 연결된 파일에도 저장되는 것이다. 장점 : 1. 프로그래밍 편리 : 메모리상에 저장된 데이터를 조작하는 방식으로 파일 내 데이터를 조작할 수 있다. 2. 성능 향상 : 메모리는 중간에서 파일과 데이터의 캐쉬 역할을 하여 성능을 향상시킨다. MMF 구현 : 1. 파일 개방 : CreateFile() 2. 파일 연결 오브젝트 생성 : CreateFileMapping() HANDLE CreateFileMapping( HANDLE hFile, // 메모리에 연결할 파일의 핸들 LPSECU..

[Windows System] 라이브러리

라이브러리(Library) : 여러 프로그램에서 자주 사용하는 함수와 데이터들을 실행이 가능한 바이너리 형태로 묶어놓은 파일을 의미한다. (참고 : 즉, 함수와 데이터들의 정의가 컴파일된 바이너리 코드로 라이브러리에 존재한다) 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)(ex. ---d.lib : 디버그 모드로 컴파일) Static Library : 정적 라이브러리 개념 : 헤더파..

[Windows System] 비동기 I/O 와 APC

개념 : 동기 I/O : I/O 작업의 수행을 위해 호출된 함수가 블로킹 상태에 놓이기 때문에 CPU는 블로킹 상태에서 반환될 때까지 일을 하지못한다. 비동기 I/O : I/O 작업의 수행을 위해 함수를 호출하자마자 반환한다. 따라서 CPU는 그다음 작업을 진행한다. 중첩(Overlapped) I/O : 넌블로킹(Non-Blocking) 함수를 이용하여 여러작업을 동시에 진행한다. 함수가 바로 반환되므로 계속 중첩해서 I/O 요청을 할수가 있다. (참고 : 동기 방식(블로킹) I/O 에서는 전송을 위해 할당된 내부 메모리 버퍼에 데이터가 복사가 되면 함수가 반환된다. (데이터 전송이 완료될 때 반환되는 것이 아니다) OVERAPPED 구조체 typedef struct _OVERLAPPED { ULONG_..

[Windows System] 디렉터리 컨트롤

디렉터리의 생성과 소멸 : BOOL CreateDirectory( LPCTSTR lpPathName, // 생성하려는 디렉터리 이름 LPSECURITY_ATTRIBUTES lpSecurityAttributes // 보안속성 ); BOOL RemoveDirectory( LPCTSTR lpPathName // 소멸하려는 디렉터리 이름 ); (참고 : 절대경로 지정시 마지막 디렉터리만 생성한다. 즉, C:\\AAA\BBB 일때 (AAA 디렉터리는 존재하지 않는다) 컴퓨터는 절대로 AAA 디렉터리를 만들어 주지 않는다. 따라서 BBB 디렉터리도 만들어지지 않는다. AAA 디렉터리가 존재해야 BBB 디렉터리가 생성된다. 현재 디렉터리, 시스템 디렉터리, Windows 디렉터리 : 현재 디렉터리(Current Di..

[Reverse Engineering::Reversing 도움자료] 기초 선수과목_어셈블리어

어셈블리어 관련 문서  [해커스쿨 : http://www.hackerschool.org/HS_Boards/data/Lib_prog/Asm.pdf] 문서에 관한 간단한 용어 설명 [Page.4] 맵핑 : ~~에 ~~를 할당한다는 뜻으로 이해하면 될 것 같다. 세그먼트와 오프셋에서 중간에 bus라는 말이 나온다. 그리고 그아래 16비트 로케이션이란 말이 나오는데 그 뜻은 16bit로 표현할 수 있는 메모리 주소를 말하는데, 1bit는 2개의 숫자를 표현(0 or 1)할 수 있으니 16bit로 메모리 주소를 표현하면 최대 값은 2^16(범위는 0 ~ 2^16-1)이다. 그래서 프로세스가 RAM에 자료를 쓸 필요가 있을 때 버스를 통해 16bit 로케이션을 보낸다. 이전에는 컴퓨터가 가질 수 있는 메모리에 한..

[Windows System] 파일 입출력(File Input/Output)

파일 열기 : HANDLE CreateFile( LPCTSTR lpFileName, // 개방(open)할 파일 이름 DWORD dwDesiredAccess, // 읽기/쓰기 모드를 지정한다.(or (l) 연산으로 결합) GENERIC_READ : 읽기 모드 GENERIC_WRITE : 쓰기 모드 DWORD dwShareMode, // 파일 공유방식 0 : 다른 프로세스에 절대 공유 불가. 중복 개방 불가 FILE_SHARE_READ : 다른 프로세스에서 동시 읽기 접근 가능 FILE_SHARE_WRITE : 다른 프로세스에서 동기 쓰기 접근 가능 LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 보안 속성 DWORD dwCreationDisposition, // 파일의..

[Windows System] 가상 메모리(Virtual Memory)

개념 : (가정 : 16비트 시스템(0 ~ 64K -1 주소), 프로세스별로 64KB의 가상 메모리 할당, 메인 메모리 16KB) MMU(Memory Management Unit) : 실제로 존재하는 메모리 크기를 가상 메모리 크기만큼 존재하는 것처럼 CPU가 느끼도록 컨트롤 한다.(ex. 1GB 램의 메모리를 4GB의 메모리가 존재하는 것처럼 CPU가 느끼도록 한다) 가상 메모리 구성에 필요한 시스템의 기본 기능(메모리 할당 및 변환)을 제공한다. (CPU와 함께 하나로 패키징(Packaging) 되있다) CPU - > MMU : 메인 메모리에서 사용되지 않는 메모리 블록 하나를 골라서 할당 (1K부터 20바이트 할당요청) 20바이트를 할당 요청했음에도 메모리 블록은 4K 바이트 단위라서 4 K 를 할..

Windows에서 소켓프로그래밍하기-기초

으흠~~ 소켓프로그래밍을 할 때 꼭 들어가야 하는 필수 함수들을 정리해보고 가자~~!! (이렇게 정리를 하고 가면 나중에 까먹어도 쉽게 찾을 수 있으니깐~~) Let's~~~~~~~~~~~~~~~ GO~!!! ========================================================================================== 소켓 통신을 할 때 윈도우즈에서 가장 먼저 시행되어야 할 함수는 WSAStartup()함수이다. 머하는 함수인고 하니... 사용할 윈도우소켓의 버전을 명시하고, 소켓 관련 정보들을 리턴하는 함수. 이 함수를 실행시키지 않으면 다른 소켓관련 함수들을 쓸 수 없다고 한다. 인자 값으로는 2개의 인자가 들어간다. 인자의 용도와 인자의 쓰임을 정..