목록PE구조 (6)
IT하는 참새
오늘의 목표: 서론: 프로그램이 실행되었다 -> 메모리에 올라갔다 -> 그럼 메모리상의 주소를 쓴다(VA) 우리는 여태까지 File형태로.. Offset인가 뭔지하는거로.. 주소를 찾아서 값을 읽었는데?? 본론: 메모리상의 주소를 File형태에서의 Offset(RAW)로 변환하는 방법을 알아보자! (그럼 편할듯 ㅇㅇ) 이걸 전문용어로 RVA to RAW 라고 합니다. (뭔가 있어보임) 다시 용어정리 VA = 가상메모리의 절대주소 (메모리 올라갔을때임) RVA = 가상메모리의 상대주소 (메모리 올라갔을때임) RAW(Offset) = File형태에서의 주소 (File 형태에서임) VA = ImageBase + RVA라고 했었습니다. 됐고 변환하는 방법이나 봅시다. 1. RVA가 속해있는 Section을 찾아..
이번시간에는 Section Header를 알아보겠습니다. 진짜 의식의 흐름대로 잘만 따라오면 안어려워요 PE구조 시작! Section Header: 각 Section들의 성질? 특징을 정의해놓은 것을 의미합니다. 그리고 얘도 구조체로 존재합니다 IMAGE_SECTION_HEADER 섹션이름 제가 Section1, Section2 이렇게 이름붙였는데 사실은 보통 쓰는 이름이 있습니다 (절대적인 이름이 아님을 강조) section(".text"), section(".data"), section(".rsrc") 뭐 이렇게요. 이름이 .text .data .rsrc 에요 이 각기다른 Section들에 정보를 저장합니다. 왜요? 뭐가 편하니까 그렇게 했겠죠 (프로그램의 안정성 때문입니다) 각기 다른 역할로 나누어..
오늘 공부할 내용: PE Header 에서 1. DOS Header 2. DOS Stub 3. NT Header 나머지 Section Header들은 다음에 하겠습니다! (PE View프로그램을 켜주세요) --------------------------------------------------------------------------------------------------------- 1. DOS Header 이거는 DOS파일에 대한 호환성을 고려해서 만든것인데요. 그래서 이거를 확장시킨 구조체인 IMAGE_DOS_HEADER가 존재합니다 그냥 DOS Header라는 것을 IMAGE_DOS_HEADER라는 구조체로 만든것입니다. 이 구조체가 어떻게 생겼는지 우리는 알아야 합니다...!! (직접한번..
PE의 기본구조에 대해 알아보겠습니다 두가지 경우가 있습니다. 1. 하드디스크에 '파일'로 존재해 있을 때 2. 실행되어 메모리에 올라가 있을 때 두 가지 경우에 대해 잘 이해해야 합니다. ------------------------------------------------------------------------------------------------------ 두가지 경우가 나뉘었더라도 PE구조라는것은 변하지 않았습니다! 얄루 PE구조를 말로설명한 후에 그림으로 나타내보겠습니다. DOS header DOS Stub NT header section header1 section header2 . . . ------------------ section1 (body) section2 (body) . ..
PE란?? PE File Format PE = Portable Executable 그냥 우리가 사용하는 윈도우에서 사용하는 실행파일 형식이라고 생각하면 됩니다. (자세히 말하면 내 프로그램이 어디운영체제에서든지 잘 실행되게 하도록 하는 구조입니다) (근데 윈도우에서밖에 안써요) (32비트: PE32, 64비트: PE32+ 또는 PE+) PE64 아닙니다! 확장자 종류: EXE, SCR, SYS, VXD, DLL, OCX, CPL, DRV, OBJ 뭐 이렇게 있는데 외울 필요는 없고 그냥! 나중에 직접 파일을 보면됩니다. 위의 확장자들로 끝나는 파일은 다 실행파일입니다. 그런데 우리가 익숙한건 EXE 이놈밖에 없어요 게임할때나 음악들을때나 EXE 얘로끝나는건 그냥 더블클릭하니까 실행이 되구나! 하고 지나쳐..