보안 · 네트워크

/

보안

이해하면 인생이 바뀌는 Windows API hook

특정 응용 프로그램이 각종 API 함수들을 호출하는 과정을 가로채는 방법을 배워 보안 시스템을 개발할 수 있는 기술을 확보합니다. ※절대 악용금지!!!

(4.4) 수강평 7개

수강생 250명

Thumbnail

중급자를 위해 준비한
[보안, 데스크톱 앱 개발] 강의입니다.

이런 걸
배워요!

  • Windows API 호출을 가로채는 방법

  • 64bit 기반 IAT hook, Inline hook

  • 간단한 보안 프로그램이나 악성 코드를 제작하는 방법

양날의 검, 보안 소프트웨어 개발자와 악성코드 개발자 모두의 기술에 대해 알려드립니다!

"보안기술과 해킹기술은 정말 종이 한 장 차이라 할 만큼 비슷합니다."

이 강의는 Windows API hook 기술에 대한 강의로 보안 소프트웨어 개발자 분들에게 도움을 드리고자 만들어진 강의입니다. 이 API hook 기술은 오래 전부터 사용되어온 기술로 좋은 의도과 그렇지 못한 의도 양쪽 모두가 활용하는 기술입니다. ※악용금지

※주의, 이 강의에 사용된 예제 일부는 윈도우 디펜더가 악성코드로 인식 할 수 있습니다!

이런 분들께 추천해요

보안 소프트웨어 개발자가
되고 싶은 분

특히 PC에서 작동하는 각종 보안 프로그램을 개발하고 싶은 분들에 API hook 기술은 반드시 알고 있어야 할 기법이라 할 수 있습니다.

이 수업을 통해 꼭 알아야 할 핵심만 제대로 배울 수 있습니다.

리버싱 기술을 배우기에 앞서
고급 이론을 미리 공부려는 분

함수의 내부 구조를 어셈블리어 수준에서 분석할 수 있습니다. 무엇보다 고급어에서 볼 수 없었던 내부 구조를 이해하고 필요에 따라 수정할 수 있습니다.

결과적으로 '함수란 무엇인가?'에 대한 고수준 이해와 해답을 스스로 찾을 수 있습니다.

악성코드의 작동 원리를
알고 싶은 분

악성코드가 정상 프로그램에 주입되고 실행되는 과정을 일부 알 수 있습니다. 실제로 많은 보안 소프트웨어가 비슷한 기법을 사용하기 때문입니다.

그러나 이 강의는 악성코드 개발에 필요한 것들에 대해 언급하지는 않습니다.

수강 후에는

  • '함수'에 대해 새로운 차원의 이해를 얻을 수 있습니다. 어쩌면 이 강의를 끝으로 함수에 관한 내 이해는 완성단계에 돌입 할 수 있습니다.

  • 저수준으로 내려가서 문제를 해결하는 방법에 대해 알 수 있습니다. 기존 고수준 프로그래밍 언어의 세계에서는 절대로 알 수 없었던 새로운 세상을 경험할 수 있습니다.


  • C/C++로 개발된 프로그램이 실행 되고 있는 상태에서 종료하지 않고 특정 함수의 코드를 업데이트하고 실행 할 수 있습니다.

이 강의의 특징

이해하면 인생이 바뀌는 Windows API hook

Inline hook에 대한 여러 기법을 제공

Inline hook 기술을 사용하더라도 구체적인 방법은 여러 가지가 존재합니다. 이 강의는 알려진 기법들을 대부분 다룰 뿐만 아니라 새로운 방법을 추가해 보다 안정적인 hook 기술 구현이 가능 하도록 돕습니다. 보안 소프트웨어에 적용하기 위한 경우라면 안정성은 필수 입니다.

작동 원리를 이해시켜주는 강의

API hook 기술은 그 자체가 이미 높은 난이도를 자랑하는 것입니다. 경험 많은 C/C++ 개발자라 하더라도 이해하기 어려운 경우가 있을 수 있습니다.

그러나 사실 원리만 정확히 이해하면 코드 자체는 별것 아닙니다. 그런 이유로 원리에 집중합니다. 무엇보다 성능이 검증된 코드를 예제로 제시합니다.

이런 내용을 배워요

PE파일 구조 소개 IAT hook

윈도우 OS 환경 실행 파일(.exe, .dll)의 형식인 PE형식에 대해 간략히 소개하고 그 중 IAT(Import Address Table)을 조작해 함수 호출을 가로채는 방법을 다룹니다.

그러나 PE형식 및 관련 이론을 깊게 설명하기 보다 Hook 기술 구현에 필요한 최소한의 이론만 다루며 결과적으로 호출을 가로채는 결과에 집중합니다.

Inline hook

호출을 가로채고 싶은 대상 함수의 기계어 코드를 직접 변경하는 방식으로 구현합니다. 경우에 따라 Hook 대상의 안정성이 급격히 떨어 질 수 있는데 그런 문제를 최소화 하는 방법도 함께 설명합니다.

또한 인터넷에 공개된 대부분의 자료가 x86 환경을 기반으로 하고 있는데 이미 대부분의 시스템이 64bit 환경임을 고려해 x64 플랫폼에서 Inline hook을 구현하는 방법도 다룹니다.

궁금한 점이 있나요?

Q. 안랩같은 회사에 취업하고 싶은 학생입니다. 이 강의가 도움이 될까요?

분야에 따라 차이가 있습니다. 그러나 PC수준 보안을 다루는 파트로 취업을 희망하는 것이라면 이 강의에서 다룬 내용은 반드시 알아야 할 것들입니다. 모르면 취업이 힘들 수 있습니다. 그리고 보다 높은 경쟁력을 갖추고 싶다면 커널 드라이버 개발 경험도 필요할 수 있습니다.

Q. 이 수업을 듣고 나면 V3같은 프로그램도 만들 수 있나요?

전체는 아니지만 기능 일부를 개발하는데 도움이 됩니다. API hook 기술은 전체의 일부일 뿐 모든 것이라 할 수는 없습니다. 그리고 V3같은 안티 바이러스 시스템의 핵심은 실시간 감시 엔진에 있으며 이는 커널 드라이버로 구현합니다.

Q. 악성코드 분석 전문가가 되고 싶습니다. 이 강의가 도움이 될까요?

네, 잘 찾아오셨습니다! API hook 기술은 간혹 '리버싱의 꽃'으로 설명되기도 합니다. 그 만큼 중요한 것이며 자주 사용됩니다. 어쩌면 일식 요리사님의 예리한 칼과 같은 것일 수 있습니다. 이 강의를 완전히 자신의 것으로 만드시기 바랍니다.

수강 전 참고 사항

실습 환경

  • 운영 체제 및 버전(OS): Windows 11

  • 사용 도구: Visual Studio 2022 Community

  • PC 사양: Visual Studio가 무리 없이 작동 할 수 있는 수준이면 충분

학습 자료

  • 강의에 사용된 PPT자료를 PDF로 제공

  • 전체 예제(x86, x64 분리 제공)

선수 지식 및 유의사항

  • 포인터 사용에 어려움이 없는 수준의 C언어 프로그래밍 실력
    (독하게 시작하는 C 프로그래밍 수준)

  • 디버깅 목적으로 디스어셈블 코드를 일부 읽어 본 경험 (필수)

  • 선형 자료구조에 대한 이해 및 C언어로 연결 리스트를 구현해본 경험 (필수)


  • C++ name mangling에 대한 이해 (필수)

  • Windows system programming 경험 (필수)

  • 간단한 TCP/IP 채팅 예제를 이해할 수 있을 정도의 소켓 프로그래밍 경험 (선택)


이 강의를 만든 
지식공유자
👨‍💻

널널한 개발자 TV의 ‘널널한 개발자’ 최호성입니다.

  • (모두가 싫어하는) 국내 최초 PC 방화벽 개발자

  • 1992년부터 C언어를 공부한 30년 묵은 C/C++ 개발자

  • 다수 국책과제 수행 경험자이자 15년 이상 개발 강의 경력을 함께 보유한 아저씨!

  • C언어 인기 입문서 『독하게 시작하는 C 프로그래밍』 저자



이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • C/C++ 기반 응용 프로그램의 내부 구조와 함수란 무엇인지 그 본질에 대해 깊은 이해를 얻고 싶은 개발자

  • 보안 소프트웨어를 개발하려는 분

  • Windows 환경에서 리버스 엔지니어링을 해보려는 분

선수 지식,
필요할까요?

  • C언에 대한 높은 이해도

  • Windows system programming (중급 이상)

널널한 개발자 TV 채널 주인장이자
30년 넘게 IT기술의 바다를 항해하고 있는 개발자 입니다.  반갑습니다. ^^

 

커리큘럼

전체

27개 ∙ (4시간 6분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!