(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-14
(45)【発行日】2024-02-22
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
G06F 21/12 20130101AFI20240215BHJP
G06F 21/56 20130101ALI20240215BHJP
G06F 21/55 20130101ALI20240215BHJP
G06F 11/07 20060101ALI20240215BHJP
【FI】
G06F21/12 360
G06F21/56 360
G06F21/55 320
G06F11/07 151
G06F11/07 190
(21)【出願番号】P 2020158707
(22)【出願日】2020-09-23
【審査請求日】2023-03-27
(73)【特許権者】
【識別番号】501428545
【氏名又は名称】株式会社デンソーウェーブ
(74)【代理人】
【識別番号】100106149
【氏名又は名称】矢作 和行
(74)【代理人】
【識別番号】100121991
【氏名又は名称】野々部 泰平
(74)【代理人】
【識別番号】100145595
【氏名又は名称】久保 貴則
(72)【発明者】
【氏名】葛谷 匡昭
【審査官】中里 裕正
(56)【参考文献】
【文献】特開2013-093058(JP,A)
【文献】特開2013-247664(JP,A)
【文献】特開2011-034552(JP,A)
【文献】特開2009-205472(JP,A)
【文献】特開2008-084246(JP,A)
【文献】特開2005-229642(JP,A)
【文献】特開2001-318810(JP,A)
【文献】特開平05-061732(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/12
G06F 11/07
G06F 21/55
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
第1アプリケーションプログラムが実行するプロセスが、第2アプリケーションプログラムが実行するプロセスと連携するために、
カーネル層で動作し、前記第1アプリケーションプログラムが前記第2アプリケーションプログラムに要求する処理を特定する情報であって、記述形式がプロセス間通信型となっている要求処理特定情報を、前記第2アプリケーションプログラムが実行するプロセスに送信するプロセス間通信部(21)と、
アプリケーション層と前記カーネル層との間のフレームワーク層で動作し、前記第1アプリケーションプログラムが送信した情報をもとに生成された前記要求処理特定情報を取得して前記プロセス間通信部に送信する第1プロセス側通信部(22)と、
前記フレームワーク層で動作し、前記プロセス間通信部が送信した前記要求処理特定情報を受信し、受信した前記要求処理特定情報を前記第2アプリケーションプログラムに送信する第2プロセス側通信部(23)とを備えた情報処理装置(10)であって、
前記第2プロセス側通信部および前記第1プロセス側通信部の少なくとも一方は、取得した前記要求処理特定情報をログに残すようになっており、
実行が要求されたことを検出する必要がある処理について、前記要求処理特定情報と、前記要求処理特定情報の前記アプリケーション層における記述とを対応付けた対応リストを記憶する記憶部(14)と、
前記ログを取得する取得部(S10)と、
前記取得部が取得したログと、前記記憶部に記憶されている前記対応リストとをもとに、処理が要求されたことを検出する必要があるアプリケーションプログラムである検出対象アプリケーションプログラムに処理が要求されたことを検出する検出部(S20)とを備える、情報処理装置。
【請求項2】
請求項1に記載の情報処理装置であって、
前記第1プロセス側通信部は、スタックトレースを取得して前記ログに記憶するようになっており、
前記検出部が検出した前記検出対象アプリケーションプログラムと、前記ログに記憶されている前記スタックトレースとをもとに、前記検出対象アプリケーションプログラムに処理を要求したアプリケーションプログラムを特定するプログラム特定部(S30)を備える、情報処理装置。
【請求項3】
請求項1または2に記載の情報処理装置であって、
前記第2プロセス側通信部および前記第1プロセス側通信部が両方とも、取得した前記要求処理特定情報をログに残すようになっており、
前記検出部は、前記第2プロセス側通信部が取得した前記要求処理特定情報がログにあるが、同じ前記要求処理特定情報を前記第1プロセス側通信部が取得したことが前記ログにない場合、不正処理が発生したと判断する、情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
ユーザが意図していないアプリケーションプログラムに処理が要求されたことを検出できる情報処理装置に関する。
【背景技術】
【0002】
特許文献1には、ユーザが認識していない動作が、ユーザに気づかれないままに行われることを防止する装置が開示されている。特許文献1に開示された装置は、対象とするAPI(Application Programing Interface)をフックする。
【0003】
すなわち、特許文献1に開示された装置は、対象とするAPIに、そのAPIを実行しようとする動作を検出する処理を組み込む。そして、対象とするAPIを実行しようとする動作を検出した場合、そのAPIが実行される状況を解析する。解析の結果、ユーザが認識していない動作により情報が送信されると判定すると、ユーザに通知する等の処理を行う。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1の技術を適用するためには、ソースコードが公開されている必要がある。したがって、ソースコードが公開されていないアプリケーションプログラム(以下、アプリケーション)に対しては、特許文献1の技術を適用することができない。
【0006】
そこで、ソースコードが公開されていないアプリケーションを利用する場合でも、ユーザの意図していないアプリケーションに処理が要求されたことを検出できるようにすることが望まれる。
【0007】
本開示は、この事情に基づいて成されたものであり、その目的とするところは、ユーザの意図していないアプリケーションに処理が要求されたことを検出できる情報処理装置を提供することにある。
【課題を解決するための手段】
【0008】
上記目的は独立請求項に記載の特徴の組み合わせにより達成され、また、下位請求項は更なる有利な具体例を規定する。特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的態様との対応関係を示すものであって、開示した技術的範囲を限定するものではない。
【0009】
上記目的を達成するための1つの開示は、
第1アプリケーションプログラムが実行するプロセスが、第2アプリケーションプログラムが実行するプロセスと連携するために、
カーネル層で動作し、第1アプリケーションプログラムが第2アプリケーションプログラムに要求する処理を特定する情報であって、記述形式がプロセス間通信型となっている要求処理特定情報を、第2アプリケーションプログラムが実行するプロセスに送信するプロセス間通信部(21)と、
アプリケーション層とカーネル層との間のフレームワーク層で動作し、第1アプリケーションプログラムが送信した情報をもとに生成された要求処理特定情報を取得してプロセス間通信部に送信する第1プロセス側通信部(22)と、
フレームワーク層で動作し、プロセス間通信部が送信した要求処理特定情報を受信し、受信した要求処理特定情報を第2アプリケーションプログラムに送信する第2プロセス側通信部(23)とを備えた情報処理装置(10)であって、
第2プロセス側通信部および第1プロセス側通信部の少なくとも一方は、取得した要求処理特定情報をログに残すようになっており、
実行が要求されたことを検出する必要がある処理について、要求処理特定情報と、要求処理特定情報のアプリケーション層における記述とを対応付けた対応リストを記憶する記憶部(14)と、
ログを取得する取得部(S10)と、
取得部が取得したログと、記憶部に記憶されている対応リストとをもとに、処理が要求されたことを検出する必要があるアプリケーションプログラムである検出対象アプリケーションプログラムに処理が要求されたことを検出する検出部(S20)とを備える。
【0010】
この情報処理装置は、ユーザの意図していないアプリケーションに処理が要求されたことを検出するために、プロセス間通信において情報を取得する。すなわち、第1プロセス側通信部および第2プロセス側通信部の少なくとも一方は、取得した要求処理特定情報をログに残すようになっている。また、実行が要求されたことを検出する必要がある処理について、要求処理特定情報と、要求処理特定情報のアプリケーション層における記述とを対応付けた対応リストを記憶している。そして、ログに、対応リストにある要求処理特定情報が記憶されている場合に、検出対象アプリケーションプログラムに処理が要求されたことを検出する。
【0011】
このようにして検出対象アプリケーションプログラムに処理が要求されたことを検出するので、ソースコードが公開されていない検出対象アプリケーションプログラムであっても、その検出対象アプリケーションプログラムに処理が要求されたかどうかを検出することができる。
【0012】
また、この情報処理装置は、好ましくは、
第1プロセス側通信部は、スタックトレースを取得してログに記憶するようになっており、
検出部が検出した検出対象アプリケーションプログラムと、ログに記憶されているスタックトレースとをもとに、検出対象アプリケーションプログラムに処理を要求したアプリケーションプログラムを特定するプログラム特定部(S30)を備える。
【0013】
スタックトレースには、検出対象アプリケーションに処理を要求したアプリケーションも記録されているので、このようにすれば、検出対象アプリケーションプログラムに処理を要求したアプリケーションプログラムも特定できる。たとえば、検出対象アプリケーションプログラムに処理を要求したアプリケーションプログラムをユーザに通知するようにすれば、ユーザは、どのアプリケーションプログラムが検出対象アプリケーションプログラムに処理を要求したのかも知ることができる。
【0014】
また、この情報処理装置は、好ましくは、
第2プロセス側通信部および第1プロセス側通信部が両方とも、取得した要求処理特定情報をログに残すようになっており、
検出部は、第2プロセス側通信部が取得した要求処理特定情報がログにあるが、同じ要求処理特定情報を第1プロセス側通信部が取得したことがログにない場合、不正処理が発生したと判断する。
【0015】
技術的には、第1プロセス側通信部を経由せずに、プロセス間通信部に要求処理特定情報を送信することができる。しかし、このような処理を実行することは不正な処理である。そこで、上記のようにして、検出部は、不正な処理が実行されたことを検出する。
【図面の簡単な説明】
【0016】
【
図1】実施形態となる光学情報読み取り装置10の外観図。
【
図2】光学情報読み取り装置10の構成を示すブロック図。
【
図4】情報処理部17が実行するプログラム階層構造を示す図。
【発明を実施するための形態】
【0017】
以下、実施形態を図面に基づいて説明する。
図1は、実施形態となる光学情報読み取り装置10の外観図である。光学情報読み取り装置10は情報処理装置の一例である。光学情報読み取り装置10は、バーコード、二次元コードなどの情報コードを光学的に読み取る業務用の装置である。光学情報読み取り装置10は、スマートフォン型であり、表示部11を備えている。表示部11には、操作画面、情報コードをデコードして得られた情報などが表示される。
【0018】
〔光学情報読み取り装置10の構成〕
次に、光学情報読み取り装置10の構成を説明する。
図2に光学情報読み取り装置10の構成をブロック図にて示している。光学情報読み取り装置10は、表示部11、通信部12、カメラ13、記憶部14、操作部16、情報処理部17を備えている。
【0019】
表示部11には、前述したように、操作画面、情報コードをデコードして得られた情報などが表示される。通信部12は、光学情報読み取り装置10の外部と無線通信する。通信部12は、近距離無線通信回路、広域無線通信回路の一方または両方を備える。
【0020】
カメラ13は、情報コードを撮影するためのものである。なお、情報コードを撮影しやすくするために、光学情報読み取り装置10は照明を備えていてもよい。記憶部14は、フラッシュメモリなどの不揮発性メモリである。記憶部14には、情報処理部17が実行するプログラムが記憶されている。記憶されているプログラムの1つに不正検出プログラム15がある。
【0021】
また、記憶部14には、
図3に示す対応リストも記憶されている。この対応リストは、検出対象APIについて、アプリケーション層における記述形式と、AIDLによる記述形式に変換された記述であるI/Fディスクリプタとコードとを対応付けたリストである。なお、検出対象APIは検出対象アプリケーションプログラムであり、AIDLによる記述形式はプロセス間通信型の記述形式である。
【0022】
アプリケーション層における記述形式はJAVA(登録商標)である。検出対象APIは、処理が要求されたことを検出する必要があるアプリケーションが備えるAPIである。ユーザは、意図しないアプリケーションに処理が要求されたことを知るために、そのアプリケーションを検出対象APIとする。なお、検出対象APIと記載する場合、そのAPIのアプリケーション層における記述を意味する。
【0023】
対応リストの作り方を説明する。ソースコードが公開されている検出対象APIは、ソースコードを解析して対応付けを行うことができる。ソースコードが公開されていない検出対象APIは、この光学情報読み取り装置10で検出対象APIを実行する。ログから検出対象APIが実行されるときに出力されるバインダ部20のI/Fディスクリプタとコードを取得できるので、検出対象APIと、I/Fディスクリプタおよびコードとを対応付けることができる。
【0024】
操作部16は、表示部11の表示面に重畳されたタッチパネルなどであり、ユーザが種々の情報を光学情報読み取り装置10に入力する際に操作する。なお、操作部16の一部または全部がメカニカルキーであってもよい。
【0025】
情報処理部17は、プロセッサ、不揮発性メモリ、RAM、I/O、およびこれらの構成を接続するバスラインなどを備えたコンピュータにより実現できる。情報処理部17は、表示部11、通信部12、カメラ13、記憶部14、操作部16と通信可能に接続されており、これらを制御する。
【0026】
プロセッサが、RAMの一時記憶機能を利用しつつ、不揮発性メモリ、あるいは、記憶部14に記憶されたプログラムを実行することで、情報処理部17は、読み取り処理部18、不正検出部19として作動する。これらの作動が実行されることは、プログラムに対応する方法が実行されることを意味する。
【0027】
読み取り処理部18は、カメラ13が撮影した画像を表している画像データを取得し、その画像データを画像解析して、画像に含まれている情報コードに格納されている符号を復号する。
【0028】
不正検出部19は、情報処理部17が備えるプロセッサが不正検出プログラム15を実行することで実現する。不正検出部19は
図5を用いて後述する。
【0029】
図4には、情報処理部17が実行するプログラム階層構造を示している。実施形態の光学情報読み取り装置10はオペレーティングシステムとしてANDROID(登録商標)を使用している。このオペレーティングシステムにおいては、プロセス間通信が可能である。
【0030】
プロセス間通信は、あるプロセス(第1プロセスとする)と別のプロセス(第2プロセスとする)とが連携する場合に、第1プロセスが第2プロセスに要求する処理を特定する情報(以下、要求処理特定情報)が、カーネル層を経由して第2プロセスに伝達される仕組みである。なお、プロセスとはプログラムの実行単位である。
【0031】
図4には、図示の便宜上、第1プロセスと第2プロセスをそれぞれ1つずつしか記載していないが、第1プロセスおよび第2プロセスは複数存在する。第1プロセスを実行するアプリケーションを第1アプリケーションAPP1とし、第2プロセスを実行するアプリケーションを第2アプリケーションAPP2とする。
【0032】
図4に示している第2アプリケーションAPP2は、APIを備えている。APIは、第2アプリケーションAPP2が他のアプリケーションに対して処理の少なくとも一部を提供するためのインターフェースである。
【0033】
プロセス間通信を実現するために、情報処理部17は、バインダ部20を備えている。バインダ部20は、第1プロセスと第2プロセスとを結びつける機能を有する。バインダ部20は、プロセス間通信を実現する一つの手段である。バインダ部20は、第1プロセスが出力した信号を、アプリケーション層から一旦、カーネル層に伝達し、さらに、カーネル層から第2プロセスに伝達する。バインダ部20は、カーネル層で動作するプロセス間通信部21と、中間層であるフレームワーク層で動作するクライアント側通信部22およびサービス側通信部23を備える。なお、クライアント側通信部22は第1プロセス側通信部に相当し、サービス側通信部23は第2プロセス側通信部に相当する。
【0034】
また、情報処理部17は、AIDL層で動作するクライアント側変換部24とサービス側変換部25を備える。第1アプリケーションAPP1は、第2アプリケーションAPP2に処理を要求する場合、サービスの提供を受けたい第2アプリケーションAPP2のAPIを特定する情報と、そのサービスに要求する処理を示している情報を出力する。
【0035】
第1アプリケーションAPP1が出力する上記情報は、AIDL層で動作するクライアント側変換部24に受信される。AIDLは、ANDROIDインターフェース定義言語を意味しており、プロセス間通信のための言語である。クライアント側変換部24は、第1アプリケーションAPP1から受信した情報をI/Fディスクリプタとコードに変換してクライアント側通信部22に送信する。I/Fディスクリプタとコードは、第1アプリケーションAPP1が第2アプリケーションAPP2に要求する処理を特定する情報であって、プロセス間通信の記述形式に変換された情報である。この情報が要求処理特定情報である。
【0036】
クライアント側通信部22は、クライアント側変換部24が送信したI/Fディスクリプタとコードを受信して、プロセス間通信部21に送信する。プロセス間通信部21は、I/Fディスクリプタとコードをどの第2プロセスが実行すべきかを決定する。そして、サービス側通信部23に、I/Fディスクリプタとコード、および、それらを送信する第2プロセスを特定する情報を送信する。
【0037】
サービス側通信部23は、プロセス間通信部21から受信したI/Fディスクリプタとコードをサービス側変換部25に送信する。サービス側変換部25は、受信したI/Fディスクリプタとコードを、第1アプリケーションAPP1が出力した記述形式に戻して、第2アプリケーションAPP2のAPIに送信する。
【0038】
ここまで説明したバインダ部20、クライアント側変換部24、サービス側変換部25の処理は、一般的なプロセス間通信で行われる処理である。
【0039】
さらに、この実施形態のクライアント側通信部22およびサービス側通信部23は、以下の処理も実行する。クライアント側通信部22は、一般的なクライアント側通信部に修正が加えられ、クライアント側通信部22が取得したI/Fディスクリプタとコードを、取得した主体とともにログに残すようになっている。サービス側通信部23も、一般的なサービス側通信部に修正が加えられ、取得したI/Fディスクリプタとコードを取得した主体とともにログに残すようになっている。
【0040】
加えて、クライアント側通信部22は、I/Fディスクリプタとコードを受信してプロセス間通信部21に送信するときに、スタックトレースを取得し、取得したスタックトレースもログに残すようになっている。スタックトレースは、現在のコードの位置まで経てきた関数を示す情報である。
【0041】
図5に不正検出部19が実行する処理を示す。
図5に示す処理は、一定周期で実行する。S10は取得部としての処理であり、ログを取得する。S20は検出部としての処理である。S20は、S21からS26を備える。S21では、サービス側通信部23についてのログがあるか否かを判断する。S21の判断結果がNOであればS10に戻り、YESであればS22に進む。
【0042】
図6には、S10で取得するログの一例を示している。
図6に示すログには、下から2行目に、”Binder:execTransact()”が記述されている。これは、サービス側通信部23が実行するメソッドである。したがって、S10で取得したログが
図6に示すログであった場合には、S21の判断結果がYESになりS22に進む。S21の判断結果がYESである場合、プロセス間通信が実行されたことが分かる。
【0043】
S22では、クライアント側通信部22についてのログがあるか否かを判断する。この判断を実行する理由は、技術的にクライアント側通信部22を経由せずにクライアント側変換部24からプロセス間通信部21へI/Fディスクリプタとコードを送信してしまうことが可能だからである。技術的には可能であっても、クライアント側通信部22を経由しない処理は不正である。したがって、S22の判断結果がNOであればS26に進み、不正処理が発生したとする。一方、S22の判断結果がYESであればS23に進む。
【0044】
図6に示すログには、1行目に”BinderProxy”が記述されている。”BinderProxy”は、クライアント側通信部22を意味している。したがって、S10で取得したログが
図6に示すログであった場合には、S22の判断結果がYESになりS23に進む。
【0045】
S23では、ログから、検出対象APIのI/Fディスクリプタとコードを検索する。S24では、S23での検索の結果、ログに検出対象APIのI/Fディスクリプタとコードがあるか否かを判断する。S24の判断結果がNOであればS10に戻り、S24の判断結果がYESであればS25に進む。
【0046】
図6に示すログには、1行目に、
図3に示す表の1行目のI/Fディスクリプタとコードが記述されている。したがって、S10で取得したログが
図6に示すログであった場合には、S24の判断結果がYESになり、S25に進む。S25では、検出対象APIに処理が要求されたことを検出したとする。続いてS26に進む。
【0047】
S26は、S25を実行した場合に加え、S22の判断結果がNOであった場合にも実行する。そのS26では、前述したように、不正処理が発生したとする。
【0048】
続いてプログラム特定部であるS30を実行する。S30はS31とS32を備える。S31では、検出対象APIのスタックトレースのログを確認する。
図6では、3行目からの破線の四角で囲んである部分がスタックトレースのログである。この部分において、S25で検出した検出対象APIのアプリケーション層における記述が存在している部分を確認することになる。
【0049】
S32では、検出対象APIを実行したモジュールを特定する。具体的には、スタックトレースのログにある、S25で検出した検出対象APIの次の行に記載されているモジュールが検出対象APIを実行したモジュールであると決定する。
【0050】
図6の例では、S25で検出した検出対象APIは、スタックトレースのログの[3]に記述されている。したがって、次の[4]に記述されている”com.company.inventoryprivatedata”モジュールの”Utils”クラスの”utilMethod”メソッドから、検出対象APIである”getLine1Number”メソッドが実行されたことがわかる。なお、メソッドは、処理をまとめたものであり、アプリケーションの一部である。
【0051】
S40では、検出対象のAPIに処理が要求されたこと、および、検出対象APIに処理を要求したメソッドを、表示部11に表示することでユーザに通知する。
【0052】
[実施形態のまとめ]
以上、説明した本実施形態では、クライアント側通信部22およびサービス側通信部23は、取得したI/Fディスクリプタとコードをログに残すようになっている。また、この光学情報読み取り装置10は、I/Fディスクリプタとコードと、検出対象APIとを対応づける対応リスト(
図3)を記憶している。そして、不正検出部19は、ログを取得し(S10)、取得したログに、上記対応リストにあるI/Fディスクリプタとコードがあるかどうかを確認することで、検出対象APIに処理が要求されたかどうかを検出する(S20)。
【0053】
このようにして検出対象APIに処理が要求されたかどうかを確認するので、ソースコードが公開されていない検出対象APIであっても、その検出対象APIに処理が要求されたかどうかを検出することができる。
【0054】
さらに、クライアント側通信部22は、スタックトレースを取得してログに記憶するようになっている。不正検出部19は、処理が要求されたことを検出した検出対象APIと、ログに記憶されているスタックトレースとから、検出対象APIを実行したアプリケーションを特定する(S30)。そして、検出対象APIを実行したアプリケーションも、ユーザに通知する(S40)。したがって、ユーザは、検出対象APIに処理が要求されたことだけでなく、どのアプリケーションが検出対象APIに処理を要求したのかも知ることができる。
【0055】
さらに、不正検出部19は、同じI/Fディスクリプタとコードについて、サービス側通信部23のログがあるがクライアント側通信部22のログがあるかどうかも判断している(S22)。そして、サービス側通信部23のログがあるがクライアント側通信部22のログがない場合、不正処理が発生したと判断する(S26)。したがって、クライアント側通信部22を経由せずにプロセス間通信を行おうとする不正な処理を検出することもできる。
【0056】
以上、実施形態を説明したが、開示した技術は上述の実施形態に限定されるものではなく、次の変形例も開示した範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施できる。なお、以下の説明において、それまでに使用した符号と同一番号の符号を有する要素は、特に言及する場合を除き、それ以前の実施形態における同一符号の要素と同一である。また、構成の一部のみを説明している場合、構成の他の部分については先に説明した実施形態を適用できる。
【0057】
<変形例1>
実施形態では、クライアント側通信部22とサービス側通信部23がともに、取得したI/Fディスクリプタとコードをログに残していた。しかし、S22の判断が必要ない場合には、サービス側通信部23のみ、取得したI/Fディスクリプタとコードをログに残してもよい。
【0058】
また、クライアント側通信部22とサービス側通信部23は、同じ情報をログに残す。したがって、クライアント側通信部22のみ、取得したI/Fディスクリプタとコードをログに残してもよい。この場合、S21では、クライアント側通信部22のログがあるかどうかを判断する。
【0059】
<変形例2>
検出対象APIが実行されたことを検出するだけでよく、検出対象APIに処理を要求したアプリケーションを特定する必要がない場合、S30の処理を省略することができる。
【0060】
<変形例3>
不正処理が発生したことを検出した場合の処理は、表示部11への通知に限られない。不正処理が発生したことを検出した場合の処理はサーバにその旨を送信したり、不正処理を要求したアプリケーションとの通信を制限したりする処理であってもよい。
【符号の説明】
【0061】
10:光学情報読み取り装置(情報処理装置) 11:表示部 12:通信部 13:カメラ 14:記憶部 15:不正検出プログラム 16:操作部 17:情報処理部 18:読み取り処理部 19:不正検出部 20:バインダ部 21:プロセス間通信部 22:クライアント側通信部(第1プロセス側通信部) 23:サービス側通信部(第2プロセス側通信部) 24:クライアント側変換部 25:サービス側変換部 S10:取得部 S20:検出部 S30:プログラム特定部