Sh4n3e
오늘은 간단하게 프로그램의 구조와 프로그램내에 존재하는 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..