본문 바로가기

pe구조

.reloc section 제거 앞서 PE Relocation에 대해서 알아봤습니다. 해당 주소가 사용 중이라면 다른 임의의 주소로 이동한다는 개념이였습니다. 이러한 정보를 관리하는 곳이 reloc Section 이였다는 것도 말이죠. 하지만 reloc Section이 없어도 프로그램은 실행됩니다. 단지 재배치를 위한 것이기 때문이죠.ASLR 기능이 추가 되었다고 했는데, 이 기능은 보안상으로도 매우 중요한 역할을 합니다. reloc Section Header 정리 PEView에서 reloc Section의 File Offset은 280 입니다. 해당 주소 부터 모두 0으로 채워 주도록 합니다. reloc Section 제거 PEView에서 Pointer to Raw Data 값이 31600임을 알 수 있습니다. 해당 주소로 이동해서 .. 더보기
IAT (Import Address Table) IAT (Import Address Table) IAT는 프로그램에서 어떤 DLL을 사용하는지 알려주는 테이블입니다. *DLL ( Dynamic Linked Library)DLL은 프로그램마다 동일한 라이브러리가 포함되어 실행되면 메모리 낭비가 심해지기 때문에 이를 방지하기 위해서 DLL 파일을 만들어 프로그램이 필요할 때만 불러쓰도록 하기 위한 것입니다.또 한번 로딩된 DLL은 Memory Mapping을 이용하여 Process에서 공유해 쓰도록 합니다. *DLL 로딩 방식Explicit Linking: 프로그램에서 이용되는 순간에 로딩하고 사용이 끝나면 해제되는 방법.Implicit Linking: 프로그램이 시작할때 로딩되어 종료할 때 메모리에서 해제되는 방법. IAT는 Implicit Linkin.. 더보기
VA & RVA PE 구조를 배우기 앞서서 VA와 RVA에 대해서 알아보도록 하겠습니다. VA는 Virtual Address로 가상주소를 뜻하며, RVA는 Relative Virtual Address로 상대주소를 뜻합니다. RVA는 상대주로라고 말했는데 ImageBase부터의 상대주소를 뜻합니다. 가상 메모리에서의 Offset 개념입니다. Offset은 파일에서의 위치를 나타냅니다. 즉, RVA는 메모리에서의 위치라고 생각하시면 됩니다. 이렇게 글로만 봐서는 쉽게 이해하기 어렵습니다. 뒤에 이어지는 PE구조를 공부하시다 보면 쉽게 이해가 되실겁니다. 우리가 사용하는 시스템은 다음과 같이 메모리를 사용하게 됩니다. 물리주소를 보면 빨간 영역은 프로그램이 할당되어 사용되어지고 있는 영역입니다. 파란 영역은 사용되지 않고 있.. 더보기