2011년 10월 22일 토요일

P1) 윈도우즈 파기 위하여

5부터는 리눅스와 윈도우즈 이야기로 갑니다.

그림도 없고 딱딱한 글들이라 쉽게 읽혀 지지 않는데다가 사실 내용에 공감하시는 분들은 저처럼 좀 geek 한 분들 말고는
없을 것도 같아서요. 엄청 기초적인 것들을 말하다가도 전체적으로 보기도 하고. 사실 완전 초보는 책을 봐야 하기 때문에.....
왜냐면 영어 단어 하나도 모르는데 문법을 설명할 수는 없잖아요 ^^;;

사실 강좌를 쓰는 건 큰 의미가 없습니다. 돈이 없는 것도 아니고 프로젝트 하면서 꽤 돈이 들어오니까 책을 내는 것이 아니라면
네임벨류나 자신한테 크게 도움이 되는 것도 없습니다. 그리고 큰 회사에 있는 곳에 정리하는 편이 저의 딕셔너리를 만드는 데에도
더 도움이 되요. 뭐 쓴 글은 제 블로그에 저장하고는 있지만 사실 포스팅하는 것보다는 혼자서 집에 쌓여진 책이라도 좀 읽는게
도움이 됩니다. 그런데 왜 쓰느냐? 간만에 휴일인데 마눌님은 주무시고 혼자 영화 하나 다보고 철권5 캐릭터 2개 엔딩보고 심지어
나중에 애 키울거 대비해서 삼각함수 EBS 동영상까지 보고, 사업하신다는 분 홈피도 뚝딱 만들고(요샌 정말 편하더군요) 그래도
시간이 남는데다가 잠까지 안오는 겁니다!! 된장, 된장, 된장 ㅠㅠ 여기 좋고 운영자님이 맘에 들어서 뭔가 써주어야 겟다고 생각해서
광고 하나 클릭 하고 (광고 클릭하는데 안 힘듭니다. 들어오셔서 컨트롤 누르고 살짝 눌러주시면 눌린 표시도 안나여) 글도 하나
써 봅니다.

하지만 혹시나 저랑 비슷한 생각을 가지신 분이나 공부 하시는데 갈팡질팡 하시는 분들을 위해서 강좌를 시작한거고.
생각해보니 다른 게시판은 저랑 성격이 안 맞을수도 있고, 다른 분들이 잘 정리하는 강좌에 누가 될지도 모른다고 해서. 이쪽에
적으려고 합니다. 그런데 리눅스는 이용만 당하지 실재로 큰 인기는 없습니다. 저희가 안드로이드 폰을 쓰고 접속하는 서버 대부분
이 리눅스기는 해도 크게 보기 보다는 협소하게 보는게 정신 건강에도 좋고 행복한거죠.

다만 리눅스에서 시작하는 이유는 참 지식은 공유와 나눔에 있는건데 리눅스는 그런 정신을 잘 계승하기 때문입니다. 그런데
늘 밥만 먹고 살 수는 없듯이 라면도 먹어줘야 하는데 전 그게 윈도우라고 생각해요. 물론, 지식의 입장에서.

하나는 완전 공개, 하나는 돈 못벌게 하는 부분은 비공개된 운영체제 사이에서 리버스 엔지니어링은 발전 합니다.
그래도 밑에 금광이 있다고 분명히 알고 파는 거랑 모르는데 파는 거랑은 천지 차이거든요.

오늘은 프로세스에 대해서 이야기 해 보려고 합니다.

사실 디스크 구조도 들어가면 좋겠지만 디스크 구조에 대해서 공부하면 공부할수록 머리가 잘 안 돌아가고 파일 시스템 올려진
상태에서는 뭐 딱히 할것도 없는게 지론입니다. 가끔 목만 축이는 정도로...

프로세스라 함은 프로그램이 메모리에 올려진 상태를 말합니다. 리눅스의 경우에는 ELF가 통산 쓰이는 거고 윈도우의 경우에는
PE 포멧이라는게 있죠. 둘 다 COFF에서 나온거라서 비슷합니다. 사실 더 좋은 파일 포멧이 여러 학회나 학교에서 연구될 수도 있겠지만
겁나 좋으면 뭐하나요. 컨셉카처럼 걍 스쳐지나가면서 한번 볼까 말까 하는거죠. 많이 쓰는게 대세인거죠.
그리고 win7까지도 PE로 나갔으니 win8에서 바뀔리도 없고, 충분히 검증된거라. 향 후 7년 이상 잘 쓰여질 거라고 봅니다.
사실 몇십년 동안 별 탐구할 생각도 없었다가 향 후 비전을 보니 PE를 파야 겠더라구요 ^^;;

ELF의 경우에는 동작중에도 프로그램을 끼울 수가 있는 구조 입니다. 절대번지가 없는거죠. 그런데 리눅스만 그런데 아닙니다.
PE 포멧도 그래요. 정확한 주소는 윈도우즈 로더가 적어주고 메모리에 올려줍니다.

파일(PE, ELF) -> 로더(리눅스 커널, 윈도우 로더) -> 메모리

요렇게 올려주는 거죠.

리버싱 때 사용되는 IDA PRO 같은 경우에는 윈도우 기준으로 실행되지 않은 PE 파일을 분석한다고 보시면 되구요.
우리의 영웅 올리디버거 같은 경우에는 퍄일을 불러서 실행도 되고 실행중인 프로세스에 어태치도 되는 것 입니다.

그럼 메모리에 파일이 올라간다면 다시 파일로 만드는 것도 가능하겠네요? 당근 입니다.

울산 모 대학에서 프로그램을 만들었었는데(저 말고 누군가) 메모리에 올라간 것을 다시 PE 파일로 만들어 주는 유틸리티 였습니다.
물론, 엄청 복잡한거는 안되는데요. 파일을 복사하는게 아니라 진짜 메모리에서 가져와서 파일을 만들더라구요.
어차피 파일이 있어야 메모리에 올리니까 별 쓸모 있다고는 생각 안했지만 정말 신기했습죵. 논문이나 대회나 그런데 사골 우거지
곰탕처럼 우려 먹을 수 있다고나 할까요?

ㅋㅋ

아 마눌님께서 기지개를 펴시네요. 담달 결혼식인데 ^^ 청첩장이 남아 돌아요 슬퍼...

이만 쓸께여.

그리고 제 철학을 말하자면 코드만 하면서 칙칙하게 사는건 싫어요. 다만 이 세상도 하나의 큰 게임, 아니면 큰 코드와도 같아서
참 알수가 없는데 리버싱이라는 것은 세상을 역분석하는 학문이라고도 생각이 듭니다.

물론 방식은 다르지만요.

그럼, 즐거우 주말 되세요~

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...