(57)【特許請求の範囲】
【請求項１】
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子群の各識別子に対応するアドレス情報を所定の仕様により関連付けるシンボルテーブル情報への復元が可能であって、前記所定の仕様により各識別子に関連付けられるアドレス情報を偽装した偽シンボルテーブル情報を前記実行可能ファイル用に生成する生成部を備える情報処理装置。
【請求項２】
実行可能ファイルを取得する取得部と、
前記取得部で取得した実行可能ファイルからシンボルテーブル情報を抽出する抽出部と
を備え、
前記生成部は、
前記抽出部で抽出したシンボルテーブル情報から前記偽シンボルテーブル情報を生成する請求項１に記載の情報処理装置。
【請求項３】
前記ソースファイルを取得する取得部と、
前記取得部で取得したソースファイルを実行可能ファイルに変換する変換部と
を備え、
前記生成部は、
前記取得部で取得したソースファイル内の識別子群の各識別子に対応するアドレス情報を所定の仕様により関連付けるシンボルテーブル情報への復元が可能であって、前記所定の仕様により各識別子に関連付けられるアドレス情報を偽装した偽シンボルテーブル情報を前記変換部が変換した実行可能ファイル用に生成する請求項１に記載の情報処理装置。
【請求項４】
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を前記実行可能ファイル用に生成する生成部を備え、
前記生成部は、
前記識別子と前記識別子のメモリアドレスとのリンク関係を改変して偽シンボル情報を生成する情報処理装置。
【請求項５】
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を前記実行可能ファイル用に生成する生成部を備え、
前記生成部は、
前記識別子と前記識別子のメモリアドレスとのリンク関係を削除して偽シンボル情報を生成する情報処理装置。
【請求項６】
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を前記実行可能ファイル用に生成する生成部を備え、
前記生成部は、
前記識別子と前記識別子のデータ型とのリンク関係を改変して偽シンボル情報を生成する情報処理装置。
【請求項７】
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を前記実行可能ファイル用に生成する生成部を備え、
前記生成部は、
前記識別子と前記識別子のデータ型とのリンク関係を削除して偽シンボル情報を生成する情報処理装置。
【請求項８】
前記生成部で生成した偽シンボルテーブル情報を含む実行可能ファイル及び前記偽シンボルテーブル情報を復元する復元用モジュールを出力する出力部を備える請求項１から請求項３のいずれか一項に記載の情報処理装置。
【請求項９】
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子群の各識別子に対応するアドレス情報を所定の仕様により関連付けるシンボルテーブル情報への復元が可能であって、前記所定の仕様により各識別子に関連付けられるアドレス情報を偽装した偽シンボルテーブル情報を含む実行可能ファイルを実行させる実行部と、
偽シンボルテーブル情報をシンボルテーブル情報へ復元する復元用モジュールと
を備える情報処理装置。
【請求項１０】
前記復元用モジュールは、
前記実行可能ファイルが一部実行された後に偽シンボルテーブル情報を復元する請求項９に記載の情報処理装置。
【請求項１１】
前記復元用モジュールは、
前記実行可能ファイルが実行中であって、前記実行可能ファイル内のコードがシンボルテーブル内の所要のシンボルエントリを参照する前に、偽シンボルテーブルのエントリ全部又は一部を前記シンボルテーブルの内容へ復元する請求項９又は請求項１０に記載の情報処理装置。
【請求項１２】
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を含む実行可能ファイルを実行させる実行部と、
偽シンボル情報をシンボル情報へ復元する復元用モジュールと
を備え、
前記復元用モジュールは、
偽シンボル情報をシンボル情報へ復元した後に、前記実行可能ファイル内のコードが前記シンボル情報を参照しない場合、前記シンボル情報から偽シンボル情報を生成する情報処理装置。
【請求項１３】
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を含む実行可能ファイルを実行させる実行部と、
偽シンボル情報をシンボル情報へ復元する復元用モジュールと
を備え、
前記復元用モジュールは、
偽シンボル情報をシンボル情報へ復元した後に、前記実行可能ファイル内のコードが前記シンボル情報を参照しない場合、前記シンボル情報から偽シンボル情報を生成し、
さらに、前記復元用モジュールが偽シンボル情報を生成した後で前記偽シンボル情報が復元されているか否かを判定する判定モジュールを備え、
前記実行部は、
前記偽シンボル情報が復元されている場合、前記実行可能ファイルの実行を停止する情報処理装置。
【請求項１４】
コンピュータに、
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子群の各識別子に対応するアドレス情報を所定の仕様により関連付けるシンボルテーブル情報への復元が可能であって、前記所定の仕様により各識別子に関連付けられるアドレス情報を偽装した偽シンボルテーブル情報を前記実行可能ファイル用に生成する処理を実行させるコンピュータプログラム。
【請求項１５】
コンピュータに、
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子群の各識別子に対応するアドレス情報を所定の仕様により関連付けるシンボルテーブル情報への復元が可能であって、前記所定の仕様により各識別子に関連付けられるアドレス情報を偽装した偽シンボルテーブル情報を含む実行可能ファイルを実行する処理と、
偽シンボルテーブル情報をシンボルテーブル情報へ復元する処理と
を実行させるコンピュータプログラム。
【請求項１６】
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子群の各識別子に対応するアドレス情報を所定の仕様により関連付けるシンボルテーブル情報への復元が可能であって、前記所定の仕様により各識別子に関連付けられるアドレス情報を偽装した偽シンボルテーブル情報を生成部が前記実行可能ファイル用に生成する情報処理方法。
【請求項１７】
実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子群の各識別子に対応するアドレス情報を所定の仕様により関連付けるシンボルテーブル情報への復元が可能であって、前記所定の仕様により各識別子に関連付けられるアドレス情報を偽装した偽シンボルテーブル情報を含む実行可能ファイルを実行部が実行し、
偽シンボルテーブル情報を復元用モジュールがシンボルテーブル情報へ復元する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、コンピュータプログラム及び情報処理方法に関する。
【背景技術】
【０００２】
アプリケーションを攻撃する攻撃者（「クラッカー」ともいう）は、各種ツールを有効活用して、アプリケーションを解析・分析することにより、アプリケーションの改ざん、改変や不正利用などの不正行為を行う。
【０００３】
非特許文献１には、実行コードに対して暗号化又は難読化することにより、クラッキング対策を行うことが記載されている。暗号化は、プログラムが実行されるまで、関数名や変数名などのシンボルや、実行コードを暗号化してクラッカー（攻撃者）からの解析を防ぐ技術である。また、難読化は、人によるシンボル名の可読性を低くする目的で、例えば、ランダムな文字列を用いてシンボル名を変更して、主に人による解析を防ぐ技術である。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】LINE Engineering Blog、“セキュリティエンジニアからみたUnityのこと”、2016.12.22、［令和１年９月２０日検索］、インターネット<URL: https://engineering.linecorp.com/ja/blog/unity-from-a-security-engineer-point-of-view/>
【発明の概要】
【発明が解決しようとする課題】
【０００５】
シンボル情報に対して従来の暗号化などを採用すると、攻撃者が用いる各種ツールが使用できなくなるので、攻撃者は、シンボル情報に何らかの処理（暗号化など）がなされたことに気づくため、シンボル情報に対して、攻撃者の解析・分析の契機を与えてしまうことになる。
【０００６】
本発明は、斯かる事情に鑑みてなされたものであり、攻撃者によるアプリケーションの解析・分析を困難にすることができる情報処理装置、コンピュータプログラム及び情報処理方法を明らかにする。
【課題を解決するための手段】
【０００７】
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、情報処理装置は、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を前記実行可能ファイル用に生成する生成部を備える。
【発明の効果】
【０００８】
本発明によれば、攻撃者によるアプリケーションの解析・分析を困難にすることができる。
【図面の簡単な説明】
【０００９】
【図１】本実施の形態の情報処理装置の構成の第１例を示すブロック図である。
【図２】シンボル情報の一例を示す模式図である。
【図３】偽シンボル情報の生成方法の第１例を示す模式図である。
【図４】偽シンボル情報の生成方法の第２例を示す模式図である。
【図５】本実施の形態の情報処理装置の構成の第２例を示すブロック図である。
【図６】シンボル情報を改変しない場合のソースファイルから実行可能ファイルへの変換の様子の一例を示す模式図である。
【図７】シンボル情報を改変する場合のソースファイルから実行可能ファイルへの変換の様子の一例を示す模式図である。
【図８】本実施の形態の情報処理装置の構成の第３例を示すブロック図である。
【図９】偽シンボル情報の復元処理の第１例を示す模式図である。
【図１０】偽シンボル情報の復元処理の第２例を示す模式図である。
【図１１】情報処理装置による処理手順の一例を示すフローチャートである。
【図１２】情報処理装置による処理手順の一例を示すフローチャートである。
【図１３】情報処理装置による処理手順の一例を示すフローチャートである。
【図１４】本実施の形態の情報処理装置の構成の他の例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態を説明する。図１は本実施の形態の情報処理装置１００の構成の第１例を示すブロック図である。情報処理装置１００は、装置全体を制御する制御部１０１、取得部１０２、シンボル情報抽出部１０３、偽シンボル情報生成部１０４、出力部１０５、記憶部１０６、復元用モジュール生成部１０７を備える。情報処理装置１００は、例えば、サーバ等で構成することができ、通信ネットワークを介して、ユーザ端末１０との間で情報の授受を行うことができる。情報処理装置１００は、ユーザ端末１０から、ユーザのアプリケーション（プログラム）の実行可能ファイル（バイナリファイル）を取得すると、所定の処理を行うことによって、ユーザ端末１０に対して、偽シンボル情報を含む実行可能ファイルを出力することができる。以下、情報処理装置１００の詳細について説明する。
【００１１】
制御部１０１は、ＣＰＵ、ＲＯＭ、ＲＡＭなどで構成することができる。記憶部１０６は、ＲＯＭ、フラッシュメモリ、ＨＤＤなどの磁気記憶装置などで構成することができ、所要の情報を記憶することができる。
【００１２】
取得部１０２は、ユーザ端末１０から、ユーザのアプリケーションの実行可能ファイルを取得することができる。なお、実行可能ファイルの取得先は、ユーザ端末１０に限定されない。
【００１３】
シンボル情報抽出部１０３は、抽出部としての機能を有し、取得部１０２で取得した実行可能ファイルからシンボル情報を抽出する。
【００１４】
図２はシンボル情報の一例を示す模式図である。シンボル情報は、シンボルテーブルとも称する。シンボル情報は、コンピュータプログラムで使われるデータ構造であり、コンピュータプログラムのソースコード内の各識別子（名前）と、それぞれの内容（データ型、メモリ上の配置位置などの情報を含む）とのリンク関係を定めるテーブルのようなものである。すなわち、シンボル情報は、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と当該識別子の内容とを所定の仕様により関連付ける情報である。識別子は、シンボルとも称し、例えば、変数名や関数名などの名前である。実行可能ファイルに変換する際の入力情報とするソースファイルは、ユーザがソースファイルを作成する際に命名した識別子が変更されることなく記載されているソースファイルだけでなく、ユーザが命名した識別子を変更できるツール（例えば、Ｏｂｆａｓｃａｔｏｒなど）によって、変更された識別子が記載されているソースファイルも含む意味である。識別子の内容は、変数や関数のメモリアドレス（メモリ上の位置）、データ型などを含む。所定の仕様とは、アプリケーション（プログラム）用のＯＳ（オペレーティングシステム）や開発エンジン（例えば、Ｕｎｉｔｙ（登録商標）など）で定められているシンボル情報のフォーマットや約束事を意味する。図２に示すように、シンボルの名前「T_BIT」は、データ型が「ａ」であり、メモリアドレスが「００００００２０」であるというリンク関係が定められている。他のシンボルについても同様である。なお、図２に示すシンボル情報は、一例であって、シンボル情報は、図２の例に限定されない。例えば、リリースバージョンのプログラムに比べて、デバッグバージョンのシンボル情報の方が情報量は多い。これは、デバッグ情報を含むからである。
【００１５】
偽シンボル情報は、シンボル情報の所定の仕様に従いつつシンボル情報を攪乱したものとすることができる。ここで、攪乱は、改変とも称し、暗号化や難読化（所定の仕様を充足しない処理）とは異なる処理であることを意味する。すなわち偽シンボル情報は、所定の仕様（ＯＳや開発エンジン（例えば、Ｕｎｉｔｙなど）が定める約束事）に従っている事を特徴としている。なお、本明細書では、シンボル情報を、「元のシンボル情報」とも称し、偽シンボル情報と区別する。偽シンボル情報は、シンボル情報を改変したものである。
【００１６】
偽シンボル情報生成部１０４は、生成部としての機能を有し、所定の仕様により関連付けられた偽シンボル情報をソースファイルの実行可能ファイル用に生成する。所定の仕様は、元のシンボル情報の所定の仕様と同じ仕様に従っているという意味である。より具体的には、偽シンボル情報生成部１０４は、シンボル情報抽出部１０３で抽出したシンボル情報から、識別子と識別子の内容とが、抽出したシンボル情報の仕様と同じ仕様により関連付けられた偽シンボル情報を生成することができる。
【００１７】
偽シンボル情報がシンボル情報と同じ所定の仕様に従って生成されているので、攻撃者から見ると、実行可能ファイル用に生成された偽シンボル情報は、本来のシンボル情報と認識するしか術がない。なぜならシンボル情報を攻撃者から守るために暗号化や難読化したものではない。すなわち、攻撃者が使用する各種ツール（例えば、IL2CppDumperなど）の使用において、何ら問題を発生させないので、攻撃者に対して、偽シンボル情報を正しいシンボル情報であると誤認識させることができる。これにより、攻撃者は各種ツールを駆使して多大な労力やコストをかけても、偽シンボル情報は、元のシンボル情報が攪乱されているので、アプリケーションの解析・分析を困難にすることができる。
【００１８】
また、ユーザ端末１０から実行可能ファイルを取得するだけで（ユーザ端末１０から見ると、実行可能ファイルを情報処理装置１００にアップロードするだけで）、実行可能ファイル用の偽シンボル情報を生成することができ、攻撃者の、アプリケーションに対する解析・分析を困難にすることができる。すなわち、ユーザの実行可能ファイル（実行コード）に対して偽シンボル情報を生成するので、ユーザの実行コードに含まれるシンボル情報を攪乱することができ、シンボル情報に対して、攻撃者の解析・分析の契機を与えることなく、アプリケーションの解析・分析を困難にすることができる。
【００１９】
次に、偽シンボル情報の生成方法について説明する。
【００２０】
図３は偽シンボル情報の生成方法の第１例を示す模式図である。図３に示すように、元のシンボル情報においては、アドレス：００００００２０とシンボルの名前「T_BIT」とが関連付けられ（リンク関係にあり）、アドレス：００００００８０とシンボルの名前「I_BIT」とが関係付けられているのに対して、偽シンボル情報においては、アドレス：００００００２０とシンボルの名前「I_BIT」とが関連付けられ、アドレス：００００００８０とシンボルの名前「T_BIT」とが関係付けられている。
【００２１】
このように、偽シンボル情報生成部１０４は、識別子と当該識別子のメモリアドレスとのリンク関係を改変して偽シンボル情報を生成することができる。
【００２２】
偽シンボル情報は、元のシンボル情報と同じ所定の仕様に従っており、攻撃者が偽シンボル情報を解析・分析すると、シンボル「I_BIT」の中身はアドレス：００００００２０にあり、シンボル「T_BIT」の中身はアドレス：００００００８０にあると認識する。しかし、元のシンボル情報に基けば、シンボル「T_BIT」の中身はアドレス：００００００２０にあり、シンボル「I_BIT」の中身はアドレス：００００００８０にあるので、偽シンボル情報によってリンク関係が攪乱されており、攻撃者の、アプリケーションに対する解析・分析を困難にすることができる。
【００２３】
また、図３に示すように、元のシンボル情報においては、アドレス：２００００００４とシンボルのデータ型「t」とが関連付けられ、アドレス：２０００００３０とシンボルのデータ型「T」とが関係付けられているのに対して、偽シンボル情報においては、アドレス：２００００００４とシンボルのデータ型「T」とが関連付けられ、アドレス：２０００００３０とシンボルのデータ型「t」とが関係付けられている。
【００２４】
このように、偽シンボル情報生成部１０４は、識別子と当該識別子のデータ型とのリンク関係を改変して偽シンボル情報を生成することができる。
【００２５】
偽シンボル情報は、元のシンボル情報と同じ所定の仕様に従っており、攻撃者が偽シンボル情報を解析・分析すると、シンボル「irqvec」のデータ型は「Ｔ」であり、シンボル「AT91F_US3_CfgPIO_useB」のデータ型は「ｔ」であると認識する。しかし、元のシンボル情報に基けば、シンボル「irqvec」のデータ型は「ｔ」であり、シンボル「AT91F_US3_CfgPIO_useB」のデータ型は「Ｔ」であるので、偽シンボル情報によってリンク関係が攪乱されており、攻撃者の、アプリケーションに対する解析・分析を困難にすることができる。なお、シンボル名の桁数（サイズ）が同じシンボルだけに対して並び替えることもできる。同じサイズであれば、メモリ上の位置を変えても先頭のアドレスは変わらないので、他の情報を移動させることなく、入れ替えが可能となる。
【００２６】
図４は偽シンボル情報の生成方法の第２例を示す模式図である。図４に示すように、元のシンボル情報においては、シンボル「I_BIT」とアドレス：００００００８０及びデータ型「ａ」とが関連付けられているのに対し、偽シンボル情報においては、シンボル「I_BIT」のエントリーが除去されている。また、元のシンボル情報においては、シンボル「InitReset」とアドレス：２００００００ｃ及びデータ型「ｔ」とが関連付けられているのに対し、偽シンボル情報においては、シンボル「InitReset」のエントリーが削除されている。削除されたエントリーは、例えば、堅牢化（実行コードの暗号化や難読化、デバッガのアタッチ阻止、定数データの暗号化や隠蔽などの手法を用いて、クラッカーから実行アプリケーションの解析を防御・困難にする仕組みの一つ）して、堅牢化前のアプリケーションと比較して、拡張した実行コード領域や拡張した定数領域などに保存することができ、復元する際に利用できる。
【００２７】
このように、偽シンボル情報生成部１０４は、識別子と当該識別子のメモリアドレス（又は、データ型）とのリンク関係の一部を削除して偽シンボル情報を生成することができる。
【００２８】
偽シンボル情報は、元のシンボル情報と同じ所定の仕様に従っており、攻撃者が偽シンボル情報を解析・分析すると、シンボルとアドレス（又はデータ型）とのリンク関係が削除されているので、攻撃者は、削除されたシンボルとアドレス（又はデータ型）とのリンク関係が存在することに気づかない。すなわち、偽シンボル情報によってリンク関係が攪乱されており、攻撃者の、アプリケーションに対する解析・分析を困難にすることができる。
【００２９】
復元用モジュール生成部１０７は、偽シンボル情報生成部１０４が元のシンボル情報を改変して偽シンボル情報を生成するアルゴリズムを反映した復元用のアルゴリズムを有する復元用モジュールを生成することができる。
【００３０】
出力部１０５は、偽シンボル情報生成部１０４で生成した偽シンボル情報を含む実行可能ファイル及び偽シンボル情報を復元する復元用モジュールを、例えば、ユーザ端末１０に対して出力することができる。これにより、ユーザ側では、アプリケーションを実行するための端末装置において、アプリケーションを実行する際に（例えば、アプリケーションを実行する前に、あるいは実行中であって所要のシンボル情報を参照する前に）、復元用モジュールによって偽シンボル情報を元のシンボル情報に復元できるので、アプリケーションの耐タンパ性を高めつつ、アプリケーションを実行することができる。なお、情報処理装置１００がユーザ端末１０であってもよい。すなわち、ユーザ端末１０に情報処理装置１００の各機能を組み込むようにしてもよい。
【００３１】
図５は本実施の形態の情報処理装置１２０の構成の第２例を示すブロック図である。情報処理装置１２０は、装置全体を制御する制御部１０１、取得部１２２、変換部１２３、偽シンボル情報生成部１２４、出力部１０５、記憶部１０６、復元用モジュール生成部１０７を備える。図１に示す情報処理装置１００と同様の箇所は同一符号を付して説明を省略する。情報処理装置１２０は、例えば、コンパイラやリンカを有し、ユーザのソースファイルを実行可能ファイルに変換する変換ツールとすることができる。なお、情報処理装置１２０がユーザ端末１０であってもよい。すなわち、ユーザ端末１０に情報処理装置１２０の各機能を組み込むようにしてもよい。
【００３２】
取得部１２２は、ソースファイルを取得する。
【００３３】
変換部１２３は、取得部１２２で取得したソースファイルを実行可能ファイルに変換する。変換部１２３は、例えば、コンパイラ及びリンカで構成することができる。コンパイラによりソースファイルをオブジェクトファイルに変換し、リンカにより他のオブジェクトファイルやライブラリとリンクさせることにより、実行可能ファイル（バイナリファイル）に変換することができる。
【００３４】
偽シンボル情報生成部１２４は、ソースファイル内の識別子と当該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、当該所定の仕様により関連付けられた偽シンボル情報を変換部１２３が変換した実行可能ファイル用に生成することができる。
【００３５】
図６はシンボル情報を改変しない場合のソースファイルから実行可能ファイルへの変換の様子の一例を示す模式図である。図６に示すように、ソースファイルは、code1.cppとcode2.cppの２つあるとし、ソースファイルcode1.cppでは、関数AddFunc（足し算の関数）が定義され、ソースファイルcode2.cppでは、関数SubFunc（引き算の関数）が定義されている。コンパイラによってソースファイルcode1.cppはオブジェクトファイルcode1.objに変換される。オブジェクトファイルcode1.objには、シンボル「AddFunc」とアドレス：０ｘ００３４とが関連付けられている。同様に、コンパイラによってソースファイルcode2.cppはオブジェクトファイルcode2.objに変換される。オブジェクトファイルcode2.objには、シンボル「SubFunc」とアドレス：０ｘ００３４とが関連付けられている。
【００３６】
次に、リンカによって、２つのオブジェクトファイルcode1.obj、code2.objがリンクされて実行可能ファイル（バイナリファイル）に変換される。このときに、シンボル「AddFunc」とアドレス：０ｘ０１００とが関連付けられ、シンボル「SubFunc」とアドレス：０ｘ０１０４とが関連付けられたシンボル情報が生成される。
【００３７】
図７はシンボル情報を改変する場合のソースファイルから実行可能ファイルへの変換の様子の一例を示す模式図である。コンパイラによる処理は、図６の場合と同様であるので説明は省略する。
【００３８】
図７に示すように、リンカによって、２つのオブジェクトファイルcode1.obj、code2.objがリンクされて実行可能ファイル（バイナリファイル）に変換される。このときに、偽シンボル情報生成部１２４は、例えば、シンボル「AddFunc」とアドレス：０ｘ０１０４とを関連付け、シンボル「SubFunc」とアドレス：０ｘ０１００とを関連付けることにより、元のシンボル情報を改変して偽シンボル情報を生成する。
【００３９】
これにより、コンパイラやリンカを用いてソースファイルから実行可能ファイルに変換する際に、偽シンボル情報を生成することができ、攻撃者の、アプリケーションに対する解析・分析を困難にすることができる。
【００４０】
図８は本実施の形態の情報処理装置１４０の構成の第３例を示すブロック図である。情報処理装置１４０は、ＣＰＵ、ＲＯＭ及びＲＡＭなどを含むハードウェア部１４１、ＯＳ（オペレーティングシステム）や開発エンジン（例えば、Ｕｎｉｔｙなど）などで構成される実行部１４２を備える。実行部１４２による実行環境では、ユーザプログラム１４３（アプリケーション）、復元用モジュール１４４、チェッカモジュール（判定モジュール）１４５、ユーザインタフェース機能を実行するインタフェースプログラム１４６などを実行できる。
【００４１】
実行部１４２は、ソースファイル内の識別子と当該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、当該所定の仕様により関連付けられた偽シンボル情報を含む実行可能ファイルを実行させることができる。
【００４２】
復元用モジュール１４４は、偽シンボル情報をシンボル情報へ復元することができる。これにより、ユーザプログラム１４３を実行することができる。なお、図８では、復元用モジュール１４４とチェッカモジュール１４５とは、別個のモジュールのように図示しているが、これに限定されるものではなく、チェッカモジュール１４５が復元用モジュール１４４に内包されている（組み込まれている）構成であってもよい。
【００４３】
次に、偽シンボル情報の復元について説明する。
【００４４】
図９は偽シンボル情報の復元処理の第１例を示す模式図である。図９はユーザのアプリケーションの実行の流れを模式的に図示している。モジュール１、２、３は、実行部１４２内のモジュールであり、例えば、モジュール１、２は、ユーザのソースコード（具体的には実行可能ファイル）が実行される前の処理（例えば、ユーザの実行コードを実行させる前のＯＳ、開発エンジン、プログラム言語などの処理系の各種初期化処理など）を行うプログラムである。モジュール３は、ユーザのソースコードから生成されたユーザの実行コードが終了した後の種々の終了処理を行うプログラムである。図９に示すように、モジュール２の実行途中で復元用モジュール１４４を呼び出すことにより、ユーザの実行可能ファイル用の偽シンボル情報を元のシンボル情報に復元することができる。
【００４５】
すなわち、復元用モジュール１４４は、実行可能ファイル（具体的には、ユーザの実行コード）が実行される前に偽シンボル情報を復元することができる。上述のように、アプリケーションを起動すると、アプリケーションの実行可能ファイルが実行される前に、ＯＳや開発エンジンが種々の初期化処理を行う。このような初期化処理の途中で復元用モジュールを読み出して、偽シンボル情報を元のシンボル情報に復元することにより、実行可能ファイルは、正しいシンボル情報を参照することができる。
【００４６】
図１０は偽シンボル情報の復元処理の第２例を示す模式図である。図１０では、便宜上、ユーザのソースコードの部分だけを図示している。ユーザのソースコードは、例えば、サブコードＡ、チェッカモジュール１４５の呼び出し、サブコードＢ、チェッカモジュール１４５の呼び出しの順番で実行されるとする。なお、サブコードＡとチェッカモジュール１４５の呼び出し、あるいは、サブコードＢとチェッカモジュール１４５の呼び出しを、ループ状に繰り返し実行するようにしてもよい。
【００４７】
図１０に示すように、サブコードＡにおいて、シンボル情報Ａを参照する前に、復元用モジュールを呼び出して偽シンボル情報Ａから元のシンボル情報Ａを復元することができる。また、サブコードＡにおいて、シンボル情報Ａを参照する必要がなくなった場合、元のシンボル情報Ａを改変して偽シンボル情報を生成することができる。サブコードＡの実行が終了した後に、チェッカモジュールを呼び出し、元のシンボル情報Ａが復元されているか否かを判定することができる。ここで、元のシンボル情報Ａが復元されていない場合には、攻撃者による攻撃はないと判定できる。一方、元のシンボル情報Ａが復元されている場合には、攻撃者によって不正に復元されたものであるとして、ユーザのアプリケーションを停止させることができる。サブコードＢについても同様である。
【００４８】
すなわち、復元用モジュール１４４は、実行可能ファイルが一部実行された後に偽シンボル情報を復元することができる。実行可能ファイルが一部実行され、実行可能ファイル内のコードがシンボル情報を参照する際に、参照前に偽シンボル情報を復元することより、実行可能ファイル内の処理を続けることができる。より具体的には、復元用モジュール１４４は、実行可能ファイルが実行中であって、実行可能ファイル内のコードが所要のシンボル情報を参照する前に、偽シンボル情報の全部又は一部をシンボル情報へ復元することができる。例えば、コードＡがシンボル情報Ａを参照するとし、コードＡの後に実行されるコードＢがシンボル情報Ｂを参照するとする。この場合、コードＡがシンボル情報Ａを参照する前に復元用モジュールを読み出して、偽シンボル情報から元のシンボル情報Ａに復元する。なお、この場合、シンボル情報Ｂは改変されたままとすることができる。次に、コードＢがシンボル情報Ｂを参照する前に復元用モジュールを読み出して、偽シンボル情報から元のシンボル情報Ｂに復元する。
【００４９】
このように、元のシンボル情報への復元を一度に実施しないことにより、偽シンボル情報のうち、必要最小限の情報だけを復元するので、アプリケーションに対する解析・分析を一層困難にすることができる。
【００５０】
また、復元用モジュール１４４は、偽シンボル情報をシンボル情報へ復元した後に、実行可能ファイル内のコードが当該シンボル情報を参照しない場合、当該シンボル情報から偽シンボル情報を生成することができる。コードが、復元された元のシンボル情報を参照した後、当該コードが当該元のシンボル情報を使用しない場合には、当該元のシンボル情報を改変して偽シンボル情報に戻す。これにより、復元された元のシンボル情報は、再度偽シンボル情報に改変されるので、アプリケーションに対する解析・分析を一層困難にすることができる。
【００５１】
また、チェッカモジュール１４５は、復元用モジュール１４４が偽シンボル情報を生成した後で当該偽シンボル情報が復元されているか否かを判定する。実行部１４２は、当該偽シンボル情報が復元されている場合、実行可能ファイルの実行を停止することができる。アプリケーションが停止するので、攻撃者は、アプリケーション停止の原因を探索しなければならず、例えば、チェッカモジュール１４５の処理の発見や除去が必要となり、攻撃者の、アプリケーションに対する解析・分析を一層困難にすることができる。なお、「実行部１４２が実行可能ファイルの実行を停止する」とは、文字通り、実行部１４２が実行可能ファイルの実行を停止する場合の他、チェッカモジュール１４５に書かれているコード、又は復元用モジュール１４４に書かれているコードが実行部１４２の支援を受けながら実行可能ファイルの実行を停止する場合、あるいは、チェッカモジュール１４５に書かれているコード、又は復元用モジュール１４４に書かれているコードを実行部１４２が解釈して実行可能ファイルの実行を停止する場合も含まれる。
【００５２】
図１１は情報処理装置１００による処理手順の一例を示すフローチャートである。以下では、便宜上、処理の主体を制御部１０１として説明する。制御部１０１は、実行可能ファイルを取得し（Ｓ１１）、取得した実行可能ファイルからシンボル情報を抽出する（Ｓ１２）。制御部１０１は、シンボル情報を改変して偽シンボル情報を生成するとともに復元用モジュールを生成する（Ｓ１３）。
【００５３】
制御部１０１は、偽シンボル情報及び復元用モジュールを生成後、実行可能ファイルを生成し（Ｓ１４）、処理を終了する。
【００５４】
図１２は情報処理装置１２０による処理手順の一例を示すフローチャートである。制御部１０１は、ソースファイルを取得し（Ｓ２１）、コンパイラによってオブジェクトファイルを生成する（Ｓ２２）。
【００５５】
制御部１０１は、シンボル情報を改変して偽シンボル情報を生成するとともに復元用モジュールを生成する（Ｓ２３）。この場合、制御部１０１は、オブジェクファイル内のシンボル情報のリンク関係に基づいて当該リンク関係を改変して偽シンボル情報を生成することができる。
【００５６】
制御部１０１は、偽シンボル情報及び復元用モジュールを生成後、リンカによって実行可能ファイルを生成し（Ｓ２４）、処理を終了する。
【００５７】
図１３は情報処理装置１４０による処理手順の一例を示すフローチャートである。以下では、便宜上、処理の主体を実行部１４２として説明する。実行部１４２は、ユーザアプリを起動し（Ｓ３１）、偽シンボル情報の全部又は一部を復元する（Ｓ３２）。なお、偽シンボル情報の全部を復元する場合、後述のステップＳ３４からＳ３５の処理は実施する必要はない。
【００５８】
実行部１４２は、ユーザのサブコードを実行し（Ｓ３３）、復元用モジュールの呼び出しの有無を判定する（Ｓ３４）。復元用モジュールの呼び出しがない場合（Ｓ３４でＮＯ）、実行部１４２は、後述のステップＳ３６の処理を行う。
【００５９】
復元用モジュールの呼び出しがある場合（Ｓ３４でＹＥＳ）、実行部１４２は、偽シンボル情報を復元し（Ｓ３５）、サブコードを終了するか否かを判定する（Ｓ３６）。サブコードを終了しない場合（Ｓ３６でＮＯ）、実行部１４２は、ステップＳ３６の処理を続け、サブコードを終了する場合（Ｓ３６でＹＥＳ）、復元したシンボル情報を偽シンボル情報に改変する（Ｓ３７）。
【００６０】
実行部１４２は、チェッカモジュールの呼び出しの有無を判定し（Ｓ３８）、チェッカモジュールの呼び出しがあった場合（Ｓ３８でＹＥＳ）、偽シンボル情報が復元されているか否かを判定する（Ｓ３９）。偽シンボル情報が復元されている場合（Ｓ３９でＹＥＳ）、実行部１４２は、ユーザアプリを停止し（Ｓ４０）、処理を終了する。
【００６１】
チェッカモジュールの呼び出しがない場合（Ｓ３８でＮＯ）、あるいは、偽シンボル情報が復元されていない場合（Ｓ３９でＮＯ）、実行部１４２は、ユーザアプリを終了するか否かを判定し（Ｓ４１）、ユーザアプリを終了しない場合（Ｓ４１でＮＯ）、ステップＳ３３以降の処理を続ける。ユーザアプリを終了する場合（Ｓ４１でＹＥＳ）、実行部１４２は、処理を終了する。
【００６２】
図１４は本実施の形態の情報処理装置１６０の構成の他の例を示すブロック図である。情報処理装置１００、１２０、１４０は、情報処理装置１６０のように構成することもできる。図１４において、符号１６０は、コンピュータである。コンピュータ１６０は、制御部１６１、入力部１６６、出力部１６７、外部Ｉ／Ｆ（インタフェース）部１６８などを備える。制御部１６１は、ＣＰＵ１６２、ＲＯＭ１６３、ＲＡＭ１６４、Ｉ／Ｆ（インタフェース）１６５などを備える。
【００６３】
入力部１６６は、実行可能ファイルやソースファイルを取得することができる。出力部１６７は、偽シンボル情報が生成された実行可能ファイル、復元用モジュールを出力することができる。Ｉ／Ｆ１６５は、制御部１６１と、入力部１６６、出力部１６７及び外部Ｉ／Ｆ部１６８それぞれとの間のインタフェース機能を有する。
【００６４】
外部Ｉ／Ｆ部１６８は、ＤＶＤ読取装置などの記録媒体読取装置であり、コンピュータプログラムを記録した記録媒体Ｍ（例えば、ＤＶＤなどのメディア）からコンピュータプログラム（例えば、図１１、図１２、図１３に示す処理手順など）を読み取ることが可能である。
【００６５】
なお、図示していないが、記録媒体Ｍに記録されたコンピュータプログラムは、持ち運びが自由なメディアに記録されたものに限定されるものではなく、インターネット又は他の通信回線を通じて伝送されるコンピュータプログラムも含めることができる。
【００６６】
本実施の形態によれば、高機能デバッガなどのツールを使用した動的解析（プログラムの実行時にメモリ上で情報を解析する手法）に必要となるシンボル情報を正しい情報であるとツールに誤認識させることができるため、攻撃者は間違った（改変された）シンボル情報をもとに、解析・分析を進めることになる。このため、攻撃者の目的を達成することを難しくすることができる。攻撃者が改変されたシンボル情報（偽シンボル情報）を正しいシンボル情報として認識するのは、偽シンボル情報が、シンボル情報のフォーマットや約束事などの所定の仕様に基づく情報であるからである。偽シンボル情報に基づく、メモリ位置に正しい情報が存在しないので、攻撃者の目的を達成することを難しくすることができる。また、攻撃者が多大な労力やコストをかけても元のシンボル情報を復元できない限りは、アプリケーションの効果的な解析・分析ができない。
【００６７】
本実施の形態の情報処理装置は、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を前記実行可能ファイル用に生成する生成部を備える。
【００６８】
本実施の形態の情報処理装置は、プロセッサを備え、前記プロセッサは、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を前記実行可能ファイル用に生成する。
【００６９】
本実施の形態のコンピュータプログラムは、コンピュータに、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を前記実行可能ファイル用に生成する処理を実行させる。
【００７０】
本実施の形態の情報処理方法は、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を前記実行可能ファイル用に生成する。
【００７１】
生成部は、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と当該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、当該所定の仕様により関連付けられた偽シンボル情報を実行可能ファイル用に生成する。シンボル情報は、シンボルテーブルとも称する。識別子は、シンボルとも称し、例えば、変数名や関数名などの名前である。実行可能ファイルに変換する際の入力情報とするソースファイルは、ユーザがソースファイルを作成する際に命名した識別子が変更されることなく記載されているソースファイルだけでなく、ユーザが命名した識別子を変更できるツール（例えば、Ｏｂｆａｓｃａｔｏｒなど）によって、変更された識別子が記載されているソースファイルも含む意味である。識別子の内容は、変数や関数のメモリアドレス（メモリ上の位置）、型などを含む。所定の仕様とは、アプリケーション（プログラム）用のＯＳ（オペレーティングシステム）や開発エンジン（例えば、Ｕｎｉｔｙなど）で定められているシンボル情報のフォーマットや約束事を意味する。偽シンボル情報は、シンボル情報の所定の仕様に従いつつシンボル情報を攪乱したものとすることができる。ここで、攪乱は、改変とも称し、暗号化や難読化（所定の仕様を充足しない処理）とは異なる処理であることを意味する。実行可能ファイルは、例えば、ユーザのアプリケーションの実行可能ファイルとすることができる。
【００７２】
偽シンボル情報がシンボル情報と同じ所定の仕様に従って生成されているので、攻撃者から見ると、実行可能ファイル用に生成された偽シンボル情報は、本来のシンボル情報と認識するしか術がない。なぜならシンボル情報を攻撃者から守るために暗号化や難読化したものではない。すなわち、攻撃者が使用する各種ツール（例えば、IL2CppDumperなど）の使用において、何ら問題を発生させないので、攻撃者に対して、偽シンボル情報を正しいシンボル情報であると誤認識させることができる。これにより、攻撃者は各種ツールを駆使して多大な労力やコストをかけても、偽シンボル情報は、元のシンボル情報が攪乱されているので、アプリケーションの解析・分析を困難にすることができる。
【００７３】
本実施の形態の情報処理装置は、実行可能ファイルを取得する取得部と、前記取得部で取得した実行可能ファイルからシンボル情報を抽出する抽出部とを備え、前記生成部は、前記抽出部で抽出したシンボル情報から前記所定の仕様により関連付けられた偽シンボル情報を生成する。
【００７４】
取得部は、実行可能ファイルを取得し、抽出部は、取得した実行可能ファイルからシンボル情報を抽出する。生成部は、抽出したシンボル情報から、識別子と識別子の内容とが所定の仕様により関連付けられた偽シンボル情報を生成する。
【００７５】
これにより、実行可能ファイルを取得するだけで、取得した実行可能ファイル用の偽シンボル情報を生成することができ、攻撃者の、アプリケーションに対する解析・分析を困難にすることができる。
【００７６】
本実施の形態の情報処理装置は、前記ソースファイルを取得する取得部と、前記取得部で取得したソースファイルを実行可能ファイルに変換する変換部とを備え、前記生成部は、前記取得部で取得したソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を前記変換部が変換した実行可能ファイル用に生成する。
【００７７】
取得部は、実行可能ファイルに変換する際の入力情報とするソースファイルを取得する。変換部は、取得したソースファイルを実行可能ファイルに変換する。変換部は、例えば、コンパイラ及びリンカで構成することができる。コンパイラによりソースファイルをオブジェクトファイルに変換し、リンカにより他のオブジェクトファイルやライブラリとリンクさせることにより、実行可能ファイル（バイナリファイル）に変換することができる。
【００７８】
生成部は、ソースファイル内の識別子と当該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、当該所定の仕様により関連付けられた偽シンボル情報を変換部が変換した実行可能ファイル用に生成する。
【００７９】
これにより、コンパイラやリンカを用いてソースファイルから実行可能ファイルに変換する際に、偽シンボル情報を生成することができ、攻撃者の、アプリケーションに対する解析・分析を困難にすることができる。
【００８０】
本実施の形態の情報処理装置において、前記生成部は、前記識別子と該識別子のメモリアドレスとのリンク関係を改変して偽シンボル情報を生成する。
【００８１】
生成部は、識別子と当該識別子のメモリアドレスとのリンク関係を改変して偽シンボル情報を生成する。例えば、元のシンボル情報のメモリアドレスとシンボルとのリンク関係を、アドレス：００００００２０−シンボル：Ａ、…、アドレス：００００００８０−シンボル：Ｂ、…とすると、偽シンボル情報として、例えば、アドレス：００００００２０−シンボル：Ｂ、…、アドレス：００００００８０−シンボル：Ａ、…のように改変することができる。
【００８２】
偽シンボル情報は、元のシンボル情報と同じ所定の仕様に従っており、攻撃者が偽シンボル情報を解析・分析すると、シンボルＡの中身はアドレス：００００００８０にあり、シンボルＢの中身はアドレス：００００００２０にあると認識する。しかし、元のシンボル情報に基けば、シンボルＡの中身はアドレス：００００００２０にあり、シンボルＢの中身はアドレス：００００００８０にあるので、偽シンボル情報によってリンク関係が攪乱されており、攻撃者の、アプリケーションに対する解析・分析を困難にすることができる。
【００８３】
本実施の形態の情報処理装置において、前記生成部は、前記識別子と該識別子のメモリアドレスとのリンク関係の一部を削除して偽シンボル情報を生成する。
【００８４】
生成部は、識別子と当該識別子のメモリアドレスとのリンク関係の一部を削除して偽シンボル情報を生成する。例えば、例えば、元のシンボル情報のメモリアドレスとシンボルとのリンク関係を、アドレス：００００００２０−シンボル：Ａ、…、アドレス：００００００８０−シンボル：Ｂ、…とすると、例えば、アドレス：００００００２０−シンボル：Ａのリンク関係をシンボル情報から削除して偽シンボル情報を生成する。
【００８５】
偽シンボル情報は、元のシンボル情報と同じ所定の仕様に従っており、攻撃者が偽シンボル情報を解析・分析すると、シンボルＡとアドレスとのリンク関係が削除されているので、攻撃者は、シンボルＡとアドレスとのリンク関係が存在することに気づかない。すなわち、偽シンボル情報によってリンク関係が攪乱されており、攻撃者の、アプリケーションに対する解析・分析を困難にすることができる。
【００８６】
本実施の形態の情報処理装置は、前記生成部で生成した偽シンボル情報を含む実行可能ファイル及び前記偽シンボル情報を復元する復元用モジュールを出力する出力部を備える。
【００８７】
出力部は、生成部で生成した偽シンボル情報を含む実行可能ファイル及び偽シンボル情報を復元する復元用モジュールを出力する。これにより、アプリケーションを実行する際に（例えば、アプリケーションを実行する前に、あるいは実行中であって所要のシンボル情報を参照する前に）、復元用モジュールによって偽シンボル情報を元のシンボル情報に復元できるので、アプリケーションを実行することができる。
【００８８】
本実施の形態の情報処理装置は、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を含む実行可能ファイルを実行させる実行部と、偽シンボル情報をシンボル情報へ復元する復元用モジュールとを備える。
【００８９】
本実施の形態の情報処理装置は、プロセッサを備え、前記プロセッサは、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を含む実行可能ファイルを実行させ、偽シンボル情報をシンボル情報へ復元する。
【００９０】
本実施の形態のコンピュータプログラムは、コンピュータに、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を含む実行可能ファイルを実行する処理と、偽シンボル情報をシンボル情報へ復元する処理とを実行させる。
【００９１】
本実施の形態の情報処理方法は、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、前記所定の仕様により関連付けられた偽シンボル情報を含む実行可能ファイルを実行させ、偽シンボル情報をシンボル情報へ復元する。
【００９２】
実行部は、実行可能ファイルに変換する際の入力情報とするソースファイル内の識別子と当該識別子の内容とを所定の仕様により関連付けるシンボル情報への復元が可能であって、当該所定の仕様により関連付けられた偽シンボル情報を含む実行可能ファイルを実行させる。実行部は、アプリケーションを実行させるためのＯＳ（オペレーティングシステム）や開発エンジン（例えば、Ｕｎｉｔｙなど）とすることができる。
【００９３】
復元用モジュールは、偽シンボル情報をシンボル情報へ復元することができる。これにより、アプリケーションを実行することができる。
【００９４】
本実施の形態の情報処理装置において、前記復元用モジュールは、前記実行可能ファイルが一部実行された後に偽シンボル情報を復元する。
【００９５】
復元用モジュールは、実行可能ファイルが一部実行された後に偽シンボル情報を復元する。実行可能ファイルが一部実行され、実行可能ファイル内のコードがシンボル情報を参照する際に、参照前に偽シンボル情報を復元することより、実行可能ファイル内の処理を続けることができる。また、アプリケーションを起動すると、アプリケーションの実行可能ファイルが実行される前に、ＯＳや開発エンジンが種々の初期化処理を行う。このような初期化処理の途中で復元用モジュールを読み出して、偽シンボル情報を元のシンボル情報に復元してもよい。これにより、実行可能ファイルは、シンボル情報を参照することができる。
【００９６】
本実施の形態の情報処理装置において、前記復元用モジュールは、前記実行可能ファイルが実行中であって、前記実行可能ファイル内のコードが所要のシンボル情報を参照する前に、偽シンボル情報の全部又は一部を前記シンボル情報へ復元する。
【００９７】
復元用モジュールは、実行可能ファイルが実行中であって、実行可能ファイル内のコードが所要のシンボル情報を参照する前に、偽シンボル情報の全部又は一部をシンボル情報へ復元する。例えば、コードＡがシンボル情報Ａを参照するとし、コードＡの後に実行されるコードＢがシンボル情報Ｂを参照するとする。この場合、コードＡがシンボル情報Ａを参照する前に復元用モジュールを読み出して、偽シンボル情報から元のシンボル情報Ａに復元する。なお、この場合、シンボル情報Ｂは改変されたままとすることができる。次に、コードＢがシンボル情報Ｂを参照する前に復元用モジュールを読み出して、偽シンボル情報から元のシンボル情報Ｂに復元する。
【００９８】
このように、元のシンボル情報への復元を一度に実施しないことにより、偽シンボル情報のうち、必要最小限の情報だけを復元するので、アプリケーションに対する解析・分析を一層困難にすることができる。
【００９９】
本実施の形態の情報処理装置において、前記復元用モジュールは、偽シンボル情報をシンボル情報へ復元した後に、前記実行可能ファイル内のコードが前記シンボル情報を参照しない場合、前記シンボル情報から偽シンボル情報を生成する。
【０１００】
復元用モジュールは、偽シンボル情報をシンボル情報へ復元した後に、実行可能ファイル内のコードが当該シンボル情報を参照しない場合、当該シンボル情報から偽シンボル情報を生成する。コードが、復元された元のシンボル情報を参照した後、当該コードが当該元のシンボル情報を使用しない場合には、当該元のシンボル情報を改変して偽シンボル情報に戻す。これにより、復元された元のシンボル情報は、再度偽シンボル情報に改変されるので、アプリケーションに対する解析・分析を一層困難にすることができる。
【０１０１】
本実施の形態の情報処理装置は、前記復元用モジュールが偽シンボル情報を生成した後で前記偽シンボル情報が復元されているか否かを判定する判定モジュールを備え、前記実行部は、前記偽シンボル情報が復元されている場合、前記実行可能ファイルの実行を停止する。
【０１０２】
判定モジュールは、復元用モジュールが偽シンボル情報を生成した後で当該偽シンボル情報が復元されているか否かを判定する。実行部は、当該偽シンボル情報が復元されている場合、実行可能ファイルの実行を停止する。アプリケーションが停止するので、攻撃者は、アプリケーション停止の原因を探索しなければならず、例えば、判定モジュールの処理の発見や除去が必要となり、攻撃者の、アプリケーションに対する解析・分析を一層困難にすることができる。
【符号の説明】
【０１０３】
１０  ユーザ端末
１００、１２０、１４０  情報処理装置
１０１  制御部
１０２、１２２  取得部
１０３  シンボル情報抽出部
１０４、１２４  偽シンボル情報生成部
１０５  出力部
１０６  記憶部
１０７  復元用モジュール生成部
１２３  変換部
１４１  ハードウェア部
１４２  実行部
１４３  ユーザプログラム
１４４  復元用モジュール
１４５  チェッカモジュール
１４６  インタフェースプログラム
１６０  コンピュータ
１６１  制御部
１６２  ＣＰＵ
１６３  ＲＯＭ
１６４  ＲＡＭ
１６５  Ｉ／Ｆ
１６６  入力部
１６７  出力部
１６８  外部Ｉ／Ｆ部
【要約】      （修正有）【課題】攻撃者によるアプリケーションの解析・分析を困難にすることができる情報処理装置、コンピュータプログラム及び情報処理方法を提供する。【解決手段】情報処理装置１００において、取得部１０２は、実行可能ファイルを取得する。シンボル情報抽出部１０３は、取得した実行可能ファイルからシンボル情報を抽出する。偽シンボル情報生成部１０４は、シンボル情報を改変して偽シンボル情報を生成する。復元用モジュール生成部１０７は、偽シンボル情報生成部１０４が元のシンボル情報を改変して偽シンボル情報を生成するアルゴリズムを反映した復元用のアルゴリズムを有する復元用モジュールを生成する。制御部１０１は、偽シンボル情報を含む実行可能ファイルを生成する。出力部１０５は、偽シンボル情報を含む実行可能ファイルをユーザ端末１０に対して出力する。【選択図】図１【図１】
0006752347.tif 000002
【図２】
0006752347.tif 000003
【図３】
0006752347.tif 000004
【図４】
0006752347.tif 000005
【図５】
0006752347.tif 000006
【図６】
0006752347.tif 000007
【図７】
0006752347.tif 000008
【図８】
0006752347.tif 000009
【図９】
0006752347.tif 000010
【図１０】
0006752347.tif 000011
【図１１】
0006752347.tif 000012
【図１２】
0006752347.tif 000013
【図１３】
0006752347.tif 000014
【図１４】
0006752347.tif 000015