목록System Hacking (14)
Sh4n3e
오늘은 PE(Portable Excutable) 파일 구조에 대해 설명하는 2번째 시간입니다. Import Table에 대해서 설명 드리겠습니다. Import Table은 PE파일이 실행될 때 외부로부터 가져와서 사용하는 함수들(DLL)의 목록이 들어있는 Table입니다. DLL은 함수를 Export하고 EXE파일이 그 DLL로부터 함수를 Import합니다. Export된 함수를 가져온다는 것은 결국 해당 DLL과 사용하는 함수에 대한 정보를 어딘가에 저장한다는 것을 의미합니다. 사용하고자 하는 Export 함수들과 그 DLL에 대한 정보를 저장하고 있는 곳이 바로 Import Table인 것입니다. 좀 더 쉬운 이해를 위해 그림을 통해 설명하겠습니다. 우선 IMAGE_DIRECTORY_ENTRY_IMP..
오늘은 PE(Portable Executable) 파일 구조에 대해 설명해 보겠습니다. 우선은 구조에 들어가기 앞서 간단한 정의를 집어보고 넘어가겠습니다. PE 파일이란? Portable Executable 파일의 약자로 명령(Operation Codes, OP Codes)에 따라 지시된 작업을 수행하도록 작성된 파일로 실행코드, 전역데이터, Import/Export 함수정보, 리소스 데이터 등을 포함하고 있는 파일이라고 할 수 있습니다. 이 파일은 여러 개의 구조체로 엮여 있으며, 윈도우 커널의 PE로더를 통해 실행가능한 파일로 판단되었을 때, 메모리에 프로그램을 올림으로써 실행할 수 있게 됩니다. 이 구조를 가지고있는 파일의 종류로는 실행파일(EXE), 라이브러리(DLL, LIB), 드라이버(SYS)..
오늘은 간단하게 프로그램의 구조와 프로그램내에 존재하는 Stack영역에 대해서 볼 생각입니다. 이번 시간이 끝나게되면, 프로그램의 구조를 좀더 자세히 쪼개어 PE(Portable Excutable) File에 대해서 한번 알아볼 것입니다. 우리가 사용하는 Windows 32bit Application Program의 경우 PE구조를 지니고 있습니다. 이 PE구조를 크게 보면 아래의 그림과 같을 것 입니다. 이러한 콘텐츠를 좀더 잘게 잘라서 생각해보면, TEXT영역, DATA영역, RESOURCE DATA영역 3가지로 나눠볼 수 있습니다. TEXT영역의 경우 실제 변환된 코드가 들어가 있으며, DATA영역은 String정보, RESOURCE DATA영역의 경우 리소스에 관련된 기타 정보들을 담고 있습니다...
우리가 사용하는 많은 프로그램들은 어떻게 실행이 되는 걸까요? 앞으로 Reverse Engineering(역공학, 리버스 엔지니어링)을 공부하면서, 이런 프로그램들이 어떻게 만들어지는 것이고, 어떻게 작동되는 것인지에 대해서 알아볼 계획입니다. 첫째로, 우리가 Windows 환경에서 사용하는 대부분의 프로그램들은 32bit기준으로 작성된 프로그램들입니다. 보통 말하는 x86과 x64는 인텔이 개발한 마이크로프로세서 계열을 부르는 말이자, 이들과 호환되는 프로세서들에서 사용한 명령어 집합 구조들을 통칭하는 말입니다. 여기서 x86은 32bit의 체제를 말하며, x64는 64bit의 체제를 말합니다. 우리는 역공학을 하기 앞서 이 프로세서들이 갖고있는 레지스터들의 특징을 알아 합니다. 범용레지스터로는 총 8..