강의

멘토링

로드맵

BEST
Security & Network

/

Computer Security

理解すると人生が変わるWindows API hook

特定のアプリケーションがさまざまなAPI関数を呼び出すプロセスを傍受する方法を学び、セキュリティシステムを開発するための技術を確保します。 ※絶対悪用禁止!!!

  • nullnull8537
windows
API
hook
해킹
windows-api
hooking
System Hacking
Reversing

学習した受講者のレビュー

こんなことが学べます

  • Windows API呼び出しを傍受する方法

  • 64bitベースのIATフック、インラインフック

  • 簡単なセキュリティプログラムやマルウェアを作成する方法

両刃の剣、セキュリティソフトウェア開発者とマルウェア開発者の両方の技術についてお知らせします!

「セキュリティ技術とハッキング技術は本当に紙一枚違いと同じくらい似ています。」

このレッスンは、Windows APIフックテクノロジーのレッスンで、セキュリティソフトウェア開発者の方々にお役に立てるように作成されたレッスンです。このAPIフック技術は、古くから使用されてきた技術で、良い意図とそうでない意図の両方が活用する技術です。 ※悪用禁止

※注意、この講義に使用された例の一部は、Windowsディフェンダーがマルウェアとして認識することがあります!

こんな方におすすめです

セキュリティソフトウェア開発者
なりたい方

特にPCで動作する各種セキュリティプログラムを開発したい方には、APIフック技術は必ず知っておくべき技術といえます。

このクラスでは、必ず知っておくべき核心だけを正しく学ぶことができます。

リバーシング技術を学ぶ前に
先進理論をあらかじめ勉強したい方

関数の内部構造をアセンブリレベルで分析できます。何よりも高級語で見られなかった内部構造を理解し、必要に応じて修正することができます。

その結果、「関数とは何ですか?」に対する高レベルの理解と答えを自分で見つけることができます。

マルウェアの動作原理
知りたい方

悪意のあるコードが通常のプログラムに注入され実行されるプロセスがいくつかわかります。実際、多くのセキュリティソフトウェアが同様の技術を使用しているからです。

しかし、このレッスンはマルウェアの開発に必要なものについて言及していません。

受講後は

  • 「関数」について新しい次元の理解を得ることができます。たぶん、このレッスンの最後に、関数に関する私の理解は完成段階に突入することができます。

  • 低レベルに降りて問題を解決する方法を学びます。従来の高水準プログラミング言語の世界では、絶対に未知の新しい世界を体験することができます。


  • C/C++で開発されたプログラムが実行されている状態で終了せずに、特定の関数のコードを更新して実行できます。

この講義の特徴

理解すると人生が変わるWindows API hook

インラインフックに複数のテクニックを提供

インラインフック技術を使用しても、具体的な方法はいくつかあります。このレッスンでは、既知の技術を大部分扱うだけでなく、新しい方法を追加して、より安定したフック技術の実装を可能にするのに役立ちます。セキュリティソフトウェアに適用する場合、信頼性は必須です。

動作原理を理解する講義

APIフック技術は、それ自体がすでに高い難易度を誇っています。経験豊富な C/C++ 開発者であっても理解しにくい場合があります。

しかし、実際に原則だけを正確に理解すれば、コード自体はあまり意味がありません。そんな理由で原理に集中します。何よりも、パフォーマンスが検証されたコードを例として示します。

このようなことを学びます。

PEファイル構造紹介 IAT hook

Windows OS環境実行ファイル(.exe、.dll)の形式であるPE形式について簡単に紹介し、そのうちIAT(Import Address Table)を操作して関数呼び出しを傍受する方法を扱います。

しかし、PE形式と関連理論を深く説明するよりも、Hook技術の実装に必要な最小限の理論だけを扱い、結果的に呼び出しを傍受する結果に集中します。

インラインフック

呼び出しを傍受したいターゲット関数の機械語コードを直接変更する方法で実装します。場合によっては、フックターゲットの安定性が急激に低下する可能性がありますが、そのような問題を最小限に抑える方法についても説明します

また、インターネットに公開されているほとんどの資料がx86環境に基づいていますが、すでにほとんどのシステムが64bit環境であることを考慮してx64プラットフォームでInline hookを実装する方法も取り上げます。

質問がありますか?

Q. アンラップのような会社に就職したい学生です。この講義は役に立ちますか?

分野によって違いがあります。しかし、PCレベルのセキュリティを扱うパートで就職を希望するのなら、この講義で取り上げた内容は必ず知っておくべきことです。知らないと就職が難しいかもしれません。そして、より高い競争力を備えたい場合は、カーネルドライバの開発経験も必要になるかもしれません。

Q. この授業を聞いてからV3のようなプログラムも作れますか?

全体ではありませんが、機能の一部を開発するのに役立ちます。 APIフック技術は全体の一部であり、すべてのものとは言えません。そしてV3のようなアンチウイルスシステムの中心はリアルタイム監視エンジンにあり、それはカーネルドライバとして実装されています。

Q. マルウェア分析の専門家になりたいです。この講義は役に立ちますか?

はい、よく来ました! APIフック技術は時々「リバーシングの花」として説明されることもあります。それだけ重要なものでよく使われます。たぶん、日本のシェフの鋭いナイフのようなものかもしれません。この講義を完全に自分のものにしてください。

受講前の注意

練習環境

  • オペレーティングシステムとバージョン(OS):Windows 11

  • 使用ツール: Visual Studio 2022 Community

  • PC仕様:Visual Studioが無理なく動作できるレベルであれば十分

学習資料

  • 講義に使用されたPPT資料をPDFで提供

  • 完全な例(x86、x64分離を提供)

選手の知識と注意事項

  • ポインタの使用に困難がないレベルのC言語プログラミングのスキル
    (単独で始まるCプログラミングレベル)

  • デバッグ目的で逆アセンブルコードを一部読んだ経験(必須)

  • 線形データ構造の理解とC言語で連結リストを実装した経験(必須)


  • C ++ name manglingの理解(必須)

  • Windowsシステムプログラミング体験(必須)

  • 簡単なTCP / IPチャットの例を理解するのに十分なソケットプログラミングの経験(オプション)


この講義を作った
知識共有者は
👨‍💻

ヌルヌルデベロッパー テレビの「ヌルネルデベロッパー」の最好性です。

  • (すべてが嫌い)国内初のPCファイアウォール開発者

  • 1992年からC言語を勉強した30年泊まったC/C++開発者

  • 多数国策課題遂行経験者であり、15年以上開発講義のキャリアを共に保有したおじさん!

  • C言語の人気入門書『ひどく始まるCプログラミング』著者



こんな方に
おすすめです

学習対象は
誰でしょう?

  • C/C++ ベースのアプリケーションの内部構造と関数とは何か、その本質について深い理解を得たい開発者

  • セキュリティソフトウェアを開発したい方

  • Windows環境でリバースエンジニアリングをしてみたい方

前提知識、
必要でしょうか?

  • C言語の高い理解度

  • Windows system programming (中級以上)

こんにちは
です。

38,983

受講生

2,327

受講レビュー

1,125

回答

4.9

講座評価

25

講座

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

カリキュラム

全体

27件 ∙ (4時間 6分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

28件

4.8

28件の受講レビュー

  • shlim1님의 프로필 이미지
    shlim1

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

    • 널널한 개발자
      知識共有者

      좋은 평가 고맙습니다. :)

  • sungjae.jang님의 프로필 이미지
    sungjae.jang

    受講レビュー 4

    平均評価 4.0

    4

    100% 受講後に作成

    강의 만드시느라 고생하셨습니다. 제가 리눅스 시스템 프로그래밍에 약간의 경험이 있다보니 전체 내용을 이해하는데에는 큰 어려움은 없었습니다. 다만, 수강자분들이 다음에 공부할 것이 무엇인지 그 길을 찾는데 어려움이 있지 않을까 생각합니다. 사실은 제가 그런 느낌을 받긴 했거든요. 마지막 부분의 TCP 전송에 대한 hooking에서 MS에서 지원해주는 공식인터페이스가 있다고 언급해주신 부분을 LLM에 문의하니 WFP를 알려주네요. 이렇게, 다음 공부를 위한 공식적인 단어 몇개만 알려주셨어도 다음 과정을 찾아가는데 도움이될거 같습니다. 감사합니다.

    • 널널한 개발자
      知識共有者

      문제점에 대한 구체적인 피드백 진심으로 감사드립니다. 애석하게도 어느 정도 예상이 되었던 내용을 그대로 지적해주셨습니다. :) 이 강의는 정말로 API hook만 설명하고자 하였습니다. 잘 사용할 일이 없는 기술이고 이론으로 알아두는 것으로 충분하다 판단했습니다. 이것을 활용해 어떻게 사용하는 것인지 구체적인 수준으로 넘어갈 경우 강의가 아니라 기술 컨설팅 처럼 답변을 해야 할 상황이 올 것이라 우려한 점도 있습니다. 별 하나의 아쉬움을 기억하고 향후 강의제작에 참고하도록 하겠습니다. 다시 한 번 감사 말씀 드립니다. :)

  • 채광은님의 프로필 이미지
    채광은

    受講レビュー 1

    平均評価 5.0

    5

    63% 受講後に作成

  • 이형일님의 프로필 이미지
    이형일

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

  • 깅준이님의 프로필 이미지
    깅준이

    受講レビュー 5

    平均評価 5.0

    5

    63% 受講後に作成

¥8,016

nullnull8537の他の講座

知識共有者の他の講座を見てみましょう!