-
Code,Data SectionHack/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