ラベル IME の投稿を表示しています。 すべての投稿を表示
ラベル IME の投稿を表示しています。 すべての投稿を表示

2018年5月27日

WindowsのIMEにおけるセキュリティ


TSF (Text Services Framework) で実装された IME は COM (Component Object Model) の DLL として実装されるので、その IME を有効にするとアプリケーションのプロセスにロードされて動作します。つまり、アプリケーションと同じプロセス空間に存在していることになります。

このため、サンドボックスによるセキュリティ上の制約は、アプリケーションに対してだけでなく IME に対しても同様に適用されます。

IME がファイル、レジストリ、プロセス間通信などを用いて設定内容や辞書を読み書きする際には、こうしたサンドボックスの外側に存在するオブジェクトに対して、許可が得られるような適切なセキュリティの設定がなされる必要があります。

一口にサンドボックスといっても様々な種類がありますが、基本的には Windows が持つセキュリティ機構を使用したものとなっています。@ITの記事が非常に参考になりますのでリンクを貼っておきます。

アクセス制御リストACL - @IT
http://www.atmarkit.co.jp/ait/articles/1407/17/news130.html

Windowsのアクセス制御リストACLとは? - @IT
http://www.atmarkit.co.jp/ait/articles/0601/21/news011.html

オブジェクトを識別するSIDとは? - @IT
http://www.atmarkit.co.jp/ait/articles/0306/28/news004.html

(追記)
Windowsのセキュリティ設定を記述するSDDL文字列とは? - @IT
http://www.atmarkit.co.jp/ait/articles/0603/25/news016.html

Windows における主要なサンドボックス毎に、制限されたプロセス内の IME がアクセスできるようにする方法について述べます。


Mandatory Integrity Control


Windows Vista で導入されたアクセス制御です。必須整合性コントロールと訳されます。

Mandatory Integrity Control
https://msdn.microsoft.com/en-us/library/windows/desktop/bb648648(v=vs.85).aspx

いくつかのレベルが用意され、下位のレベルから上位のレベルへのアクセスを制限する機能を持ちます。また、制限の内容としては、書き込み拒否 / 読み込み拒否 / 実行拒否があります。

以下のようなソフトウェアで利用されています。
  • Internet Exploere 7 以降 (詳細設定で保護モードを有効にしたとき)
  • Adobe Reader X 以降
  • Firefox 4.0 以降で動作する Flash Player 11.3 以降

これらのソフトウェアでは、整合性レベル「低」のプロセスとして動作しており、書き込み拒否の制限となっています。つまり、整合性レベル「低」より高いレベルのオブジェクトには書き込みできない、ということになります。読み込みのみであれば、整合性レベルの設定は不要です。SDDL としては次のような記述で SACL として表現されます。

S:(ML;;NW;;;LW)
また、sddl.h では次のように定義されています。

//
// SDDL Ace types
//
#define SDDL_MANDATORY_LABEL                TEXT("ML")  // Integrity label

//
// SDDL Rights
//
#define SDDL_NO_WRITE_UP                    TEXT("NW")
#define SDDL_NO_READ_UP                     TEXT("NR")
#define SDDL_NO_EXECUTE_UP                  TEXT("NX")

//
// Integrity Labels
//
#define SDDL_ML_LOW                         TEXT("LW")      // Low mandatory level
#define SDDL_ML_MEDIUM                      TEXT("ME")      // Medium mandatory level
#define SDDL_ML_MEDIUM_PLUS                 TEXT("MP")      // Medium Plus mandatory level
#define SDDL_ML_HIGH                        TEXT("HI")      // High mandatory level
#define SDDL_ML_SYSTEM                      TEXT("SI")      // System mandatory level


AppContainer


Windows 8 で導入されたアクセス制御です。

AppContainer Isolation
https://msdn.microsoft.com/en-us/library/windows/desktop/mt595898(v=vs.85).aspx

以下のようなソフトウェアで使用されています。
  • Windows ストアアプリ
  • ユニバーサル Windows プラットフォームアプリ (UWP アプリ)
  • Internet Explorer 10 以降 (詳細設定で「拡張保護モードを有効にする」をチェックしたとき)
  • Adobe Acrobat Reader DC 15.023.20053 以降 (環境設定で「AppContainer (ベータ版) で実行」をチェックしたとき)

sddl.h で次のように定義されている SID を SDDL に記述することになります。

//
// SDDL User aliases
//
#define SDDL_ALL_APP_PACKAGES               TEXT("AC")      // All applications running in an app package 


Restricted Token


アクセストークンを制限します。以下のようなソフトウェアで使用されています。
  • Adobe Reader X 以降
  • Firefox 4.0 以降で動作する Flash Player 11.3 以降

これらのソフトウェアでは、Restricted Token による権限チェックと、前述の整合性レベル、およびジョブオブジェクトから成るサンドボックスとなっています。Acrobat Reader DC では、ベータ版の機能としてですが AppContainer も使用可能となり、何でもありか?という状況になっています。

詳しく知りたい方は、Microsoft および Adobe のサイトを参照してください。

Restricted Token - Windows Dev Center
https://msdn.microsoft.com/en-us/library/windows/desktop/aa379316(v=vs.85).aspx

Job Objects - Windows Dev Center
https://msdn.microsoft.com/en-us/library/windows/desktop/ms684161(v=vs.85).aspx

Inside Adobe Reader Protected Mode – Part 1 – Design
http://blogs.adobe.com/security/2010/10/inside-adobe-reader-protected-mode-part-1-design.html

Inside Adobe Reader Protected Mode – Part 2 – The Sandbox Process
http://blogs.adobe.com/security/2010/10/inside-adobe-reader-protected-mode-part-2-the-sandbox-process.html

Inside Adobe Reader Protected Mode – Part 3 – Broker Process, Policies, and Inter-Process Communication
http://blogs.adobe.com/security/2010/11/inside-adobe-reader-protected-mode-part-3-broker-process-policies-and-inter-process-communication.html

Inside Adobe Reader Protected Mode – Part 4 – The Challenge of Sandboxing
http://blogs.adobe.com/security/2010/11/inside-adobe-reader-protected-mode-part-4-the-challenge-of-sandboxing.html

Flash Player Sandboxing is Coming to Firefox
http://blogs.adobe.com/security/2012/02/flash-player-sandboxing-is-coming-to-firefox.html

15.023.20053 Planned update, January 10, 2017 - Release Notes for Acrobat DC Products
https://www.adobe.com/devnet-docs/acrobatetk/tools/ReleaseNotesDC/continuous/dccontinuousjanuary2017.html

sddl.h で次のように定義されている SID と、Restricted Token によって無効化させたくない SID を SDDL に記述することになります。

#define SDDL_RESTRICTED_CODE                TEXT("RC")      // Restricted code

ジョブオブジェクトについては、現状では前述のソフトウェアにおいてはファイルの読み書きの制約を受けていないので特にすることはありません。


まとめ

では、サンドボックス外の名前付きパイプにアクセス許可を付加する方法について見てみましょう。ビルドする際は、advapi32.lib をリンクしてください。

#include <windows.h>
#include <sddl.h>
#include <aclapi.h>

int main() {
  PSECURITY_DESCRIPTOR pSecurityDescriptor;

  ConvertStringSecurityDescriptorToSecurityDescriptorW(
    L"D:(A;;GA;;;AC)(A;;GA;;;RC)(A;;GA;;;SY)(A;;GA;;;BA)(A;;GA;;;BU)S:(ML;;NW;;;LW)",
    SDDL_REVISION_1, &pSecurityDescriptor, NULL);

  SECURITY_ATTRIBUTES sa = {sizeof(sa), pSecurityDescriptor, FALSE};

  HANDLE hPipe = CreateNamedPipeW(
    L"\\\\.\\pipe\\SamplePipe",
    PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE,
    PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT,
    1, 256, 256, 0, &sa);

  LocalFree(pSecurityDescriptor);

  // ... Use named pipe.

  CloseHandle(hPipe);

  return 0;
}

次に、ファイルにアクセス許可を付与する方法を見てみましょう。

#include <windows.h>
#include <sddl.h>
#include <aclapi.h>

int main() {
  PSECURITY_DESCRIPTOR pSecurityDescriptor;

  ConvertStringSecurityDescriptorToSecurityDescriptorW(
    L"D:(A;;FA;;;AC)(A;;FA;;;RC)(A;;FA;;;SY)(A;;FA;;;BA)(A;;FA;;;BU)S:(ML;;NW;;;LW)",
    SDDL_REVISION_1, &pSecurityDescriptor, NULL);

  BOOL bDaclPresent = FALSE;
  PACL pDacl = NULL;
  BOOL bDaclDefaulted = FALSE;

  GetSecurityDescriptorDacl(
    pSecurityDescriptor, &bDaclPresent, &pDacl, &bDaclDefaulted);

  SetNamedSecurityInfoW(
    L"SampleFile.txt",
    SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
    NULL, NULL, pDacl, NULL);

  BOOL bSaclPresent = FALSE;
  PACL pSacl = NULL;
  BOOL bSaclDefaulted = FALSE;

  GetSecurityDescriptorSacl(
      pSecurityDescriptor,
      &bSaclPresent, &pSacl, &bSaclDefaulted);

  SetNamedSecurityInfoW(
    L"SampleFile.txt",
    SE_FILE_OBJECT, LABEL_SECURITY_INFORMATION,
    NULL, NULL, NULL, pSacl);

  LocalFree(pSecurityDescriptor);

  return 0;
}

こうして出力されたファイルのプロパティは次の画像にようになります。Low Mandatory Level で、エントリに "ALL APPLICATION PACKAGES" と "RESTRICTED" があることが分かります。ちなみにこの画像のうち継承されたエントリは無効にしてしまってもOKです。




上記のサンプルコードではフルアクセス可能な設定になっていますが、実際は設計に応じて適切な ACL としてください。

2016年7月9日

オンラインストレージとCorvusSKK


CorvusSKKの設定ファイルや個人辞書は、"%AppData%\CorvusSKK" ディレクトリに保存されます。

次の記事を参考に、自動的にオンラインストレージへバックアップするためのコマンドプロンプトでの設定方法をまとめてみました。

Windows の CorvusSKK で Azik + Google 日本語入力の変換を利用。設定ファイルはクラウドへ保存。

Tech TIPS:Windowsのシンボリックリンクとジャンクションとハードリンクの違い


私はOneDriveで確認しましたが、Google Drive、Dropboxなどでも同様の設定で使えると思います。

ここでは、オンラインストレージソフトが管理するディレクトリを仮に "C:\OnlineStorage\CorvusSKK" としています。適宜環境に合わせて変更してください。

  1. 辞書管理プロセスを終了します。
  2. > taskkill /im imcrvmgr.exe
  3. %AppData%\CorvusSKK ディレクトリをオンラインストレージソフトが管理するディレクトリにコピーします。
  4. > xcopy /ei "%AppData%\CorvusSKK" "C:\OnlineStorage\CorvusSKK"
  5. %AppData%\CorvusSKK ディレクトリを削除します。
  6. > rd /s /q "%AppData%\CorvusSKK"
  7. オンラインストレージソフトが管理するディレクトリへのシンボリックリンク %AppData%\CorvusSKK を作成します。(要管理者権限)
  8. > mklink /d "%AppData%\CorvusSKK" "C:\OnlineStorage\CorvusSKK"
    追記 : ジャンクションでも良いようです。こちらであれば管理者権限は不要です。
    > mklink /j "%AppData%\CorvusSKK" "C:\OnlineStorage\CorvusSKK"
  9. 辞書管理プロセスを再開します。
  10. > "%SystemRoot%\System32\IME\IMCRVSKK\imcrvmgr.exe"

ちなみに、複数のPCやユーザーで、ローカルおよびリモートの同じディレクトリを使ってしまうとお互いに上書きしあってしまいますので注意してください。

オンラインストレージサービスの規約や使い方をよく確認してご利用ください。

2015年5月2日

IMEの拡張機能


IMEの各種設定のうちキーバインドやローマ字仮名変換ルールなどは基本的な機能として用意されていることがほとんどですが、例えば、標準以外の辞書を使いたいとか候補を整形したいなどの要望に答えるため、いくつかのIMEでは簡易的なスクリプトを組むことでそれらを実現できる機能を持っています。

実現可能な機能については各IMEによって異なりますが、主に以下のような機能を有しているようです。
  1. 外部からデータを取得する
  2. 外部にデータを出力する
  3. 動的に候補や注釈を生成する
  4. これらをスクリプト言語で組める
以下、拡張機能を持っているWindows用IMEの紹介です。


ATOK


ATOKダイレクトAPI
http://atok.com/useful/developer/api/

使用言語 : Perl, Ruby, Python


SKK日本語入力FEP


SKKGate
http://coexe.web.fc2.com/skkgate.html
SKKプラス
http://coexe.web.fc2.com/skkextend.html

使用言語 : JavaScript など


CorvusSKK


Lua拡張
https://github.com/nathancorvussolis/corvusskk/wiki#Lua
https://github.com/nathancorvussolis/corvusskk/blob/master/installer/config-lua/init.lua

使用言語 : Lua


SKK日本語入力FEPとCorvusSKKに関しては、操作体系の元ネタであるSKKがEmacsLispで記述された候補を実行して動的に候補を生成する機能を元々持っているので、これを拡張可能にしているのも自然な流れかなと思います。

Windows用IMEでユーザー数が多いMS-IMEとGoogle日本語入力には拡張機能はないようですが、Android用のGoogle日本語入力やATOKには他のアプリのと連携を行うマッシュルーム機能があるそうです。

以前某IMEでも話題になりましたが、気を付けなければならないのがIMEのセキュリティについてです。
拡張機能を不用意に使うと穴ができる可能性があるので、製作者側にも使用者側にも慎重さが求められます。

IME as a Possible Keylogger (symantec)
https://www.symantec.com/avcenter/reference/ime.as.a.possible.keylogger.pdf

それでは、良い連休を。

2015年3月11日

SKK-JISYO.stationを更新した話 (2)

前回は本題からちょっと脇道に逸れてしまったので、今回は更新作業そのものについて書きたいと思います。
まあ、あまり大した話ではないですが。

資料探し


まず、手元に情報がないため資料を探すことから始めます。
SKK-JISYO.stationは廃線、廃駅については削除をしない方針で、最後の更新が2005年なので、
  1. 期間は2006年〜2014年の範囲 (一応2005年もチェックしておく)
  2. 駅、路線、鉄道会社で新規もしくは名称が変更されたもの
という条件で探します。良さげな以下の2つを見付けたのでこれらを元ネタとすることにします。

更新用辞書作成


あとはひたすら単純作業です。
  1. Category:開業年別鉄道駅に記載されている駅をWikipediaで検索し、日付の項目をチェック
  2. 更新用の辞書ファイルにエントリを追加
  3. 1〜2を繰り返す
さらに、駅データベースで改称とされている駅についても同様にエントリを追加していきます。
Wikipediaのほうは中国、台湾、韓国の駅も多数含まれていて紛らわしいので逆にしておけば良かったと、このあたりで少し後悔。

同音異字のチェック


次に、更新用の辞書ファイルのなかで同音で異なる字の駅がSKK-JISYO.stationにないかどうかをチェックします。

今回は「なかのしまえき /中之島駅/」と「ぞうしがやえき /雑司が谷駅/」が該当したので、注釈を付けて「なかのしまえき /中之島駅;中之島線/」、「ぞうしがやえき /雑司が谷駅;副都心線/」とします。
さらに「ぞうしがやえき」には元々1つしか候補がなかったので既存の候補に注釈を付加した「ぞうしがやえき /雑司ヶ谷駅;荒川線/」も追加します。
ちなみに、「なかのしまえき」のエントリには南武線「中野島駅」、札幌市営地下鉄南北線「中の島駅」が既に登録されていました。

「〜えき」「〜駅」無しの更新用辞書作成


SKK-JISYO.stationには見出し語の「〜えき」と候補の「〜駅」が無いエントリも登録されているので、更新用の辞書ファイルをベースとして「えき」および「駅」を取り除いたバージョンの更新用辞書を作成します。

マージ


既存のSKK-JISYO.stationと更新用の2つの辞書ファイルを拙作のmeskkdicを使ってマージし、ファイル先頭のコメント行を追加します。
Unix系であれば、skkdic-exprskkdic-sort、またはskkdic-expr2を使うと良いと思います。
念のため、既存の辞書と新しい辞書のdiffをとって問題がないかどうか確認します。

コミット


そして最後に、openlab.jpのCVSにコミットして完了です。



と、ここまで書いて、大阪市営地下鉄今里筋線、東京メトロ副都心線などの路線名が漏れていたことに気が付きました。
あとで追加しておきます。

2015年3月9日

SKK-JISYO.stationを更新した話

2015年2月末、TwitterでSKK関連のつぶやきを眺めていたところSKK-JISYO.stationに吉川美南駅(武蔵野線 吉川駅と新三郷駅の間)が載っていないとの発言を見かけました。SKK-JISYO.stationを調べてみたら2005年を最後に実質的な更新がされておらずコメント部分のみの更新に留まっていました。

これはいかん、ということで翌3月になって時間ができたときに作業開始。2006年〜2014年だとしても丸9年もありますが、幸いにもSKK-JISYO.stationは廃線、廃駅は残したままとしておく方針なので、新規と変更だけに絞ることとし、更新用の辞書を作って最終的に既存の辞書とマージしてコミットしました。しかし、翌日見直したら1件だけ漏れが見付かったのでこれを追加して再度コミットし、特に問題なく作業完了しました。

気になった点としては、名称が「〜停留場」や「〜停留所」などであっても「〜駅」となっているところでした。(例:都電荒川線 三ノ輪橋停留場) この使い分けについては、法律や省令で決められていたり設備の違いだったり昔の名残もあったりして素人が判別するのはなかなか難しいようです。基本的には鉄道会社が呼んでいる名称が良さそうなのですが、今回は以前からの方針に沿って「〜駅」で統一しました。

また、廃線が思っていたより多いという印象を受けました。

以下、今回更新した範囲で個人的に気になった出来事を挙げてみました。(注:かなり関東に偏っています。)
  • 2008年3月30日 日暮里・舎人ライナー開業
  • 2008年3月30日  横浜市営地下鉄グリーンライン開業
  • 2010年10月21日 東京国際空港国際線ターミナル開業
    • 京急空港線 「羽田空港国際線ターミナル駅」開業
    • 京急空港線 「羽田空港駅」が「羽田空港国内線ターミナル駅」に改称
    • 東京モノレール羽田空港線 「羽田空港国際線ビル駅」開業
  • 2012年3月17日 東武伊勢崎線 「業平橋駅」が 「とうきょうスカイツリー駅」に改称
  • 2012年8月20日 東日本大震災で不通になっていた気仙沼線のうち、柳津駅〜気仙沼駅の区間でBRTの暫定運行開始

そして今年2015年は、3月14日に予定されている北陸新幹線の長野駅〜金沢駅の開業と、上野東京ラインの開業がありますね。ちなみに、長野新幹線は正式には北陸新幹線という名称で、東京駅〜長野駅の区間が便宜的にそう呼ばれていただけのようで、今後は「北陸新幹線(長野経由)」など表記するそうです。

なるべく漏れが無いように調べたつもりですが、私自身鉄道にあまり詳しくないこともあり調べきれていない可能性があります。 もし2014年までに開業、改名した駅、路線、鉄道会社で記載されていないものがありましたらTwitterなどで私まで知らせていただければ対応しますので、よろしくお願いします。

今回更新したSKK-JISYO.stationは、こちらからダウンロードできます。


そういえば、コンピューター関係の記事を巡回しているとやけに詳しい電車の記事が面白かったなあ、と思い出したのでリンクを貼っておきます。


確か最初に読んだのが、向谷実さんが京阪電鉄の発車メロディを作った話でした。読み物として、あまり電車に詳しくなくても(詳しかったら多分もっと)面白いかと思います。

2015年1月11日

SKKの個人辞書

あけましておめでとうございます。

SKK風の入力方式には様々な実装があり、それぞれの実装毎で個人辞書が管理されています。
色んな環境を使用する人にとって、どの実装でも共通の個人辞書を使えないか、という考えが浮ぶのは自然なことかと思います。

そこで、SKK辞書サーバーを拡張して辞書検索のみならず辞書登録も可能なサーバーがあればいいのでは、という発想もまた自然なことだと思います。そのような機能を持ったサーバーで現在公開されているものは存在しないようですが、GoogleDriveやDropboxのAPIを使ったりできたら非常に面白いかな、と個人的には思ったりしています。

さて、SKKの個人辞書はEUC-JPやUTF-8などのプレーンテキストなので、ユーザーにとって適当なタイミングで取り込んだりしたほうが柔軟性があって良いのもまたしかりです。

以前 .skk-jisyo を自動的に取り込めないかという要望が寄せられたことがありました。 そこで回答したcveuc.exemeskkdicw.exeを使って.skk-jisyoをCorvusSKKの個人辞書に取り込むバッチファイルを一部改変したものを以下に記述します。

----- ここから -----

pushd %~dp0

@rem サーバープロセスを終了
taskkill /im imcrvmgr.exe


@rem .skk-jisyoをUTF-16(LE)に変換 (.skk-jisyoがEUC-JIS-2004かEUC-JPの場合)
cveuc.exe -e -W "%USERPROFILE%\.skk-jisyo" skk-jisyo-utf16.txt

@rem .skk-jisyoをUTF-16(LE)に変換 (.skk-jisyoがUTF-8の場合)
@rem cveuc.exe -u -W "%USERPROFILE%\.skk-jisyo" skk-jisyo-utf16.txt


@rem ユーザー辞書とマージ (.skk-jisyoを優先する場合)
meskkdicw.exe skk-jisyo-utf16.txt + "%AppData%\CorvusSKK\userdict.txt" skk-jisyo-utf16-new.txt
meskkdicw.exe -O skk-jisyo-utf16.txt + "%AppData%\CorvusSKK\userdict.txt" skk-jisyo-utf16-new.txt

@rem ユーザー辞書とマージ (CorvusSKKのuserdict.txtを優先する場合)
@rem meskkdicw.exe "%AppData%\CorvusSKK\userdict.txt" + skk-jisyo-utf16.txt skk-jisyo-utf16-new.txt
@rem meskkdicw.exe -O "%AppData%\CorvusSKK\userdict.txt" + skk-jisyo-utf16.txt skk-jisyo-utf16-new.txt


@rem マージしたユーザー辞書をコピー
copy /y skk-jisyo-utf16-new.txt "%AppData%\CorvusSKK\userdict.txt"

@rem 一時ファイルを削除
del skk-jisyo-utf16.txt
del skk-jisyo-utf16-new.txt

@rem サーバープロセスを起動
start "" "%SystemRoot%\System32\IME\IMCRVSKK\imcrvmgr.exe"

popd

----- ここまで -----


昨年はSKK-JISYO.lispをコミットさせてもらったりしたので、今年はddskk本体でも何か貢献できればと思っています。ddskk本体の開発環境がSKK OpenLabのCVSからGitHubに移行し、EmacsのパッケージシステムであるMELPAに登録されたりと、オラなんだかわくわくしてきたぞ状態の今日この頃です。

2014年10月19日

IME開発者向けリンク集

CorvusSKKというDDSKKの入力方式を用いたWindowsで動くIMEを開発しております。
DOS、Windowsの世界では過去に様々なFEP、IMEが存在していましたが、現在のWindowsにおいては選択肢がちょっと少ないのでは?ということで、これからIMEを作ってみたい方向けに有益かと思われるリンクをまとめてみました。



Text Services Framework (TSF) 実装例

  • ソースコードが公開されているもの
    • CorvusSKK
      • 手前味噌ですみません。
    • tsf-tutcode
      • CorvusSKKをフォークして頂きました。漢字直接入力機能が追加されています。
    • tsf-vim
      • vi風な操作をIMEとして実装されたもの
    • Mozc
      • Google日本語入力のオープンソース版。辞書はそれに劣るようですが、Mac、Linux、Android、ChromeOSでも動くそうです。
  • ソースコードが公開されていないもの
    • SKK日本語入力FEP (SKKFEP)
      • SKKの操作性をベースに革新的な機能が盛り沢山なIMEです。一度はまると抜け出せなくなります。
    • Google日本語入力
      • あのGoogleがIMEを作った!と衝撃が走ったのは記憶に新しいところ。Windows 7まではIMM32実装が、Windows 8以降でTSF実装が使用されます。
    • MS-IME
      • Windowsに標準で組み込まれています。リンクはMS-IME2010のものですが、OfficeのライセンスがあればXP、Vista、7で使用可能です。
    • ATOK
      • 賢い変換が可能だそうです。個人的には試用版を少し触れた程度なので
    • Baidu IME
      •  検索エンジンのサービスを開発運用しているとIMEも作っちゃおうぜみたいになるのでしょうか。
    • WinAnthy
      • Anthyの移植版
    • Social IME
      • インターネット経由でかな漢字変換を行うユーザー参加型のIME。以前ソースコードが公開されていたみたいなのですが現在では見付かりませんでした。

 

Text Services Framework (TSF) 全般


WindowsにおけるIMEは、notepad.exeやexplorer.exeなどのプロセスにIMEのDLLがロードされた状態で動きます。IMEのDLLはプロセス側と同等のアクセス制限が課されるため、ファイルアクセスやプロセス間通信を行うときにそれを考慮しなければなりません。

セキュリティ全般


Internat Explorer

Windows Vista 以降の Internet Explorer の保護モードについて

AppContainer

Windows 8 以降のAppContainerについて


Adobe Sandbox

Adobe Acrobat/Reader X以降、Firefox 4.0以降で動くAdobe Flash Player 11.3以降で有効となるサンドボックスについて



 ざっとこんなところでしょうか。