다 읽었다 – 난 정말 C PROGRAMMING을 공부한 적이 없다구요


다시 C언어 공부하기

리버스 엔지니어링을 시작하기에 앞서 가장 기초가 되는 C언어 공부를 시작했다.
사실 C언어를 몰라도 악성코드 동적 분석 정도는 어느 정도 가능한 영역이라 생각되지만,
리버스 엔지니어링을 제대로 배우기 위해서는 초석을 잘 닦는게 중요하다 싶어
10년만에 다시 C언어 책을 집어들게 되었다.

 

난정말C프로그래밍
[
  선택한 교재 – 제목이 매우 직관적(?) 이라 할 수 있겠다 ]

사실 여러 커뮤니티에서 C언어에 관련된 책 추천글을 많이 보았는데,
개인적으로 어떤 책이 되었든간에 한번을 완독하는 것이 가장 중요하다고 생각한다.
특히 C언어의 경우 마의 “포인터 장벽”만 넘기고 나면
이해가 되지 않는 나머지 부분이 저절로 이해가 되는 경험을 할 수 있을 것이다.

제목이 직관적인 “난 정말 C Programming을 공부한 적이 없다구요” 를 선택했다.
저자인 윤성우 님은 워낙에 C, 자바 관련 교재에서 베스트 셀러인 까닭에
일단 믿고 따라가보기로 했다.

“난 정말 C Programming을 공부한 적이 없다구요” 책 평가

책에 대한 총평을 내리자면 C언어 입문서로써는 정말 최고의 책이 아닐까 싶다.
특히 다년간의 강의에서 얻은 경험들 – 입문자들이 어려워 하거나 궁금해하는 부분 – 을 책에 잘 녹여냈고 공부하면서 독자가 느낄 수 있는 불안감들 – 무슨말인지 모르겠거나 나중에서야 이해할 수 있는 부분 – 을 해소시켜주는 저자의 배려가 돋보이는 책이다.

Cap 2014-05-11 20-50-24-045
[ 각 챕터별 폴더 정리 후 예제와 실습문제는 모두 풀어보았다 ]

책 활용 방법과 환경 구성

각 챕터별로 예제도 충분하고 실습문제 역시 생각의 범위를 넓혀주기에 충분했다.
눈으로 보는 것만으로는 불충분하게다 싶어 모든 챕터의 예제와 실습문제를 직접 손으로 코딩하고
결과를 확인하는 과정을 거쳤다.

환경은 VisualStudio 2013 버전의 CL 컴파일러와 우분투의 gcc를 동시에 사용했고
에디터는 Sublime 2.x 버전을 사용했다.

Cap 2014-05-11 20-56-25-539
[ 실습환경 – Sublime 2.x 버전을 이용한 코딩 ]

리버스 엔지니어링 활용 방안

리베스 엔지니어링을 통한 취약점 분석을 위해 일단 gcc를 이용한 코딩 이후
디스어셈블링을 통해 인자의 구성, 함수의 호출, 포인터의 활용, 파일 입출력이 어떻게 변화하는지를
정리할 예정이다.

앞서 각 챕터별로 예제와 실습문제를 직접 코딩해본 것도 사실은
해당 EXE파일을 리버싱하여 프로그래밍의 기본적인 구조에 대해 익히기 위한 목적을 위해서이다.
예를들면, 메인 함수 내에서 특정 Function을 호출할시에
메모리 내에서 일어나느 변화들 (EBP, ESP값의 변화, 매개변수 및 지역변수 선언 시 레지스터 변경 등)을
살펴봄으로써 메모리의 변화와 그로 인해 발생할 수 있는 취약점들을 공부할 수 있을 것이다.

마무리하며…

근 10년만에 C언어 책을 다시 보았더니 어려운 부분이 없었다면 거짓말이겠지.
그래도 단 1주일만에 900페이지 짜리 책을 완독했다는데에 뿌듯함을 느낀다.

한동안 세월호 침몰 충격속에 거의 한 달을 헤어나오지 못했던 것 같다.
그동안 작성중이었던 블로그 글들도 모두 멈추었고, 여행기도 한동안은 연재하지 않았다.
아직… 끝나지 않은 현실이지만 나는 또 나의 자리에서 최선을 다해야 함을 잊지 않아야 하겠다.

당분간은 기술적인 내용을 위주로 블로그를 채워나갈까 한다.

  • Jack Kim

    C언어 책이 없어서 하나 장만할까 했는데 서점가서 한번 훑어보아야겠네요!
    잘지내시죠 형님 ㅎㅎ 파이썬에 대한 내용도 올리실 계획인가요?
    ㅎㅎ 언제 시간되시면 강의한번 해주세요 파이썬! ㅎㅎㅎ

    • 파이썬은 일단 기본서로 한번 보는게 좋을거야 ㅎㅎ
      내가 올려둔 포스트에 왠만하면 파이썬 코드를 쓰고 있긴한데
      강의할 실력은 안돼고 ㅋㅋㅋ 나중에 시간되면 스터디나 하자

Site Footer

Sliding Sidebar

About Me

About Me

June Park