(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-12
(45)【発行日】2023-09-21
(54)【発明の名称】メモリ上に実行可能イメージをロードする方法およびシステム
(51)【国際特許分類】
G06F 21/14 20130101AFI20230913BHJP
G06F 21/62 20130101ALI20230913BHJP
G06F 9/445 20180101ALI20230913BHJP
【FI】
G06F21/14
G06F21/62 309
G06F9/445 150
(21)【出願番号】P 2021563710
(86)(22)【出願日】2019-05-03
(86)【国際出願番号】 KR2019005333
(87)【国際公開番号】W WO2020226189
(87)【国際公開日】2020-11-12
【審査請求日】2022-04-27
(73)【特許権者】
【識別番号】516014409
【氏名又は名称】ライン プラス コーポレーション
【氏名又は名称原語表記】LINE Plus Corporation
(74)【代理人】
【識別番号】110003199
【氏名又は名称】弁理士法人高田・高橋国際特許事務所
(72)【発明者】
【氏名】チュン サンミン
(72)【発明者】
【氏名】イム スンヒョン
(72)【発明者】
【氏名】ハン ソルファ
(72)【発明者】
【氏名】シム ミニョン
(72)【発明者】
【氏名】チェ ジュンタエ
(72)【発明者】
【氏名】ジョン サンフン
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2005-085188(JP,A)
【文献】国際公開第2015/170473(WO,A1)
【文献】特開2005-196286(JP,A)
【文献】特表2013-511782(JP,A)
【文献】特開2005-018725(JP,A)
【文献】特開2005-165493(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/14
G06F 21/62
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
コンピュータ装置と結合して実行可能イメージロード方法を前記コンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録されたコンピュータプログラムであって、
前記実行可能イメージロード方法は、
実行可能ファイルをサーバに格納する段階、
前記実行可能ファイルに対する実行要請に応答して、前記実行可能ファイルに対するメモリ空間を割り当てる段階、
前記サーバから前記実行可能ファイルを受信して、前記受信した実行可能ファイルに対する実行可能イメージを前記割り当てられたメモリ空間にロードする段階、および
前記割り当てられたメモリ空間にロードされた実行可能イメージを参照して前記実行可能ファイルのプログラムコードを実行する段階
を含
み、
前記割り当てる段階は、
前記実行可能ファイルの第1サイズ以上の容量を有する任意のファイルをメモリにロードして前記任意のファイルがロードされたアドレスのメモリ空間を前記実行可能ファイルのためのメモリ空間に割り当てることを含む
ことを特徴とする、コンピュータプログラム。
【請求項2】
前記サーバから受信した実行可能ファイルは、前記コンピュータ装置のローカルストレージに格納されないことを特徴とする、請求項1に記載のコンピュータプログラム。
【請求項3】
前記格納する段階は、
前記実行可能ファイルを暗号化して、前記暗号化された実行可能ファイルを前記サーバに格納し、
前記ロードする段階は、
暗号化された前記実行可能ファイルを前記サーバから受信して復号化し、前記復号化された実行可能ファイルに対する実行可能イメージを前記割り当てられたメモリ空間にロードすること
を特徴とする、請求項1に記載のコンピュータプログラム。
【請求項4】
コンピュータ装置と結合して実行可能イメージロード方法を前記コンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録されたコンピュータプログラムであって、
前記実行可能イメージロード方法は、
実行可能ファイルを暗号化して前記コンピュータ装置のローカルストレージに格納する段階、
前記実行可能ファイルに対する実行要請に応答して、前記実行可能ファイルに対するメモリ空間を割り当てる段階、
前記ローカルストレージに格納された前記暗号化された実行可能ファイルを復号化して、前記復号化された実行可能ファイルに対する実行可能イメージを前記割り当てられたメモリ空間にロードする段階、および
前記割り当てられたメモリ空間にロードされた実行可能イメージを参照して前記実行可能ファイルのプログラムコードを実行する段階
を含
み、
前記割り当てる段階は、
前記実行可能ファイルの第1サイズ以上の容量を有する任意のファイルをメモリにロードして前記任意のファイルがロードされたアドレスのメモリ空間を前記実行可能ファイルのためのメモリ空間に割り当てることを含む
ことを特徴とする、コンピュータプログラム。
【請求項5】
前記実行する段階は、
前記実行可能ファイルに格納された情報に基づいて、前記割り当てられたメモリ空間の属性、参照アドレス、エクスポート(export)アドレス、およびインポート(import)アドレスのうちの少なくとも1つを設定すること
を特徴とする、請求項1または4に記載のコンピュータプログラム。
【請求項6】
前記実行する段階は、
前記割り当てられたメモリ空間の属性を、読み取り(read)、書き込み(write)、および実行(execute)のうちの少なくとも1つに設定する段階、
再配置(relocation)情報を利用して、コードのアドレスをメモリ開始アドレス(base address)からの相対アドレスに修正して参照アドレスを設定する段階、
前記実行可能イメージでエクスポートのためのアドレスを設定する段階、および
前記実行可能イメージでインポートしなければならないアドレスを設定する段階
を含むことを特徴とする、請求項1または4に記載のコンピュータプログラム。
【請求項7】
前記実行する段階は、
前記実行可能ファイルのプログラムコードで最初に実行されなければならない開始コードを前記実行可能イメージまたは別の領域から探して実行すること
を特徴とする、請求項1または4に記載のコンピュータプログラム。
【請求項8】
コンピュータ装置が含む少なくとも1つのプロセッサが実行する実行可能イメージロード方法であって、
前記少なくとも1つのプロセッサにより、実行可能ファイルをサーバに格納する段階、
前記少なくとも1つのプロセッサにより、前記実行可能ファイルに対する実行要請に応答して、前記実行可能ファイルに対するメモリ空間を割り当てる段階、
前記少なくとも1つのプロセッサにより、前記サーバから前記実行可能ファイルを受信して、前記受信した実行可能ファイルに対する実行可能イメージを前記割り当てられたメモリ空間にロードする段階、および
前記少なくとも1つのプロセッサにより、前記割り当てられたメモリ空間にロードされた実行可能イメージを参照して前記実行可能ファイルのプログラムコードを実行する段階 を含
み、
前記割り当てる段階は、
前記実行可能ファイルの第1サイズ以上の容量を有する任意のファイルをメモリにロードして前記任意のファイルがロードされたアドレスのメモリ空間を前記実行可能ファイルのためのメモリ空間として割り当てることを含む、
実行可能イメージロード方法。
【請求項9】
前記サーバから受信した実行可能ファイルは、前記コンピュータ装置のローカルストレージに格納されないことを特徴とする、
請求項8に記載の実行可能イメージロード方法。
【請求項10】
前記格納する段階は、
前記実行可能ファイルを暗号化して、前記暗号化された実行可能ファイルを前記サーバに格納し、
前記ロードする段階は、
暗号化された前記実行可能ファイルを前記サーバから受信して復号化し、前記復号化された実行可能ファイルに対する実行可能イメージを前記割り当てられたメモリ空間にロードすること
を特徴とする、
請求項8に記載の実行可能イメージロード方法。
【請求項11】
コンピュータ装置が含む少なくとも1つのプロセッサが実行する実行可能イメージロード方法であって、
前記少なくとも1つのプロセッサにより、実行可能ファイルを暗号化して前記コンピュータ装置のローカルストレージに格納する段階、
前記少なくとも1つのプロセッサにより、前記実行可能ファイルに対する実行要請に応答して、前記実行可能ファイルに対するメモリ空間を割り当てる段階、
前記少なくとも1つのプロセッサにより、前記ローカルストレージに格納された前記暗号化された実行可能ファイルを復号化して、前記復号化された実行可能ファイルに対する実行可能イメージを前記割り当てられたメモリ空間にロードする段階、および
前記少なくとも1つのプロセッサにより、前記割り当てられたメモリ空間にロードされた実行可能イメージを参照して前記実行可能ファイルのプログラムコードを実行する段階 を含
み、
前記割り当てる段階は、
前記実行可能ファイルの第1サイズ以上の容量を有する任意のファイルをメモリにロードして前記任意のファイルがロードされたアドレスのメモリ空間を前記実行可能ファイルのためのメモリ空間として割り当てることを含む、
実行可能イメージロード方法。
【請求項12】
前記実行する段階は、
前記実行可能ファイルに格納された情報に基づいて、前記割り当てられたメモリ空間の属性、参照アドレス、エクスポート(export)アドレス、およびインポート(import)アドレスのうちの少なくとも1つを設定すること
を特徴とする、
請求項8または11に記載の実行可能イメージロード方法。
【請求項13】
前記実行する段階は、
前記割り当てられたメモリ空間の各セグメントの属性を、読み取り(read)、書き込み(write)、および実行(execute)のうちの少なくとも1つに設定する段階、
再配置(relocation)情報を利用して、コードのアドレスをメモリ開始アドレス(base address)からの相対アドレスに修正して参照アドレスを設定する段階、
前記実行可能イメージでエクスポートのためのアドレスを設定する段階、および
前記実行可能イメージでインポートしなければならないアドレスを設定する段階
を含むことを特徴とする、
請求項8または11に記載の実行可能イメージロード方法。
【請求項14】
前記実行する段階は、
前記実行可能ファイルのプログラムコードで最初に実行されなければならない開始コードを前記実行可能イメージまたは別の領域から探して実行すること
を特徴とする、
請求項8または11に記載の実行可能イメージロード方法。
【請求項15】
請求項8~11のうちのいずれか一項に記載の方法をコンピュータ装置に実行させるためのコンピュータプログラムが記録されている、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、メモリ上に実行可能イメージをロードする方法およびシステムに関する。
【背景技術】
【0002】
リバースエンジニアリング(Reverse Engineering)では、特定のプログラムの動作原理を暴くことが可能であり、このような動作原理を利用して特定のプログラムの動作方式を変更することができる。一例として、クライアント端末に配布されたアプリケーションは、リバースエンジニアリングによってその動作方式を把握することができるため、このようなリバースエンジニアリングによってアプリケーション機能を盗用することが可能となる。また、アプリケーションの本来の機能を修正してアプリケーションが意図する動作とは違った動作させることにより、アプリケーションが提供するサービスと該当のサービスを提供するシステムの信頼性に悪影響を与えることもできる。
【0003】
このようなリバースエンジニアリング過程からプログラムを保護するために、実行ファイルを難読化して本来のコードおよびデータを見ることができないようにする方法が使用された。一例として、コード難読化は、プログラミング言語で作成されたコードを読み取り難くするためにプログラムコードの一部または全部を変更する方法の1つであって、コードの可読性を低めることによってリバースエンジニアリングへの対策を講じている。例えば、韓国登録特許第10-1328012号公報は、アプリケーションコード難読化装置およびその方法に関するものであって、アプリケーションに使用されるコードのうちの重要コードおよび重要コードを呼び出すための呼出しコードをネイティブコード形態に変換する技術を開示している。
【0004】
しかし、実行可能ファイル(一例として、exe、dll、so、dynlib、apk、ipa、dexなどの拡張子を持つファイル)に難読化を適用した場合であっても、その内容は常にディスクにファイル形態で格納されて存在するようになるため、従来のファイルで発生していた問題が常に存在するようになる。例えば、該当のファイルは、他の場所に簡単にコピーすることができ、ファイルの実行時点に作動するアンチリバーシング(Anti-reversing)に関連する機能がディスクでは実行される前であるため、ファイルの内容を制約なく参照することができる。また、該当の実行可能ファイルの名前を基準に、実行時点にロードされたメモリの位置を簡単に確認できてしまうという問題もそのまま存在するようになる。
【発明の概要】
【発明が解決しようとする課題】
【0005】
実行可能ファイルをディスクではなく実行可能イメージの形態でメモリ上に位置させ、実行可能ファイルの実行時に、メモリ上に位置する実行可能イメージを参照して実行可能イメージのプログラムコードをメモリ上にロードすることにより、悪意のあるユーザによって実行可能ファイルが盗用および/または変調されることを防ぐことができる、実行可能イメージロード方法、前記方法を実行するコンピュータ装置、前記コンピュータ装置と結合して前記方法を前記コンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録されたコンピュータプログラムおよびその記録媒体を提供する。
【課題を解決するための手段】
【0006】
コンピュータ装置が含む少なくとも1つのプロセッサが実行する実行可能イメージロード方法であって、前記少なくとも1つのプロセッサにより、実行可能ファイルをサーバに格納する段階、前記少なくとも1つのプロセッサにより、前記実行可能ファイルに対する実行要請に応答して、前記実行可能ファイルに対するメモリ空間を割り当てる段階、前記少なくとも1つのプロセッサにより、前記サーバから前記実行可能ファイルを受信して、前記受信した実行可能ファイルに対する実行可能イメージを前記割り当てられたメモリ空間にロードする段階、および前記少なくとも1つのプロセッサにより、前記割り当てられたメモリ空間にロードされた実行可能イメージを参照して前記実行可能ファイルのプログラムコードを実行する段階を含む、実行可能イメージロード方法を提供する。
【0007】
コンピュータ装置が含む少なくとも1つのプロセッサが実行する実行可能イメージロード方法であって、前記少なくとも1つのプロセッサにより、実行可能ファイルを暗号化して前記コンピュータ装置のローカルストレージに格納する段階、前記少なくとも1つのプロセッサにより、前記実行可能ファイルに対する実行要請に応答して、前記実行可能ファイルに対するメモリ空間を割り当てる段階、前記少なくとも1つのプロセッサにより、前記ローカルストレージに格納された前記暗号化された実行可能ファイルを復号化して、前記復号化された実行可能ファイルに対する実行可能イメージを前記割り当てられたメモリ空間にロードする段階、および前記少なくとも1つのプロセッサにより、前記割り当てられたメモリ空間にロードされた実行可能イメージを参照して前記実行可能ファイルのプログラムコードを実行する段階を含む、実行可能イメージロード方法を提供する。
【0008】
コンピュータ装置と結合して前記方法を前記コンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録された、コンピュータプログラムを提供する。
【0009】
前記方法をコンピュータ装置に実行させるためのコンピュータプログラムが記録されている、コンピュータ読み取り可能な記録媒体を提供する。
【0010】
コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサにより、実行可能ファイルをサーバに格納し、前記実行可能ファイルに対する実行要請に応答して、前記実行可能ファイルに対するメモリ空間を割り当て、前記サーバから前記実行可能ファイルを受信し、前記受信した実行可能ファイルに対する実行可能イメージを前記割り当てられたメモリ空間にロードし、前記割り当てられたメモリ空間にロードされた実行可能イメージを参照して前記実行可能ファイルのプログラムコードを実行することを特徴とする、コンピュータ装置を提供する。
【0011】
コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサにより、実行可能ファイルを暗号化して前記コンピュータ装置のローカルストレージに格納し、前記実行可能ファイルに対する実行要請に応答して、前記実行可能ファイルに対するメモリ空間を割り当て、前記ローカルストレージに格納された前記暗号化された実行可能ファイルを復号化して、前記復号化された実行可能ファイルに対する実行可能イメージを前記割り当てられたメモリ空間にロードし、前記割り当てられたメモリ空間にロードされた実行可能イメージを参照して前記実行可能ファイルのプログラムコードを実行することを特徴とする、コンピュータ装置を提供する。
【発明の効果】
【0012】
実行可能ファイルをディスクではなく実行可能イメージの形態でメモリ上に位置させ、実行可能ファイルの実行時に、メモリ上に位置する実行可能イメージを参照して実行可能イメージのプログラムコードをメモリ上にロードすることにより、悪意のあるユーザによって実行可能ファイルが盗用および/または変調されることを防ぐことができる。
【図面の簡単な説明】
【0013】
【
図1】本発明の一実施形態における、ネットワーク環境の例を示した図である。
【
図2】本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。
【
図3】本発明の一実施形態における、実行可能イメージロード方法の例を示したフローチャートである。
【
図4】本発明の一実施形態における、実行可能イメージをメモリにロードする過程の例を示した図である。
【
図5】本発明の一実施形態における、実行可能イメージロード方法の他の例を示したフローチャートである。
【
図6】本発明の一実施形態における、実行可能イメージをメモリにロードする過程の例を示した図である。
【
図7】本発明の一実施形態における、実行可能イメージを利用してプログラムを実行する方法の例を示したフローチャートである。
【
図8】本発明の一実施形態における、実行可能イメージを利用してプログラムを実行する過程の例を示した図である。
【発明を実施するための形態】
【0014】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【0015】
本発明の実施形態に係る実行可能イメージロードシステムは、少なくとも1つのコンピュータ装置によって実現されてよい。このとき、コンピュータ装置においては、本発明の一実施形態に係るコンピュータプログラムがインストールされて実行されてよく、コンピュータ装置は、実行されたコンピュータプログラムの制御にしたがって本発明の実施形態に係る実行可能イメージロード方法を実行してよい。上述したコンピュータプログラムは、コンピュータ装置と結合して前記方法をコンピュータに実行させるためにコンピュータ読み取り可能な記録媒体に記録されてよい。
【0016】
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。
図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような
図1は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が
図1のように限定されることはない。また、
図1のネットワーク環境は、本実施形態に適用可能な環境のうちの1つを説明するための一例に過ぎず、本実施形態に適用可能な環境が
図1のネットワーク環境に限定されることはない。
【0017】
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定端末や移動端末であってよい。複数の電子機器110、120、130、140の例としては、スマートフォン、携帯電話、ナビゲーション、PC(personal computer)、ノート型PC、デジタル放送用端末、PDA(Personal Digital Assistant)、PMP(Portable Multimedia Player)、タブレットなどがある。一例として、
図1では、電子機器110の例としてスマートフォンを示しているが、本発明の実施形態において、電子機器110は、実質的に無線または有線通信方式を利用し、ネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信することのできる多様な物理的なコンピュータ装置のうちの1つを意味してよい。
【0018】
通信方式が限定されることはなく、ネットワーク170が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を利用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク170は、PAN(personal area network)、LAN(local area network)、CAN(campus area network)、MAN(metropolitan area network)、WAN(wide area network)、BBN(broadband network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでよい。さらに、ネットワーク170は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター-バスネットワーク、ツリーまたは階層的ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これらに限定されることはない。
【0019】
サーバ150、160のそれぞれは、複数の電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供する1つ以上のコンピュータ装置によって実現されてよい。例えば、サーバ150は、ネットワーク170を介して接続した複数の電子機器110、120、130、140にサービス(一例として、ファイル配布サービス、対話サービス、地図サービス、翻訳サービス、金融サービス、決済サービス、ソーシャルネットワークサービス、メッセージングサービス、検索サービス、メールサービス、コンテンツ提供サービスなど)を提供するシステムであってよい。
【0020】
図2は、本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。上述した複数の電子機器110、120、130、140のそれぞれやサーバ150、160のそれぞれは、
図2に示すコンピュータ装置200によって実現されてよい。
【0021】
このようなコンピュータ装置200は、
図2に示すように、メモリ210、プロセッサ220、通信インタフェース230、および入力/出力インタフェース240を含んでよい。メモリ210は、コンピュータ読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永続的大容量記録装置を含んでよい。ここで、ROMやディスクドライブのような永続的大容量記録装置は、メモリ210とは区分される別の永続的記録装置としてコンピュータ装置200に含まれてもよい。また、メモリ210には、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリ210とは別のコンピュータ読み取り可能な記録媒体からメモリ210にロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピー(登録商標)ドライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信インタフェース230を通じてメモリ210にロードされてもよい。例えば、ソフトウェア構成要素は、ネットワークを介して受信されるファイルによってインストールされるコンピュータプログラムに基づいてコンピュータ装置200のメモリ210にロードされてよい。
【0022】
プロセッサ220は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ210または通信インタフェース230によって、プロセッサ220に提供されてよい。例えば、プロセッサ220は、メモリ210のような記録装置に記録されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【0023】
通信インタフェース230は、ネットワーク170を介してコンピュータ装置200が他の装置(一例として、上述した記録装置)と互いに通信するための機能を提供してよい。一例として、コンピュータ装置200のプロセッサ220がメモリ210のような記録装置に記録されたプログラムコードにしたがって生成した要求や命令、データ、ファイルなどが、通信インタフェース230の制御にしたがってネットワーク170を介して他の装置に伝達されてよい。これとは逆に、他の装置からの信号や命令、データ、ファイルなどが、ネットワーク170を経てコンピュータ装置200の通信インタフェース230を通じてコンピュータ装置200に受信されてよい。通信インタフェース230を通じて受信された信号や命令、データなどは、プロセッサ220やメモリ210に伝達されてよく、ファイルなどは、コンピュータ装置200がさらに含むことのできる記録媒体(上述した永続的記録装置)に記録されてよい。
【0024】
入力/出力インタフェース240は、入力/出力装置250とのインタフェースのための手段であってよい。例えば、入力装置は、マイク、キーボード、またはマウスなどの装置を、出力装置は、ディスプレイ、スピーカなどのような装置を含んでよい。他の例として、入力/出力インタフェース240は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。入力/出力装置250は、コンピュータ装置200と1つの装置として構成されてもよい。
【0025】
また、他の実施形態において、コンピュータ装置200は、
図2の構成要素よりも少ないか多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、コンピュータ装置200は、上述した入力/出力装置250のうちの少なくとも一部を含むように実現されてもよいし、トランシーバやデータベースなどのような他の構成要素をさらに含んでもよい。
【0026】
図3は、本発明の一実施形態における、実行可能イメージロード方法の例を示したフローチャートである。本実施形態に係る実行可能イメージロード方法は、
図2を参照しながら説明したコンピュータ装置200によって実行されてよい。この場合、コンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのプログラムのコードとによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が
図3の方法に含まれる段階310~340を実行するようにコンピュータ装置200を制御してよい。
【0027】
段階310で、コンピュータ装置200は、実行可能ファイルをサーバに格納してよい。本実施形態に係るコンピュータ装置200は、実行可能ファイルをディスクのようなコンピュータ装置200のローカルストレージに格納しない状態で実行可能ファイルを実行してよい。言い換えれば、実行可能ファイルのプログラムコードに対する保護のための領域を、ローカルストレージとコンピュータ装置200のメモリ210の2カ所から、メモリ210の1カ所に制限してよい。このため一実施形態として、コンピュータ装置200は、実行可能ファイルをローカルストレージではなくサーバに記録してよい。したがって、コンピュータ装置200の使用者は、サーバに記録された実行可能ファイルを任意に盗用したり変調したりすることができなくなる。また、実行可能ファイルをサーバに格納するコンピュータプログラムは、実行可能ファイルのプログラムコードとは別のプログラムコードとなるため、コンピュータ装置200の使用者は、実行可能ファイルがどこに格納されているか知ることができない。したがって、コンピュータ装置200の使用者は、メモリ210ではない、ディスクのようなローカルストレージから実行可能ファイルのプログラムコードを取得することができなくなる。
【0028】
段階320で、コンピュータ装置200は、実行可能ファイルに対する実行要請に応答して、実行可能ファイルに対するメモリ空間を割り当ててよい。上述したように、実行可能ファイルは、コンピュータ装置200のローカルストレージには格納されていないため、コンピュータ装置200は、一般的な方式では実行可能ファイルを実行することができない。コンピュータ装置200に格納された実行可能ファイルを実行する場合、一般的に、コンピュータ装置200のオペレーティングシステムは、コンピュータ装置200のメモリ210に実行可能ファイルの実行のためのメモリ空間を割り当て、割り当てられたメモリに実行可能ファイルに対する実行可能イメージをロードする。この反面、本実施形態では、実行可能ファイルはサーバに格納されているため、コンピュータ装置200は、通常の方法では実行可能ファイルを実行させることができない。さらに、実行可能ファイルは、コンピュータ装置200のローカルストレージには格納されていないため、コンピュータ装置200は、コンピュータプログラムの制御にしたがい、サーバから受信される実行可能ファイルに対する実行可能イメージをそのままメモリ210上に格納するために、実行可能ファイルに対するメモリ空間を予め割り当ててよい。このために、コンピュータ装置200は、実行可能ファイルの第1サイズ以上の容量を有する任意のファイルをメモリにロードし、前記任意のファイルがロードされたアドレスのメモリ空間を前記実行可能ファイルのためのメモリ空間として割り当てるか、または予め割り当てられたメモリ空間のうちの少なくとも一部を前記実行可能ファイルのためのメモリ空間として割り当ててよい。言い換えれば、コンピュータ装置200は、実行可能ファイルを格納していないため、サーバから実行可能ファイルを受信する前にメモリ空間を予め割り当てなければならない。これにより、コンピュータ装置200は、任意のファイルを利用してメモリ空間を割り当てて活用するか、または予め割り当てられたメモリ空間の一部を活用してよい。
【0029】
段階330で、コンピュータ装置200は、サーバから実行可能ファイルを受信して、受信した実行可能ファイルに対する実行可能イメージを割り当てられたメモリ空間にロードしてよい。上述したように、実行可能ファイルがコンピュータ装置200のローカルストレージに格納されないようにするために、サーバから受信される実行可能ファイルもコンピュータ装置200のローカルストレージに格納されない。コンピュータ装置200は、コンピュータプログラムの制御にしたがってサーバから実行可能ファイルを受信してよく、受信した実行可能ファイルは格納せずに、実行可能ファイルに対する実行可能イメージを、メモリ210上の割り当てられたメモリ空間にそのままロードしてよい。
【0030】
一方、サーバに格納される実行可能ファイルは、暗号化されて格納されてもよい。例えば、コンピュータ装置200は、段階310で、実行可能ファイルを暗号化して、暗号化された実行可能ファイルをサーバに格納してよい。この場合、コンピュータ装置200は、段階330で、暗号化された実行可能ファイルをサーバから受信して復号化して、復号化された実行可能ファイルに対する実行可能イメージを割り当てられたメモリ空間にロードしてよい。
【0031】
段階340で、コンピュータ装置200は、割り当てられたメモリ空間にロードされた実行可能イメージを参照して実行可能ファイルのプログラムコードを実行してよい。このために、コンピュータ装置200は、実行可能ファイルに格納された情報に基づいて、割り当てられたメモリ空間の属性、参照アドレス、エクスポート(export)アドレス、およびインポート(import)アドレスのうちの少なくとも1つを設定してよい。このような設定過程については、以下でさらに詳しく説明する。実行可能ファイルのプログラムコードを実行するために、コンピュータ装置200は、実行可能ファイルのプログラムコードで最初に実行されなければならない開始コードを、前記実行可能イメージまたは別の領域から探して実行してよい。基本的に、開始コードは、実行可能イメージ内に含まれているが、実行可能イメージの保護のための保護モジュールなどのアクティブ化のために、開始コードの位置が別の領域に変更されている場合もある。これにより、コンピュータ装置200は、このような開始コードを実行可能イメージや保護モジュール内のような別の領域から探して開始コードを実行することにより、実行可能ファイルのプログラムコードが実行されるようになる。
【0032】
図4は、本発明の一実施形態における、実行可能イメージをメモリにロードする過程の例を示した図である。
図4は、電子機器110とサーバ150を示している。電子機器110は、実行可能ファイル410を電子機器110のストレージA420には格納せず、サーバ150のストレージB430に格納してよい。例えば、電子機器110においてインストールされて実行された実行可能イメージロード方法のためのコンピュータプログラムは、電子機器110にインストールされるファイルの実行可能ファイルが、電子機器110のストレージA420ではなくサーバ150のストレージB430に格納されるように電子機器110を制御してよい。この場合、電子機器110は、実行可能ファイル410の実行が要求されるときに、コンピュータプログラムの制御にしたがい、実行可能ファイル410のためのメモリ空間を予めメモリ440上に割り当てた後、サーバ150から実行可能ファイル410を受信し、実行可能ファイル410に対する実行可能イメージ450を割り当てられたメモリ空間にロードしてよい。この後、電子機器110は、メモリ440に割り当てられたメモリ空間にロードされた実行可能イメージ450を参照して実行可能ファイル410のプログラムコードを実行してよい。メモリ440の揮発性を考慮するとき、実行可能ファイル410の実行が終われば、メモリ440から実行可能イメージを取得することはできなくなる。
【0033】
図5は、本発明の一実施形態における、実行可能イメージロード方法の他の例を示したフローチャートである。本実施形態に係る実行可能イメージロード方法も、
図2を参照しながら説明したコンピュータ装置200によって実行されてよい。この場合、コンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのプログラムのコードとによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が
図5の方法に含まれる段階510~540を実行するようにコンピュータ装置200を制御してよい。
【0034】
段階510で、コンピュータ装置200は、実行可能ファイルを暗号化してコンピュータ装置のローカルストレージに格納してよい。本実施形態に係るコンピュータ装置200は、実行可能ファイルをディスクのようなコンピュータ装置200のローカルストレージに格納するものの、実行可能ファイルを暗号化して格納してよい。したがって、実行可能ファイルの暗号化は、実行可能ファイルとは関係のない、本実施形態に係る実行可能イメージロード方法のためのコンピュータプログラムによって実行されるため、単に暗号化された実行可能ファイルを取得した使用者は、実行可能ファイルを任意に盗用したり変調したりすることができない。
【0035】
段階520で、コンピュータ装置200は、実行可能ファイルに対する実行要請に応答して、実行可能ファイルに対するメモリ空間を割り当ててよい。実行可能ファイルが暗号化されてコンピュータ装置200に格納されている場合、コンピュータ装置200は、実行可能ファイルをそのまま実行させることができないため、一般的なファイル実行方法では実行可能ファイルを実行して実行可能ファイルのためのメモリ空間を割り当てることができない。これにより、コンピュータ装置200は、コンピュータプログラムの制御にしたがい、実行可能ファイルの第1サイズと同じ容量であるか、第1サイズ以上の容量を有する任意のファイルをコンピュータ装置200のメモリ210にロードし、このような任意のファイルがロードされたアドレスのメモリ空間を実行可能ファイルのためのメモリ空間として割り当ててよい。他の例として、コンピュータ装置200は、コンピュータプログラムの制御にしたがい、以前に既に割り当てられたメモリ空間の一部を実行可能ファイルのためのメモリ空間として割り当ててよい。
【0036】
段階530で、コンピュータ装置200は、ローカルストレージに格納された暗号化された実行可能ファイルを復号化し、復号化された実行可能ファイルに対する実行可能イメージを割り当てられたメモリ空間にロードしてよい。実行可能ファイルの暗号化だけでなく、復号化も、実行可能ファイルとは関係のない、本実施形態に係る実行可能イメージロード方法のためのコンピュータプログラムによって実行されるため、単に暗号化された実行可能ファイルを取得した使用者は、実行可能ファイルを任意に盗用したり変調したりすることができない。
【0037】
段階540で、コンピュータ装置200は、割り当てられたメモリ空間にロードされた実行可能イメージを参照して実行可能ファイルのプログラムコードを実行してよい。このために、コンピュータ装置200は、実行可能ファイルに格納された情報に基づいて、割り当てられたメモリ空間の属性、参照アドレス、エクスポートアドレス、およびインポートアドレスのうちの少なくとも1つを設定してよい。このような設定過程については、以下でさらに詳しく説明する。実行可能ファイルのプログラムコードを実行するために、コンピュータ装置200は、実行可能ファイルのプログラムコードで最初に実行されなければならない開始コードを前記実行可能イメージまたは別の領域から探して実行してよい。基本的に、開始コードは、実行可能イメージ内に含まれているが、実行可能イメージの保護のための保護モジュールなどのアクティブ化のために、開始コードの位置が別の領域に変更されている場合もある。これにより、コンピュータ装置200は、このような開始コードを実行可能イメージや保護モジュール内のような別の領域から探して開始コードを実行することにより、実行可能ファイルのプログラムコードが実行されるようになる。
【0038】
図6は、本発明の一実施形態における、実行可能イメージをメモリにロードする過程の例を示した図である。
図4の実施形態とは異なり、
図6の実施形態では、電子機器110のストレージA430に、実行可能ファイル410を暗号化して生成された、暗号化された実行可能ファイル610が格納されてよい。このような実行可能ファイル410の暗号化および以下で説明する復号化(復元)は、電子機器110においてインストールされて実行されたコンピュータプログラムの制御にしたがって実行されてよい。このようなコンピュータプログラムによって実行可能ファイル410に対する実行要請が伝達されれば、電子機器110は、コンピュータプログラムの制御にしたがい、ストレージA430に格納された暗号化された実行可能ファイル610をインポートして実行可能ファイル410を復元した後、復元された実行可能ファイル410に対する実行可能イメージ450をメモリ440にロードしてよい。メモリ440上にメモリ空間を割り当てる方式は、
図4の実施形態と同じであってよい。言い換えれば、実行可能ファイル410を格納することはできないため、電子機器110は、実行可能ファイル410に対する実行可能イメージ450をロードするためのメモリ空間を予め割り当ててよい。
【0039】
図7は、本発明の一実施形態における、実行可能イメージを利用してプログラムを実行する方法の例を示したフローチャートである。
図7の段階710~740は、
図3を参照しながら説明した段階340または
図5を参照しながら説明した段階540に含まれて実行されてよい。上述したように、コンピュータ装置200は、割り当てられたメモリ空間にロードされた実行可能イメージを参照して実行可能ファイルのプログラムコードを実行するときに、実行可能ファイルに格納された情報に基づいて、割り当てられたメモリ空間の属性、参照アドレス、エクスポートアドレス、およびインポートアドレスのうちの少なくとも1つを設定してよい。
図7の段階710~740では、このような設定過程の例について説明する。
【0040】
段階710で、コンピュータ装置200は、割り当てられたメモリ空間の属性を、読み取り(read)、書き込み(write)および実行(execute)のうちの少なくとも1つに設定してよい。一例として、コンピュータ装置200は、実行可能イメージに定義された各セグメントの属性に合うようにメモリ領域の属性(read、write、execute)を設定してよい。上述したように、実行可能ファイルに保護モジュールのような別の領域が含まれる場合、コンピュータ装置200は、別の領域に格納された各セグメント属性に合うように各メモリ領域の属性を設定してよい。このようなセグメントの属性は、実行可能ファイルを参照することで取得されてよい。言い換えれば、
図3の実施形態でサーバから実行可能ファイルが受信された後に、または
図5の実施形態で暗号化された実行可能ファイルが復号化された後に、受信または復号化された実行可能ファイルからセグメントの属性が取得されてよい。
【0041】
段階720で、コンピュータ装置200は、再配置(relocation)情報を利用して、コードのアドレスをメモリ開始アドレス(base address)からの相対アドレスに修正して参照アドレスを設定してよい。例えば、コンピュータ装置200は、実行可能イメージに定義された再配置情報を利用して、現在のメモリ開始アドレスからの相対アドレスにコードのアドレスを修正してよい。また、上述したように、実行可能ファイルに保護モジュールのような別の領域が含まれる場合、コンピュータ装置200は、別の領域に格納された再配置情報を利用して、現在のメモリ開始アドレスからの相対アドレスにコードのアドレスを修正してよい。
【0042】
段階730で、コンピュータ装置200は、実行可能イメージでエクスポートのためのアドレスを設定してよい。例えば、コンピュータ装置200は、エクスポートしなければならない関数や変数のアドレスを、割り当てられたメモリ空間に該当するアドレスに修正してよい。
【0043】
段階740で、コンピュータ装置200は、実行可能イメージでインポートしなければならないアドレスを設定してよい。例えば、コンピュータ装置200は、インポートする外部ライブラリ(実行可能イメージの形態であって、メモリ上にロードされた外部ライブラリ)の現在アドレスを取得して参照アドレスを修正してよい。このために、コンピュータ装置200は、システムAPIを利用して、外部ライブラリのアドレスをインポートするか、またはメモリから外部ライブラリの位置およびエクスポート情報を直接照会してアドレスをインポートしてよい。
【0044】
このように、実行可能ファイルに格納された情報に基づいて、割り当てられたメモリ空間の属性、参照アドレス、エクスポートアドレス、およびインポートアドレスのうちの少なくとも1つが設定されてから、
図3の段階340または
図5の段階540のように、割り当てられたメモリ空間にロードされた実行可能イメージを参照して実行可能ファイルのプログラムコードが実行されてよい。
【0045】
図8は、本発明の一実施形態における、実行可能イメージを利用してプログラムを実行する過程の例を示した図である。
図8は、本発明の実施形態に係る実行可能イメージロード方法によってメモリ上にロードされた実行可能イメージ1(810)と実行可能イメージ2(820)を示している。先ず、コンピュータ装置200は、それぞれのセグメント(Code、Data、Import、Export、Relocation)の属性にしたがい、対応するメモリ空間の属性を設定してよい。例えば、最初は、実行可能イメージのロードのために全体メモリ空間が書き込み(write)属性であってよく、この後に「Code」セグメントと「Data」セグメントが読み取り(Read)属性に設定されてよい。また、コンピュータ装置200は、実行可能イメージ1(810)に定義された再配置(Relocation)情報を利用して、コードのアドレスをメモリ開始アドレス(base address)からの相対アドレスに修正して参照アドレスを設定してよい。ここで、コードとは、「Code」セグメントの関数や「Data」セグメントの変数を意味してよい。また、コンピュータ装置200は、エクスポート(Export)しなければならない関数や変数のアドレスを割り当てられたメモリ上の該当するアドレスに修正してよく、実行可能イメージ2(820)のような外部ライブラリの現在のアドレスを取得して参照アドレスを修正することにより、インポート(Import)のためのアドレスを設定してよい。この後、コンピュータ装置200は、実行可能ファイルで最初に実行されなければならない開始コードを探して実行することにより、実行可能ファイルが実行されるようになる。
【0046】
このように、本発明の実施形態によると、実行可能ファイルをディスクではなく実行可能イメージの形態でメモリ上に位置させ、実行可能ファイルの実行時に、メモリ上に位置する実行可能イメージを参照して実行可能イメージのプログラムコードをメモリ上にロードすることにより、悪意のあるユーザによって実行可能ファイルが盗用および/または変調されることを防ぐことができる。
【0047】
上述したシステムまたは装置は、ハードウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる多様な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)および前記OS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0048】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置、コンピュータ格納媒体または装置に具現化されてもよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で格納されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に格納されてよい。
【0049】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。前記コンピュータ読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。媒体は、コンピュータ実行可能なプログラムを継続して記録するものであっても、実行またはダウンロードのために一時記録するものであってもよい。また、媒体は、単一または複数のハードウェアが結合した形態の多様な記録手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されることはなく、ネットワーク上に分散して存在するものであってもよい。媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD-ROMおよびDVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどを含み、プログラム命令が記録されるように構成されたものであってよい。また、媒体の他の例として、アプリケーションを配布するアプリケーションストアやその他の多様なソフトウェアを供給または配布するサイト、サーバなどで管理する記録媒体または格納媒体も挙げられる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【0050】
以上のように、実施形態を、限定された実施形態および図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置または置換されたりしたとしても、適切な結果を達成することができる。
【0051】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。