Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
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 (中級以上)

こんにちは
です。

36,723

受講生

2,105

受講レビュー

1,093

回答

4.9

講座評価

24

講座

KakaoTalk_20250811_205405839.png.webp

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

カリキュラム

全体

27件 ∙ (4時間 6分)

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

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

受講レビュー

全体

25件

4.8

25件の受講レビュー

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

    受講レビュー 1

    平均評価 5.0

    5

    63% 受講後に作成

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

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

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

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

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

    受講レビュー 5

    平均評価 5.0

    5

    63% 受講後に作成

  • 박상현님의 프로필 이미지
    박상현

    受講レビュー 1

    平均評価 5.0

    5

    33% 受講後に作成

  • sunny75님의 프로필 이미지
    sunny75

    受講レビュー 94

    平均評価 5.0

    5

    100% 受講後に作成

    (25/06/29/일 08:51) 강의를 들어서, hook 을 이해 했습니다. printf("Hello world"); 를 지금까지 간단하다고 생각했는데, 아주 복잡한 것이 었군요. 좋은 강의 만들어 주셔서 감사합니다.

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

      와우~! 열공모드로 달리시나 봅니다. 인코딩을 넘어 API hook까지 달리셨네요. 뜨거운 여름을 학습으로 불태우는 것도 멋진 선택이 아닐까 싶습니다. 제가 응원하겠습니다. 고맙습니다. :)

¥7,836

nullnull8537の他の講座

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