ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Code,Data Section
    Hack/Reversing 2015. 4. 14. 18:25

    TCHAR g_Name[] = "Hello World";


    int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,PSTR szCmdLine, int iCmdShow)

    {

    HWND hWnd;

    MSG msg;

    LPBYTE pBuff = new BYTE[512];


    if(!RegisterClass(&WndClass))

    {

    MessageBox(NULL,"Windows Class",g_Name,MB_OK);


    return 0;

    }


    ....

    }


    이러한 코드가 있다고 보자.


    프로그램은 코드와 데이터, 힙, 스택 이렇게 메모리구조가 나뉘게되는데, 이 코드에서 쉽게 설명해보고자 한다.



    TCHAR g_Name[] = "Hello World";   // .data

    MessageBox의 "Windows Class"        // .rdata


    두개의 문자열은 데이터에 속한다.


    HWND hWnd;

    MSG msg;


    두개는 스택에 들어간다


    new BYTE[512];


    해당 부분은 힙에 들어가게된다.


    모든것을 Code로 통일한다.




    코드영역은 PE가 가상주소 공간에 매핑되면 .text섹션이되고, 데이터영역은 매핑된 .data섹션과 .rdata섹션에 해당한다.


    PE의 섹션과 데이터 섹션이 메모리상에 매핑되면서 각 섹션 자체가 코드와 데이터 영역의 역할을 하게된다.



    'Hack > Reversing' 카테고리의 다른 글

    Assembly  (0) 2015.07.15
    jmp  (0) 2015.04.14
    RVA 실제 번지 변환 계산  (0) 2015.04.13
    Process32NextW 우회  (0) 2015.03.09
    [CodeEngn]Advanced 04  (0) 2015.03.07

    댓글

Designed by Tistory.