• 전자책

[튜터전자책] 핀툴 프로그래밍 기본서 - 핀툴로 역공학 입문하기 (각 부 당 50장)

LootNiP 튜터 (0)

클래스 전 숙지해주세요!

본 전자책 구매시 반드시 확인 바랍니다.
- 본 전자책은 구글 문서로 제공됩니다. "구글 계정"이 없으신 경우 구매가 어렵습니다.
- "튜터에게 남기고 싶은 글" 입력란에 본 전자책의 읽기 권한을 부여받으실 "구글 이메일 주소"를 반드시 기입해 주세요.
- "튜터에게 남기고 싶은 글" 입력란에 "부(Part) (제1부 ~ 제4부 중 택1)"를 반드시 기입해 주세요. 한 번에 하나의 "부"를 구매하실 수 있습니다.
- 본 전자책의 구매 과정에서는 별도의 온라인/오프라인 강의가 포함되어 있지 않습니다.
- 본 전자책의 구매가 접수되면 입력해 주신 "구글 이메일 주소"로 본 전자책의 선택하신 "부"의 읽기 권한을 부여해 드립니다.

튜터 공지

클래스 요약

목표
- 핀툴(PinTool)을 구현하여 원하는 Windows 분석 도구 제작
- 정적 분석 및 동적 분석에 대한 도구를 다루어 Windows 실행파일 분석

차별점
- 타 전자책에서는 알려주지 않는 특별한 분석 프레임워크 PinTool에 대하여 상세하게 알려주고, 실 구현 소스코드를 모두 제공합니다. 분석, 크랙, 우회, 언패킹을 모두 알려줍니다.

이런 분들이 들으면 좋아요.

이런 분들은 핀툴 프로그래밍 기본서의 정독을 추천합니다.
- 프로그램 역공학에 관심이 있으신 분
- 디버거 및 디스어셈블러를 다루어 본 적이 있어서 다른 분석 도구에 관심이 가는 분
- 프로그램의 구조 및 동작 원리를 눈으로 파악하고 싶은 분
- 특정한 자료가 주어지면 끝까지 읽을 열정이 있는 분
- 본인이 그래도 C언어는 파일입출력 정도까지는 공부한 것 같다 하는 분
- 본인이 핀툴의 기본적인 부분을 학습하고 싶다고 하는 분
- 핀툴을 활용하여 Windows 환경에서의 32비트 실행 파일을 분석하고 싶으신 분

이런 분들은 핀툴 프로그래밍 기본서의 정독을 비추천합니다.
- 프로그램 역공학에 전혀 관심이 없으신 분
- 아직 다른 분석 도구를 공부하고 계셔서 별도로 시간을 할애하기 어려운 분
- 인생에서 아직 C언어를 전혀 접하지 못한 분 (HelloWorld.exe를 본 적이 없으신 분 포함)
- 소프트웨어 보안 혹은 소프트웨어 구현 및 분석 분야에 관심이 없으신 분
- 본인이 핀툴 심화 과정을 학습하고 싶다고 하는 분
- 핀툴을 활용하여 Windows 환경이 아닌 타 환경(Linux, macOS)에서 분석을 진행하고 싶으신 분

튜터님을 소개합니다.

안녕하세요. 루니프입니다.

1) 정보보안 분야에 종사한지 9년차입니다.
2) 프로그래밍 및 정보보안 관련 강의 경력 다수 있으며,
3) 특히 핀툴을 이용한 프로그래밍을 여러번 강의한 바 있습니다.

저는 소프트웨어 보호 및 소프트웨어 분석 분야에 몸담고 있습니다.

실제 여러 기업 및 기관과 함께 프로젝트를 수행한 경력도 다수 있습니다.
저는 이번 전자책을 발간하여 대한민국의 분석가, 보안인, 더 나아가 프로그래머들에게
소프트웨어 분석은 결코 어렵지 않다는 것을 알려드리고자 합니다.

이를 위하여 작성한 전자책, 핀툴 프로그래밍 기본서를 배포하는 방법을 찾다가
탈잉이라는 아주 좋은 사이트를 만나게 되었습니다.
이 곳에서 독자 여러분들과 여러가지 교류하고 싶습니다.

어떤 클래스 인가요?

본 전자책의 1차적인 목표는 "핀툴(PinTool)"을 설치하여 이를 활용하는 것입니다.
핀툴은 소프트웨어 분석용 프레임워크이며, 흔히들 사용할 수 있는 디버거, 디스어셈블러와 마찬가지로
프로그램을 분석할 수 있게 하는 도구 중 하나입니다.
2차적인 목표는 "일반인들도 프로그램을 분석할 수 있다"는 것을 책을 통하여 학습하는 것입니다.
역공학이라고 하면 막연히 어려움을 느끼는 독자분들을 위하여, 전자책 뿐 아니라 교류를 할 수 있는 장을 제공하고자 합니다.

본 전자책을 구매하실 때, [핀툴 프로그래밍 기본서] 중에서도 [제1부] ~ [제4부] 중 하나를 선택하셔야 합니다.
※ 현재 설정된 "전자책 가격"은 "각 부 당" 금액에 해당합니다.
[제1부. 헬로 핀툴 월드!] (총 52장)
[제2부. 핀툴로 AbexCrackMe1 크랙하기] (총 51장)
[제3부. 핀툴로 UPX 언패킹하기] (총 51장)
[제4부. 핀툴로 Anti-PinTool 우회하기] (총 50장)

각 부의 상세 목차는 아래를 참고하시기 바랍니다.

저는 이전에 [핀툴 프로그래밍 기본서] - [제0부. 핀툴 소개]를 작성하여 구글문서 형태로 배포한 바 있습니다.
저는 [핀툴 프로그래밍 기본서]를 제4부에 걸쳐서 작성하였으며, 핀툴 뿐 아니라 역공학에 관련된 다양한 내용을 수록하였습니다.
해당 내용에 관심이 있으시다면 루니프에게 메일을 보내주시거나 아래 링크를 참고해주세요.
핀툴 프로그래밍 기본서 - 제0부. 핀툴 소개
https://docs.google.com/document/d/1EfxHEVizKFN2yM_ItTb7i3FX4ShCyIcC_ZLnNMsNDIE/edit?usp=sharing

클래스 유의사항

유의사항
- 본 전자책은 구글문서로 제공됩니다. 구글계정이 없으신 경우 본 전자책의 구매가 어렵습니다.

클래스는 이렇게 진행됩니다.

[제1부. 헬로 핀툴 월드! 목차] (총 52페이지)


[제1장. Pin 환경 구성 및 PinTool 구현 환경 구성]
[제1절. Pin이 뭐라고 했더라? 기억나지 않으면 제0부를 보자]
[제2절. 동적 바이너리 계측? 프로그램을 분석 하는 기술이지.]
[제3절. Pin과 PinTool은 뭐가 다를까?]
[제4절. 제1부를 실습하기 위하여 필요한 도구들은?]
[제5절. Pin을 다운로드 받고 PinTool을 컴파일 해보자]
[제6절. 컴파일한 PinTool로 프로그램을 분석하기]

[제2장. Pin API - 계측 코드]
[제1절. 어디에 분석용 코드를 삽입할 것인가?]
[제2절. 삽입할 분석용 코드의 위치를 정해보자]

[제3장. Pin API - 분석 코드]
[제1절. 어떠한 분석용 코드를 삽입할 것인가?]
[제2절. 삽입할 분석용 코드의 내용을 정해보자]

[제4장. 계측 코드와 분석 코드의 콜라보]
[제1절. 어디에 어떠한 분석용 코드를 삽입할 것인가?]
[제2절. 삽입할 분석용 코드의 인자를 정해보자]

[제5장. 계측 인자, 그 이름은 IARG]
[제1절. 삽입 함수(@@@_InsertCall)에서의 계측 인자]
[제2절. 추가 인자를 요구하는 계측 인자]

[제6장. 제1부를 실습하기 위해서라면 알고 있어야 하는 API]
[제1절. PIN을 접두어로 가지는 API]
[제2절. INS를 접두어로 가지는 API]
[제3절. RTN을 접두어로 가지는 API]
[제4절. IMG를 접두어로 가지는 API]
[제5절. SEC을 접두어로 가지는 API]
[제6절. 모든 코드를 순회하여 분석하자. Visit Everything!]

[제7장. 실습하기! Hello PinTool World!]

[참고문헌]

[Appendix. 실습 문제 소스코드]



[제2부. 핀툴로 AbexCrackMe#1 크랙하기 목차] (총 51페이지)


[제1장. AbexCrackMe를 크랙해보자]
[제1절. AbexCrackMe가 뭐지?]
[제2절. 제2부를 실습하기 위하여 필요한 도구들은?]

[제2장. 디버거는 도대체 어떤 녀석이지?]
[제1절. 정적 분석이란? 동적 분석이란?]
[제2절. 디버거를 사용하는 방법]
[제3절. 디버거로 AbexCrackMe 크랙하기]

[제3장. 핀툴로도 이런게 가능할까?]
[제1절. 디버거로 할 수 있는 것, 핀툴로 할 수 있는 것]
[제2절. 핀툴로 AbexCrackMe를 분석해보자. 필요한 API는 무엇일까?]
[제3절. 인자값과 반환값, 그리고 레지스터의 값을 모두 출력해보자]
[제4절. 인자값과 반환값, 그리고 레지스터의 값을 모두 변조해보자]
[제5절. 핀툴에서의 포인터 연산, 그리고 간접분기문]

[제4장. 실습하기! AbexCrackMe#1 with PinTool]

[참고문헌]

[Appendix. 실습 문제 소스코드]



[제3부. 핀툴로 UPX 언패킹하기 목차] (총 51페이지)


[제1장. UPX를 언패킹해보자]
[제1절. 제3부를 실습하기 위하여 필요한 도구들은?]
[제2절. 패킹이 도대체 뭐지?]
[제3절. 언패킹 루틴을 구현해보자]
[제4절. UPX란 무엇일까?]

[제2장. 이제는 알아야 한다. PE(Portable Executable) 구조]
[제1절. 패킹이 적용된 경우에 정적 분석이 어려워지는 이유는?]
[제2절. 그럼에도 불구하고 PE 구조를 공부해야 하는 이유는?]
[제3절. PE 구조 핵심만 파헤치기]
[제4절. 파일 상태에서의 PE 구조, 이미지 상태에서의 PE 구조]

[제3장. 당신은 UPX를 분석할 준비가 되었다]
[제1절. UPX로 패킹을 적용해보자]
[제2절. 정적 분석을 통하여 UPX의 패킹 원리를 알아보자]
[제3절. 동적 분석을 통하여 UPX의 언패킹 원리를 알아보자]
[제4절. 디버거로 UPX를 언패킹한다면 어떻게 될까?]

[제4장. 핀툴로도 이런게 가능할까?]
[제1절. 언패킹을 하기 위하여 필요한 것은?]
[제2절. 패킹된 프로그램의 원본 오브젝트를 추출해보자]
[제3절. 패킹된 프로그램의 원본 임포트 정보를 추출해보자]
[제4절. 패킹된 프로그램의 원본 엔트리포인트를 추출해보자]
[제5절. 추출한 내용들로 프로그램 재건은 어떻게 할까?]

[제5장. 실습하기! UPX Unpacking with PinTool]

[참고문헌]

[Appendix. 실습 문제 소스코드]



[제4부. 핀툴로 Anti-PinTool 우회하기 목차] (총 50페이지)


[제1장. Anti-PinTool에 대하여 알아보자]
[제1절. 제4부를 실습하기 위하여 필요한 도구들은?]
[제2절. Anti-Analysis란 무엇일까?]
[제3절. Anti-PinTool은 무엇일까?]

[제2장. Anti-PinTool을 구현해보자]
[제1절. Anti-PinTool의 분류]
[제2절. API 기반의 Anti-PinTool 구현하기]
[제3절. 시간 기반의 Anti-PinTool 구현하기]
[제4절. 예외 기반의 Anti-PinTool 구현하기]

[제3장. Anti-PinTool을 우회해보자]
[제1절. 디버거로 API 기반의 Anti-PinTool 우회하기]
[제2절. 디버거로 시간 기반의 Anti-PinTool 우회하기]
[제3절. 디버거로 예외 기반의 Anti-PinTool 분석하기]

[제4장. Anti-Anti-PinTool을 구현해보자]
[제1절. 핀툴로 API 기반의 Anti-PinTool 우회하기]
[제2절. 핀툴로 시간 기반의 Anti-PinTool 우회하기]
[제3절. 핀툴로 예외 기반의 Anti-PinTool 우회하기]

[제5장. 실습하기! Anti-Anti-PinTool with PinTool]

[참고문헌]

[Appendix. Anti-PinTool 통합본 소스코드]

[Appendix. 실습 문제 소스코드]

실제 수강생의 리뷰입니다.

  • 커리큘럼0
  • 전달력0
  • 시간준수0
  • 준비성0
  • 친절도0

이 강의는 어떠세요?

클래스 일정

15,000원