PE둥PE둥 놀면서 훑어보는 PE(1)

By conchi | December 7, 2016

PE둥PE둥 놀면서 훑어보는 PE(1)


부제 : 점점 갈곳을 잃어가는 32bit PE를 위한 특집!

PE가 무엇인지, 우리는 왜 이런걸 알아야 하는지 어디한번 들어나보자.




안녕하세여 여러분 ㅎㅎㅎㅎ 오랜만이네여 제가 컴퓨터 앞에서.. 이렇게 낭낭하게 글을 또(!!) 쓰려고 합니다!



오랜만에 이렇게 여러분을 만나뵙게 되어 콘치는 넘나 반갑습니당. ㅎㅋㅎㅋ

제목만 보시고 ‘아니 이건 또 무슨 방구같은 소리야’ 하고 들어오셨겠죠?

후 설마 지난편을 그렇게 난리쳐놓고 또 그러려고 왔습니다(?) ㅎㅎ


저는 이번에도 방구같은 소리로 여러분을 혼란스럽게 할 계획입니다.ㅋㅋㅋㅋㅋㅋ으으ㅋㅋㅋㅋ

“안본 눈 삽니다 선제必, 사재기 ㄴㄴ, 귓ok 16채 자시 입구” 라고 하고 싶겠지만

아마 너도 나도 봤기 때문에 안 본 눈을 사기는 어려울거에요.


그러니 그냥 다른분들에게 이거 졸잼임 강츄! 하면서 링크공유나 하시는게 아마 정신건강에 이로울듯 합니다.

이부자리를 펴시고 이불속에 들어가셔서 에어컨은 27도 정도 맞춰주시고, 선풍기 틀고 휴대폰으로 보실 준비 해주세요.




이번엔 어떤 이야기를 또 신나게 해볼까 고민하다가 저에게 씁쓸한(?) 추억이 있는 PE에 대해 이야기하기로 결심했습니다.


이번편에서 언급하고자 하는 PE는 32bit PE인데여-

사실 요즘 OS도 32bit 보다는 대부분이 64bit 이고..

CTF에서도 32bit 바이너리보다 64bit 바이너리가 대세기도 하고…


시대의 흐름을 따르는걸 좋아하는 콘치이지만 점점 사라져 가는 32bit PE….


나의 대뇌 어딘가에서 그동안 묵묵히 ‘혼돈의 카오스를’담당 해왔던 32bit PE를 이대로 보내주기엔 아쉬워

이렇게 나님의 소중한 시간을 내어 32bit PE를 위한 특집을 만들어주기로 했어요.(추억팔이에 심취함)


그러니 우리모두 경건한 마음으로 콘치와 함께 32bit PE를 알아보도록 해여.

(불가능할것 같은 느낌적인 느낌이 드는건 기분탓입니다)

지금부터 말하는 PE는 32bit PE라는점 잊지마시고, 시작하겠습니당 퍕퍕!




그동안 PE라 하면 매번..막 뭔가 봐야할것도 많아보이고…

넘나.. 노잼이라.. =_=… 항상 리버싱 책에 ★반.드.시★ 나오지만

대충 슬쩍 보고 다음에 필요하면 책보고 따로 공부해야지 닐리릴리!!!‘0’!!

하고는 그뒤로 두번다시 해당 부분은 보지 않고 넘어가는부분이었죠.

뭐 다들 그런거 아닌가여 ㅋㅋㅋㅋㅋ저만 그런거 아니져?(는 혼자 그랬다고 한다)


PE파일 포맷이라는 단원이 나오면 앞에 몇마디 보다가 DOS Header나오는순간 !!


  • “이건! 다음에 날잡아서 봐야겠다!! ” 하고 넘어가는…

  • 즐겨찾기에 PE관련글만 20개가 넘지만 제대로 본적 없는…

  • PE관련 글이라하면 일단 공유부터 하고 보지만 내용은 안보는…

  • 아 이거 누가 노잼이라 그랬는데 다음에 해야짓!! 하고 더이상 안보는…


그런 저같은 노(NO)근성 유저들은 이번 시리즈를 참고하면 PE와 조금 친해질 수 있지 않을까

헛된 기대를 한번 낭낭하게 해보는 콘치입니다.


제목에서부터 야매의(?)기운이 느껴지지만

아닐거에요. 아니겠죠. 아닐겁니다ㅎㅎ…




[주의사항]


이번시리즈는 아마 PE를 잘 아시는분들에겐 내재된 화가 올라올지도 모르는 글입니다.

진지하게 PE를공부하고 싶으신 분들은 솔직히 말해서 이 글 보다 훠어어어어얼씬 좋은 자료들이

구글에 조금만 검색해도 많이 준비되어있으니 참고 하시면 아리가또 하겠습니다.


  • ㅠㅠ.. 도저히 시작 할 엄두가 안나요 ㅠㅠ..

  • 하긴 해야하는데.. 어디서부터 손을대야 할지 모르겠어요 ㅠㅠ

  • 넘나 무서워여 ㅠㅠ…

  • 자신감좀 얻고싶어여 ㅠㅠ…


이런분들만 컴온해주세여(음흉)




  • 근데 PE가 뭔데 이러냐구요?

  • 처음듣는다구여?(동공지진)

  • 지금 무슨말 하는지 잘 모르겠다구요?

  • 지난 시리즈랑 도대체 무슨 상관있는거냐구요?




PE가 뭔데 자꾸 우리 PE 기를 죽이고 그래욧!!!!


일단 PE가 뭔지좀 알아야 노잼인지 꿀잼인지 알거아니겠어여

PE란 뭐 거창하게 말할 것도 없이 여러분이 윈도우즈에서 시도때도 없이 사용하는 실행파일을 의미합니다…

…라고 이야기하면 분명 녜? 뭐라구영? 하고 묻는사람이 있을텐데

맞아여 참트루에여ㅋ


.exe 같은 윈도우즈에서 사용되는 실행파일을 우리는 PE라고 불러요. 아 그렇다고 해서 PE 라면 반드시 .exe라는건 아닙니다.

윈도우는 우리가 잘 알지 못하는 낯선 실행파일 포맷들도 제공해요.

예를들자면 DLL이라던지.. SYS라던지 녀석들도 PE에요.


+) 이렇게 말하면 DLL에 대해 들어본적이 있는 분들은


> “어? DLL은 지혼자 실행도 못하는데 왜 PE셈? 님존나 컴알못 ㅇㅈ?”


하고 물을 수도 있겠네요.


DLL은 exe마냥 더블클릭하면 po실!!!!!!!!!!!!!행!!!!!!!!!!!!wer 이런 동작만 안할 뿐,

프로그램이 돌아가는데 필요한 라이브러리로 사용되는 실행파일이 맞습니다.

이말인 즉슨, 더블클릭으로 실행을 못 시킬 뿐이지 다른 형태로 실행을 시킬 수 있다는 의미이기도 해요.


# 원문 : MSDN, microsoft


여기에 이렇게 설명못하는 설명충 콘치를 대신해 사스가 MSDN 형님들이 정의를 내려주셨어요. ㅎㅎ


지금은! DLL이란, PE파일 구조를 가지고 있지만… 뭔가 exe마냥 더블클릭해서 실행 못시키는 PE파일 형태 정도-로 알고 넘어갑시다.

왠지 내가 아닌 다른 누군가가 DLL에 대해서 설명해줄것 같은 예감이 들어요….는 적중함!

원양어선의 업무요정님 글이 올라 와 있네요!




그런데 우리가 PE에 대해선 왜 알아야 하나요? && 이건 어디다가 써먹어요? && 이게 리버싱이랑 뭔상관?


그건 나님이 썼던 지난편 글들과 관련이 있어요.

여태까지 저는 리버싱 튜토리얼을 써왔는데 리버싱이랑 무슨상관이 있나 싶겠죠? ‘ㅅ’?

무슨상관이 있냐면!  exe파일을 보다 더 진지돋게 파헤칠때 바로 이런 지식들이 사용됩니다. 딴딴!


우리가 지난 리버싱 튜토리얼에서 코딩해서 만들고, 분석했던게 뭐였어요? exe였잖아여!

★실☆행★파☆일★E☆X★E☆

그럼 이걸 분석하기 위해선, 우리가 만들었던 exe가 컴퓨터에서 어떤 모양새로 지내는지 한번쯤은 알아야 하지 않겠어요?


우리는 PE 파일 포맷을 통해 지난번에 공부했던것과는 다른차원의 것들을 알 수 있어요.

예를 들자면.. 실행파일의 어떤 부분이 어떻게 메모리에 로드되고, 어떤 API들이 실행되는지도 코드 없이 확인할 수 있지요.


지난번엔 코딩할줄알고, 그거만 원상복구 시키는 핸드레이만 할줄알면 리버싱 다 끝난척 하더니 지금 뭐하는 소리냐고요?

그건 중간에 노잼이라고 탈주할 사람들을 막기 위해 구라친거에요.

나눙… 미끼를 던졌을뿌니고… 너님들은.. 미끼를 확 물어분것이에여 헤헤 ㅇㅋㄷㅋ?

물론 소스코드를 분석 해야할때도 있습니다만 그것만이 리버싱의 전부는 아니에요 껄껄


  • 함부로 분석하지 못하게 보호기법을 걸어둔 프로그램을 분석할 때…

  • 그런 보호기법들을 이해해야 할 때…

  • 분석 중 필요에 의해 부득이하게 어셈블리 코드를 수정해야 할 때…

  • 올리디버거 같은 디버거에 프로그램이 올라가지 않는데ㅠㅠ 분석해야할때ㅠㅠㅠ엉엉 넘나 멘붕일때 ㅠㅠ(실제로 이런적이 있어서 넘나..멘붕이었다는.. 헥스에디터 켜놓고 브포걸어주고 해야했다는 ㅜㅜ PE몰라서 멘붕했다는 ㅠㅠ..)

  • 패킹이 걸려있는 프로그램이라 EP(Entry Point)가 안보이는곳에 숨어있을 때…

  • 리버싱을 막기위해 PE구조를 바꾼 프로그램을(만든 제작자를 부수고싶다)분석할 때…

  • 어떤 행위를 하는지 정적분석을 못하게 하고자 사용하는 API목록을 깨버린 프로그램을 분석할 때…


등등


우리는 지난번같은 호락호락한 프로그램이 아닌 정말 듣기만해도 머리카락이 한올한올 빠지는

귀찮은 녀석들을 분석해야 할 때 필요하답니다.


결국 PE포맷을 확인하면 그안에 답이 다 숨어있거든요. 숨숨잼


그러므로, 우리는 이러한 PE의 구조를 몰라선 아니되오!


저같은 경우는 정말 이거 모르고 그냥 열정만 넘쳐서

“와타시!!! 분석이란걸 해보겠다!!!”

하면서 나름대로 노력해봤는데ㅋㅋㅋㅋ 노력에 비해 결과는

개똥망ㅎㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ;;;;;;


어디서 부터 어떤 부분에 대해 책을 찾아봐야할지 아무것도 모르겠더라구요;;;….하…

PE를 알아야 이해되는 부분이란것도 이해를 못해버리니 아주그냥 노오오오오오오답이 되어버리는건 시간문제였슴당.


아 뭐.. 요즘은 툴이 넘나 잘나와서 그냥 모르고 써도 되긴해요.

잘 찾으면 진짜 대단한 툴들이 많이 나와있더라구여 ㅠㅠ핡핡 (넘나 감쟈하다능ㅠㅠ)

물론 쓰는건 좋지만, 적어도 그 툴들이 이용하는 원리쯤은 알고 써보는건 좀더 간지나는 행위가 아닐까 합니다.

리버싱또한… (겐지말고)간지니까요 ★




결론


  • PE 32bit는 점점 저무는 추세이다 ㅠㅠ.. 하지만 지금까지 나와있는 녀석들은 32bit가 많음.

  • 물고기는 이를 잊지 않고자 특별편을 만들어냄

  • PE는 windows에서 사용되는 실행파일포맷

  • 실행파일은 exe만 있는게 아니라 여러 종류가 있다는

  • 생각보다 PE포맷을 알아두면 써먹을곳이 많음

  • 나는 쓸일이 없었으면 좋겠지만 쓰게 될거같음

  • 뭔가 벌써부터 노잼 스멜이 나지만 모르면 노답이 되는 부분.

  • PE구조를 야매로 배울것만 같은 느낌적인 느낌




다음시간 예고



콘치의 글을 보고있는 여러분의 상태.jpg

뒤에 있는 루시우 말고 앞에있는 방패 반쯤깨진 라인하르트요.


comments powered by Disqus