이메일을 적으시면 보안관련 소식을 받을수 있습니다.
이메일:

안녕하세요. 최만균 입니다.
본격적인 리버싱을 하기 전에 기초부터 튼튼히 하기 위해서 윈도우의 기초부터 시작합니다.


1. 가상 메모리

가상 메모리는 운영체제의 기본적인 메모리 관리 기법으로서 소프트웨어가 물리 메모리에 직접 접근해서 사용하는
대신에 프로세서가 운영체제와 조합해서 소프트웨어와 물리 메모리 사이에 가상의 계층을 만드는 것 입니다.


virtual memory is a memory management technique developed for multitasking kernels. This technique virtualizes a computer architecture's various forms of computer data storage (such as random-access memory and disk storage), allowing a program to be designed as though there is only one kind of memory, "virtual" memory, which behaves like directly addressable read/write memory (RAM). 
source : http://en.wikipedia.org/wiki/Virtual_memory 



프로세서는 모든 메모리 접근에 대해서 페이지 테이블이라는 테이블을 참고하고, 프로세스에게 어떤 물리 메모리를
실제로 사용해야 하는지 알려줍니다.

또한, 물리 메모리는 페이지라는 단위로 관리되는데 페이지는 고정된 크기의 메모리 블록 입니다.
일반적인 IA-32 프로세서 기준으로 페이지의 크기는 4K를 사용 합니다.

페이지 테이블의 각 엔트리는 하나의 물리 메모리 페이지에 대응되는데, 즉 프로세스 메모리와 물리 메모리를 매핑
시켜주는 것이 페이지 테이블 입니다.

페이지 테이블의 장점은, 프로그램들을 완벽하게 독립적으로 격리시키고, 각 프로세스는 자신이 실행되기 위한
자신만의 작은 샌드박스를 가질 수 있습니다.


http://www.hanb.co.kr/network/view.html?bi_id=1326





2. 페이징(Paging)

페이징은 물리 메모리에서 사용되지 않고 있는 메모리 영역이 하드 드라이브에 일시적으로 저장되는 과정을 말합니다.
물리 메모리는 빠르고 비싸기 때문에 오랫동안 사용하지 않는 영역은 하드 드라이브로 저장시키고 계속해서 메모리
사용을 요청하는 프로세스들에게 메모리를 할당하기 위해 사용하는 기법 입니다.

일반적으로 우리가 이미 알고 있는 하드디스크 스왑핑의 개념으로서 컴퓨터가 갖고 있는 실제 메모리보다 많은
공간을 메모리로 사용할 수 있는 이론적인 기초가 됩니다.(물론 페이징이 많아지면 속도가 느려지겠죠)

추가로, 이미 페이징된 페이지(즉, 물리 메모리에서 하드디스크로 옮겨진 페이지)에 접근이 발생하면 프로세서는
페이지 폴트(Page fault)를 발생시키며, 운영체제는 페이징 파일(페이징된 메모리 내용이 존재하는 파일)에서
해당 페이지 내용을 읽어 메모리에 적재 시킵니다.
(이 때도 물리 메모리 공간이 부족하면 오랫동안 사용되지 않았던 영역을 페이징 시킵니다)


http://en.wikipedia.org/wiki/Virtual_memory





마지막으로 가상 메모리와 물리 메모리와의 관계를 그리면 위와 같습니다. 중간에 페이지 테이블이 빠져 있긴 하지만,
이해하시는데 큰 문제는 없으리라 봅니다.



※ 참고

리버싱:리버스엔지니어링비밀을파헤치다
카테고리 컴퓨터/IT > 네트워크/보안
지은이 엘다드 에일람 (에이콘출판, 2009년)
상세보기


http://www.hanb.co.kr/network/view.html?bi_id=1326
http://www.simpleisbest.net/post/2011/05/02/Virtual-Memory-vs-Physical-Memory.aspx
http://rein.kr/blog/archives/560
http://blog.naver.com/PostView.nhn?blogId=gunner98&logNo=110017337792
http://en.wikipedia.org/wiki/Virtual_memory
저작자 표시 비영리 변경 금지
신고
****************************************************************************************************

본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..

****************************************************************************************************

Posted by 비회원

댓글을 달아 주세요

  1. Favicon of http://boanin.tistory.com BlogIcon John_G 2011.09.29 22:33 신고  댓글주소  수정/삭제  댓글쓰기

    포스팅한 내용은 잘 읽어 보았습니다.
    좀더 심도 있는 리버싱을 하기 위해서는 시스템의 동작이나 내부 구조에 대하여 충분한 지식이 있어야합니다. 이에 대하여 해당 포스팅은 리버서를 준비하는 분들에겐 좋은 정보가 될것입니다. ^^

    또한 포스팅 내용을 읽어보던 중 제가 알고 있던 내용과 조금 틀어지는 개념들이 있는 듯합니다.

    저는 페이징 기법(Paging)은 가상 메모리 공간을 페이지(page) 단위로 분류하여 페이지 테이블을 통해 물리 메모리와의 매칭이 될 수 있도록 하는 기법 자체를 의미하는것으로 이해하고 있습니다.
    또한 포스팅에서 설명된 하드 디스크(드라이브)에 저장되는 것은 스와핑 기법에 설명 되어져야 할 부분으로 판단 됩니다.

    페이징 기법(Paging) 과 스와핑 기법(swapping) 의 정의에 대한 확실한 기준이 되는 부분을 설정할 때 개개인 마다 다를 수도 같을 수도 있겠지만 단어 의미 자체로서 한정된 의미로 이해하고 있는 저의 경우로서는 해당 설명이 페이징 보다는 스와핑 기법에 대한 설명으로 보여집니다.

    관련 내용을 좀더 명확하게 설명하기 위해 추가로 스와핑 기법을 언급해 주시는것도 좋을 듯 합니다.

    "하라는 포스팅은 안하고 다른 분 포스팅에 딴지 글 달러온 저를 용서해 주세요 ㅠㅠ"
    by JohnG

  2. Favicon of http://www.onlinebettingaus.com BlogIcon online betting 2011.10.13 23:48 신고  댓글주소  수정/삭제  댓글쓰기

    시스템의 동작이나 내부 구조에 대하여 충분한 지식이 있어야합니다. 이에 대하여 해당 포스팅은 리버서를 준비하는 분들에겐 좋은 정보가 될것입니다. ^^