【Windows CEの詳細】Part 1 組み込みWindowsアプリケーションを構築する 

OT 環境で依然としてレガシー OS である Windows CE が多く使われています。この記事は、OSを調べる 4 部構成の研究ブログシリーズのパート1です。OSをより深く理解し、研究を進める上で脆弱性の調査方法や、その過程で発見した多数の CVE を紹介する予定です。

私たちTeam82は、産業および医療インフラのサイバー攻撃を防御し、安全にするための研究目標があります。今回の私たちは、Windows CE で実行される特殊なHMIパネルを研究のターゲットにしました。このOSへの理解が深まり、さらに調査をスピードアップできると考えています。

Windows CE OS 上で動作する HMI パネル
Windows CE OS 上で動作する HMI パネル

Windows CE は、アクセスが容易なため、産業環境でよく使用されています。重要な工場機械で最もよく使用され、簡単に構成およびカスタマイズできるため、HMI システムの展開に最適です。たとえば、自動販売機や使いやすいインターフェイスを表示する公共キオスク、一部の車載インフォテインメント システムなどのデバイスによく使用されています。

Windows CE OS 上で動作する自動販売機
Windows CE OS 上で動作する自動販売機

Windows CE アプリケーション開発のセットアップ

アプリケーションを開発するには、アプリケーションをビルドして展開できる機能的なワークスペース (この場合は Visual Studio 2005 IDE) が必要です。このユーティリティは、アプリケーションを簡単に、最小限の問題でコンパイルして展開するために重要です。

新しいプロジェクトの作成

まず、Visual Studio 2005 で新しいプロジェクトを作成し、「File→New→Project」を選択します。

Visual Studio 2005 で「新しいプロジェクト」」を作成します
Visual Studio 2005 で「新しいプロジェクト」」を作成します

次に、新しいプロジェクトウィンドウがポップアップ表示され、アプリケーション プロジェクトのテンプレートを選択します。この例では、スマート デバイス システム用の GUI アプリケーションを作成します。

Visual Studio 2005 の「新しいプロジェクト」 テンプレート
Visual Studio 2005 の「新しいプロジェクト」 テンプレート

 

次に、便利なウィザード ウィンドウを使用して、プロジェクトの構成手順に進みます。この場合、ターゲットを Pocket PC 2003 プラットフォームの実行可能ファイルにします。そのため、「Next >」これらの設定を適切に行うには、「Executable (EXE)」ボタンをクリックする必要があります。

プロジェクト設定を構成するウィザードウィンドウで、「Next>」をクリックします
プロジェクト設定を構成するウィザードウィンドウで、「Next>」をクリックします
アプリケーション設定ビュー: アプリケーション ターゲットを実行可能に設定します
アプリケーション設定ビュー: アプリケーション ターゲットを実行可能に設定します

この構成部分が完了すると、実際の作業に移ります。すべてを正しく実行すると、IDE に次のソリューション エクスプローラー プロンプトが表示されます。

アプリケーション プロジェクトのソリューション エクスプローラー
アプリケーション プロジェクトのソリューション エクスプローラー

C++ モジュール ファイルであるT82.cppを開くと、ほとんどの定型コードが信頼できる IDE によって削除されていることがわかります。

メインの C++ アプリケーション モジュールの初期状態
メインの C++ アプリケーション モジュールの初期状態

ご覧のとおり、メイン ルーチンは、プログラムが実行時に呼び出すグローバル シンボルとしてエクスポートされています。

 

Windows CE アプリケーションの実装

アプリケーションウィンドウの作成

アプリケーション ウィンドウを作成するには、Microsoft MSDN API ドキュメントをガイド ドキュメントとして使用します。視覚的なウィンドウ効果を実現するには、次のライブラリ メソッドを使用します。

  • PostQuitMessage (winuser.h, coredll.dll)
  • DefWindowProc (winuser.h, coredll.dll)
  • RegisterClass (winuser.h, coredll.dll)
  • CreateWindow (winuser.h, coredll.dll)
  • ShowWindow (winuser.h, coredll.dll)
  • GetMessage (winuser.h, coredll.dll)
  • DispatchMessage (winuser.h, coredll.dll)

また、アプリケーション ウィンドウに受け入れられたメッセージを処理するコールバック関数を実装する必要もあります。

アプリケーションで生のウィンドウを生成する T82.cpp モジュールの実装
アプリケーションで生のウィンドウを生成する T82.cpp モジュールの実装

詳細はこちらよりご覧いただけます(英語)。

まとめ

このブログ記事では、Windows CE オペレーティング システムでのネイティブ アプリケーション開発について紹介しました。このシステムでアプリケーションを構築およびデバッグする機能は、後で Windows CE オペレーティング システムで実行されるデバイスに展開された他のアプリケーションを調査するときに非常に便利かつ重要になります。

 

 

◆クラロティー公式製品ページはこちらから

https://claroty.com/ja#product

◆クラロティー ニュースレタートップページに戻る

https://claroty-jp-newsroom.prezly.com/

◆ご相談やお問い合わせは、下記よりお願いします。

https://claroty.com/ja/request-a-demo

 

 

 

 

 

お問い合わせ先

加藤俊介

APJシニアセールスソリューションエンジニア, クラロティ

受信トレイを更新

[購読]をクリックすることで、プライバシーポリシーを読んで同意したことを確認します。

Claroty Japan Newsroomについて

このニュースルームでは日本のお客様へ向けて、プレスリリース以外の弊社最新製品情報や、イベントやセミナー登壇情報、Claroty公式HPよりブログやグローバルのケーススタディなど、クラロティのことをもっと知っていただけるよう幅広いトピックをご案内いたします。

クラロティについて

クラロティは、産業分野(製造工場やプラントにおけるOT)、ヘルスケア分野(病院におけるIoMT)、商業分野(ビル管理システムやエンタープライズIoT)にわたるサイバーフィジカルシステムの広大なネットワークであるXIoT(拡張型モノのインターネット)を保護し、組織をサポートします。当社のサイバー・フィジカル・システム保護プラットフォームは、顧客の既存のインフラストラクチャと統合して、可視性、リスクと脆弱性の管理、ネットワークのセグメンテーション、脅威の検出、および安全なリモートアクセスのためのあらゆる制御を提供します。

2015年の設立以来、ニューヨーク、テルアビブヤフォ、ロンドン、ミュンヘン、アジア太平洋地域などに拠点を構え、50カ国以上数百社の顧客に製品を提供し、8,000以上の工場・プラント、2,000以上の医療施設に導入実績があります。2021年にはシリーズD、E合計で6億4000万米ドルの資金調達を獲得し、ユニコーン企業の1社となりました。クラロティのプラットフォームは、包括的なセキュリティ管理を可能にするSaaS型のxDomeとオンプレミス型のCTD (Continuous Threat Detection)、安全なリモート接続を可能にするSRA (Secure Remote Access)、資産情報を素早く収集するEdgeの4つで構成される、統合的な産業用サイバーセキュリティソリューションです。