- 
                            
                            Code,Data SectionHack/Reversing 2015. 4. 14. 18:25TCHAR 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