JP2018527664A - アプリケーションのコードを保護するためのシステムおよび方法 - Google Patents

アプリケーションのコードを保護するためのシステムおよび方法 Download PDF

Info

Publication number
JP2018527664A
JP2018527664A JP2018506544A JP2018506544A JP2018527664A JP 2018527664 A JP2018527664 A JP 2018527664A JP 2018506544 A JP2018506544 A JP 2018506544A JP 2018506544 A JP2018506544 A JP 2018506544A JP 2018527664 A JP2018527664 A JP 2018527664A
Authority
JP
Japan
Prior art keywords
file
code
application
encrypted
library
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018506544A
Other languages
English (en)
Other versions
JP6815386B2 (ja
JP2018527664A5 (ja
Inventor
アン,ソンボム
ハン,クァンヒ
イム,ソンヨル
ソ,ドンピル
オ,ワンジン
ジョン,サンフン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Line Corp
Original Assignee
Line Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Line Corp filed Critical Line Corp
Publication of JP2018527664A publication Critical patent/JP2018527664A/ja
Publication of JP2018527664A5 publication Critical patent/JP2018527664A5/ja
Application granted granted Critical
Publication of JP6815386B2 publication Critical patent/JP6815386B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules

Abstract

通信費用の節減のためのコンテンツストリーミングサービス方法およびシステムを提供する。
コンピュータで実現される方法は、アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信する段階(前記応用プログラムパッケージは、前記アプリケーションのコードがコンパイルされて生成された中間言語(Intermediate Language:IL)コードを含むファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルを含む)、前記中間言語コードを含むファイルのうちの少なくとも1つのファイルを暗号化する段階、および前記少なくとも1つの暗号化されたファイルの復号化のためのリカバリーファイルを前記応用プログラムパッケージに追加する段階(前記リカバリーファイルは、前記電子機器での前記アプリケーションの実行のために前記ライブラリファイル間の呼び出しによって前記少なくとも1つの暗号化されたファイルが伝達される場合に、前記少なくとも1つの暗号化されたファイルを復号化するためのコードを含む)を含む。

Description

以下の説明は、アプリケーションのコードを保護するためのシステムおよび方法に関する。
中間言語(Intermediate LanguageまたはInterLanguage:IL)とは、原始言語プログラムをコンパイラによって翻訳して目的言語プログラムを生成するとき、その中間段階で経るようになる言語を意味する。例えば、高水準言語プログラムをアセンブリ言語に変えた後、これをアセンブルして機械語プログラムを生成するとき、中間のアセンブリ言語が中間言語となる。
特許文献1は、モバイルプラットフォームの中間言語変換装置およびその方法に関するものであって、CまたはC++言語で開発されたモバイルプラットフォームのソースコードを移動通信端末機のインタプリタで要求する中間言語コードに変換するC/C++コンパイラと、中間言語コードを移動通信端末機のインタプリタで実行されるフォーマットに変換する中間言語アセンブラについて開示している。
このような中間言語への変換を経るアプリケーションのコードは、その特性上、デコンパイル(decompile)に弱い。例えば、ユニティ(Unity)のようなツールによってCシャープ(C−sharp:C#)のようなプログラミング言語で製作されたアプリケーションのコードは、DLL(Dynamic Linking Library)のような中間言語の形態にコンパイルされてクライアントの電子機器に提供され、電子機器のフレームワークで実行されるようになる。このとき、このような中間言語の特性により、DLLをデコンパイルしてコードを修正した後でも再びDLLにコンパイルすることが可能であるため、アプリケーションを偽造・変造できてしまうという問題が存在する。
このような偽造・変造を防ぐために、中間言語形態のファイルを単純に暗号化してクライアントに提供するようになれば、クライアントの電子機器で暗号化されたファイルを実行することができずにアプリケーションの駆動が不可能となる。かといって、暗号化されたファイルを復号化するための手段(または情報、一例として復号化キー)がクライアントに提供されるようになれば、アプリケーションの偽造・変造の問題がまた浮上してしまう。
韓国公開特許第10−2007−0067953
アプリケーションの実行コードが含まれたファイルを暗号化しながらも、アプリケーションの駆動時に暗号化されたファイルを安全に復号化して実行することができると同時に、暗号化されたファイルを復号化するための情報が第三者やクライアントに露出されることを防ぐことができる、システムおよび方法を提供する。
コンピュータで実現される方法であって、アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信する段階(前記応用プログラムパッケージは、前記アプリケーションのコードがコンパイルされて生成された中間言語(Intermediate Language:IL)コードを含むファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルを含む)、前記中間言語コードを含むファイルのうちの少なくとも1つのファイルを暗号化する段階、および前記少なくとも1つの暗号化されたファイルの復号化のためのリカバリーファイルを前記応用プログラムパッケージに追加する段階(前記リカバリーファイルは、前記電子機器での前記アプリケーションの実行のために前記ライブラリファイル間の呼び出しによって前記少なくとも1つの暗号化されたファイルが伝達される場合に、前記少なくとも1つの暗号化されたファイルを復号化するためのコードを含む)を含むことを特徴とする、コンピュータで実現される方法を提供する。
一側によると、前記応用プログラムパッケージを受信する段階は、前記中間言語コードを含むファイルのうちの暗号化するためのファイルに関する情報をさらに受信し、前記少なくとも1つのファイルを暗号化する段階は、前記中間言語コードを含むファイルのうちの前記さらに受信された情報に対応するファイルを暗号化することを特徴としてよい。
他の側面によると、前記少なくとも1つのファイルは、前記実行環境のためのヘッダ部分および前記アプリケーションのためのコード部分を含み、前記少なくとも1つのファイルを暗号化する段階は、前記ヘッダ部分および前記コード部分のうちの少なくとも1つを暗号化することを特徴としてよい。
また他の側面によると、前記少なくとも1つのファイルを暗号化する段階は、前記ヘッダ部分を暗号化する場合、前記ヘッダ部分が含む情報をヌル(null)値に変更して暗号化することを特徴としてよい。
また他の側面によると、前記ライブラリファイルは、前記中間言語コードを含むファイルを読み込むためのコードを含む第1ライブラリファイルおよび前記第1ライブラリファイルに対するAPI(Application Programming Interface)コールによって前記中間言語コードを含むファイルのフルバッファ(full buffer)を読み取ってパースするためのコードを含む第2ライブラリファイルを含み、前記リカバリーファイルは、前記第2ライブラリファイルが含むコードに基づいて前記第1ライブラリファイルがAPIコールされることによって読み取られる前記少なくとも1つの暗号化されたファイルに対するフルバッファ(full buffer)を復号化し、前記少なくとも1つの暗号化されたファイルを復号化するためのコードを含むことを特徴としてよい。
また他の側面によると、前記リカバリーファイルは、前記第1ライブラリファイルのAPIに関する情報を含む前記第2ライブラリファイルのIAT(Import Address Table)をフッキング(hooking)し、前記第2ライブラリファイルが含むコードによる前記APIコールを確認するためのコードを含むことを特徴としてよい。
また他の側面によると、前記方法は、ネットワークを介した前記電子機器からの要請に応じ、前記リカバリーファイルが追加された前記応用プログラムパッケージを前記電子機器に送信する段階をさらに含むことを特徴としてよい。
コンピュータで実現される方法において、アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信する段階(前記応用プログラムパッケージは、前記アプリケーションのコードがコンパイルされて生成された中間言語(Intermediate Language:IL)コードを含み、暗号化された少なくとも1つのファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルおよび前記暗号化された少なくとも1つのファイルを復号化するためのリカバリーファイルを含む)、および前記アプリケーションの実行過程において、前記リカバリーファイルに含まれたコードの制御にしたがって前記アプリケーションの実行のために前記ライブラリファイル間の呼び出しによって前記少なくとも1つの暗号化されたファイルが伝達される場合に、前記少なくとも1つの暗号化されたファイルを復号化する段階を含むことを特徴とする、コンピュータで実現される方法を提供する。
1つ以上のプロセッサを含むサーバのシステムであって、前記1つ以上のプロセッサは、アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信するように前記サーバを制御する受信制御部(前記応用プログラムパッケージは、前記アプリケーションのコードがコンパイルされて生成された中間言語(Intermediate Language:IL)コードを含むファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルを含む)、前記中間言語コードを含むファイルのうちの少なくとも1つのファイルを暗号化するように前記サーバを制御する暗号化制御部、および前記少なくとも1つの暗号化されたファイルの復号化のためのリカバリーファイルを前記応用プログラムパッケージに追加するように前記サーバを制御するファイル追加制御部(前記リカバリーファイルは、前記電子機器での前記アプリケーションの実行のために前記ライブラリファイル間の呼び出しによって前記少なくとも1つの暗号化されたファイルが伝達される場合に、前記少なくとも1つの暗号化されたファイルを復号化するためのコードを含む)を備えることを特徴とする、システムを提供する。
1つ以上のプロセッサを含む電子機器のシステムであって、前記1つ以上のプロセッサは、アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信するように前記電子機器を制御する受信制御部(前記応用プログラムパッケージは、前記アプリケーションのコードがコンパイルされて生成された中間言語(Intermediate Language:IL)コードを含み、暗号化された少なくとも1つのファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルおよび前記暗号化された少なくとも1つのファイルを復号化するためのリカバリーファイルを含む)、および前記アプリケーションの実行過程において、前記リカバリーファイルに含まれたコードの制御にしたがって前記アプリケーションの実行のために前記ライブラリファイル間の呼び出によって前記少なくとも1つの暗号化されたファイルが伝達される場合に、前記少なくとも1つの暗号化されたファイルを復号化するように前記電子機器を制御する復号化制御部を備えることを特徴とする、システムを提供する。
アプリケーションの実行コードが含まれたファイルを暗号化しながらも、アプリケーションの駆動時に暗号化されたファイルを安全に復号化して実行することができると同時に、暗号化されたファイルを復号化するための情報が第三者やクライアントに露出されることを防ぐことができる。
本発明の一実施形態における、ネットワーク環境の例を示した図である。 本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。 本発明の一実施形態における、アプリケーションのコードの保護のための過程の例を示した図である。 本発明の一実施形態における、アプリケーションのコードの保護のための過程の例を示した図である。 本発明の一実施形態における、サーバのプロセッサが含むことのできる構成要素の例を示した図である。 本発明の一実施形態における、サーバが実行することのできる方法の例を示したフローチャートである。 本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示した図である。 本発明の一実施形態における、電子機器が実行することのできる方法の例を示したフローチャートである。
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような図1は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が図1のように限定されることはない。
複数の電子機器110、120、130、140は、コンピュータシステムによって実現される固定型端末や移動型端末であってよい。複数の電子機器110、120、130、140の例としては、スマートフォン、携帯電話、ナビゲーション、コンピュータ、ノート型パンコン、デジタル放送用端末、PDA(Personal Digital Assistants)、PMP(Portable Multimedia Player)、タブレットなどがある。一例として、電子機器1(110)は、無線または有線通信方式を利用し、ネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信してよい。
通信方式が制限されることはなく、ネットワーク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つ以上を含んでもよいが、これに制限されることはない。
サーバ150、160それぞれは、電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供する装置または複数の装置によって実現されてよい。
一例として、サーバ150は、ネットワーク170を介して接続した電子機器1(110)にアプリケーションのインストールのためのファイルを提供してよい。この場合、電子機器1(110)は、提供されたファイルを利用してアプリケーションをインストールしてよい。また、電子機器1(110)が含むオペレーティングシステム(Operating System:OS)および少なくとも1つのプログラム(一例として、ブラウザや前記インストールされたアプリケーション)の制御にしたがってサーバ160に接続し、サーバ160が提供するサービスやコンテンツの提供を受けてもよい。例えば、電子機器1(110)がアプリケーションの制御にしたがってネットワーク170を介してサービス要求メッセージをサーバ160に送信すると、サーバ160はサービス要求メッセージに対応するコードを電子機器1(110)に送信してよく、電子機器1(110)はアプリケーションの制御にしたがってコードに基づく画面を構成して表示することにより、ユーザにコンテンツを提供してよい。
図2は、本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。図2では、1つの電子機器に対する例として電子機器1(110)の内部構成を、1つのサーバに対する例としてサーバ(150)の内部構成を説明する。
電子機器1(110)とサーバ150は、メモリ211、221、プロセッサ212、222、通信モジュール213、223、および入力/出力インタフェース214、224を含んでよい。メモリ211、221は、コンピュータで読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永久大容量記憶装置を含んでよい。また、メモリ211、221には、オペレーティングシステムと、少なくとも1つのプログラムコード(一例として、電気機器1(110)にインストールされ駆動するブラウザや上述したアプリケーションなどのためのコード)が格納されてよい。このようなソフトウェア構成要素は、ドライブメカニズムを利用してメモリ211、221とは別のコンピュータで読み取り可能な記録媒体からロードされてよい。このような別のコンピュータで読み取り可能な記録媒体は、フロッピードライブ、ディスク、テープ、DVD/CD−ROMドライブ、メモリカードなどのコンピュータで読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータで読み取り可能な記録媒体ではない通信モジュール213、223を利用してメモリ211、221にロードされてもよい。例えば、少なくとも1つのプログラムは、開発者またはアプリケーションのインストールファイルを配布するファイル配布システム(一例として、上述したサーバ150)がネットワーク170を介して提供するファイルによってインストールされるプログラム(一例として、上述したアプリケーション)に基づいてメモリ211、221にロードされてよい。
プロセッサ212、222は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ211、221または通信モジュール213、223によって、プロセッサ212、222に提供されてよい。例えば、プロセッサ212、222は、メモリ211、221のような記録装置に格納されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
通信モジュール213、223は、ネットワーク170を介して電子機器1(110)とサーバ150とが互いに通信するための機能を提供してもよいし、他の電子機器(一例として、電子機器2(120))または他のサーバ(一例として、サーバ160)と通信するための機能を提供してもよい。一例として、電子機器1(110)のプロセッサ212がメモリ211のような記録装置に格納されたプログラムコードにしたがって生成した要求(一例として、コンテンツに対するストリーミングサービス要請)が、通信モジュール213の制御にしたがいネットワーク170を介してサーバ150に伝達されてよい。これとは逆に、サーバ150のプロセッサ222の制御にしたがって提供される制御信号や命令、コンテンツ、ファイルなどが、通信モジュール223とネットワーク170を経て電子機器1(110)の通信モジュール213を通じて電子機器1(110)に受信されてよい。例えば、モジュール213を通じて受信されたサーバ150の制御信号や命令などは、プロセッサ212やメモリ211に伝達されてよく、コンテンツやファイルなどは、電子機器1(110)がさらに含むことのできる格納媒体に格納されてよい。
入力/出力インタフェース214、224は、入力/出力装置215とのインタフェースのための手段であってよい。例えば、入力装置は、キーボードまたはマウスなどの装置を、出力装置は、アプリケーションの通信セッションを表示するためのディスプレイのような装置を含んでよい。他の例として、入力/出力インタフェース214は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってよい。より具体的な例として、電子機器1(110)のプロセッサ212は、メモリ211にロードされたコンピュータプログラムの命令を処理するにあたり、サーバ150や電子機器2(120)が提供するデータを利用して構成されるサービス画面やコンテンツが入力/出力インタフェース214を通じてディスプレイに表示されてよい。
また、他の実施形態において、電子機器1(110)とサーバ150は、図2の構成要素よりもさらに多くの構成要素を含んでもよい。しかし、大部分の従来技術構成要素を明確に図に示す必要はない。例えば、電子機器1(110)は、上述した入力/出力装置215のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ、GPS(Global Positioning System)モジュール、カメラ、各種センサなどのような他の構成要素をさらに含んでもよい。
図3および図4は、本発明の一実施形態における、アプリケーションのコードの保護のための過程の例を示した図である。図3は、ユニティ(Unity)ツールによって開発されたゲームのアンドロイドアプリケーションパッケージ(Android application package:APK300)がサーバ150に送信される過程を示している。アンドロイドにおいて、ユニティツールで作成されたアプリケーションのコードは、DLL(Dynamic Linking Library)にコンパイルされてよい。図3では、DLLにコンパイルされて生成された4つのDLLファイル(UnityEngine.dll310、AssemblyCSharp.dll320、AssemblyCSharp−firstpass.dll330、およびAssembly−UnityScript−firstpass.dll340)を示しており、単一フレームワークの単一実行時間環境でDLLファイル310〜340に含まれるコードが実行されるように動作する3つのライブラリファイル(libmain.so350、libunity.so360、およびlibmono.so370)を示している。libmain.so350は、libunity.so360およびlibmono.so370をログして初期化作業を実行させるコードを含んでよく、ユニティツールで配布されてよい。libunity.so360は、DLLファイル310〜340それぞれをログしてゲームコードを実行するコードを含んでよく、libmono.so370は、オープンソースドットネットフレームワークによってアンドロイドでDLLファイル310〜340をロードするようにするコードを含んでよい。例えば、アンドロイドOSは、Linux(登録商標)カーネルを含んでよく、ドットネットフレームワークは、Linuxカーネル上で動作する仮想マシンでlibunity.so360が含むコードによってDLLファイル310〜340が含むゲームコードを実行することのできる実行環境を提供してよい。このようなライブラリファイル350〜370は公知であるため、具体的な説明は省略する。
サーバ150は、APK300を保護するためのシステムを含んでよい。サーバ150は、APK300を受信すると、APK300が含むDLLファイル310〜340のうちの少なくとも1つのファイルを暗号化してよい。一般的にDLLファイルは、ドットネットヘッダ(.NET header)部分とコード部分を含んでよく、サーバ150は、ドットネットヘッダ(.NET header)部分とコード部分のうちの少なくとも1つを暗号化してよい。例えば、ドットネットヘッダ(.NET header)部分の値をヌル(null)値に置換してしまうと、該当のDLLファイルに対するデコンパイル自体が不可能になり得る。同じように、コード部分を暗号化してしまうと、デコンパイルによって本来のコード(コンパイル前のコード)を得ることができなくなる。したがって、サーバ150は、ドットネットヘッダ(.NET header)部分だけを暗号化するか、コード部分だけを暗号化するか、ドットネットヘッダ(.NET header)部分とコード部分を暗号化してよい。
図4は、図3でAssemblyCSharp.dll320およびAssembly−UnityScript−firstpass.dll340が暗号化されたことで、暗号化されたAssemblyCSharp.dll410および暗号化されたAssembly−UnityScript−firstpass.dll420を含むAPK400が生成された例を示している。
上述したように、DLLファイル自体が暗号化されると、APK400を受信したクライアント(一例として、電子機器1(110))は、DLLファイルでゲームコードを読み取ることができないため、アプリケーションを実行することができなくなる。したがって、サーバ150は、暗号化されたDLLファイルを復号化するためのライブラリファイルであるリカバリーファイル(図4のrecovery.so440)をAPK400に追加してよい。また、アプリケーションの実行時にrecovery.so440がログされるようにlibmain.so350にリカバリーファイル440をロードすることのできるコード(図4のloadrecovery.socode431)を追加し、新たなライブラリファイル(図4のlibmain.so430)を生成してよい。図4に示すように、APK400は、既存のライブラリファイルlibmain.so350の代りに新たなライブラリファイルlibmain.so430を含んでよい。
少なくとも1つのファイルが暗号化されて保護されたAPK400は、サーバ150から電子機器1(110)に直ぐに送信されてもよいし、別のファイル配布システムを経て電子機器1(110)に送信されてもよい。
電子機器1(110)では、APK400が含むコードの制御にしたがってアプリケーションを実行してよい。以下では、説明の便宜のために、ファイルが特定の過程を実行する例について説明するが、実質的には、該当のファイルが含むコードの制御にしたがって電子機器1(110)のプロセッサ212が該当の過程を実行することであってよい。
アプリケーションの実行が要請されると、libmain.so430は、libunity.so360およびlibmono.so370をログして初期化作業を実行してよい。また、libmain.so430は、libmain.so430に含まれたloadrecovery.socode431を利用してrecovery.so440をログして初期化作業を実行してよい。
recovery.so440は、libunity.so360をフッキング(hooking)してlibmono.so370がDLLファイル310、410、330、420をロードするときに、暗号化されたDLLファイル410、420のフルバッファ(full buffer)を制御して暗号化されたDLLファイル410、420を復号化してよい。例えば、libunity.so360は、DLLファイル310、410、330、420のフルバッファを読み取り、フルバッファを因子としてlibmono.so370のAPIを呼び出してDLLを単一フレームワークにロードさせてよい。一般的に、DLLファイルは、ウィンドウPE(Portable Executable)ファイルフォーマットを有しており、上述したように内部的にドットネットヘッダを含んでいる。このようなDLファイルは、オープンソースであるドットネットフレームワーク(上述した単一フレームワーク)によって実行されてよく、PE(Portable Executable)ファイルフォーマットのパース(parsing)とドットネットのパース過程を経るようになる。このような過程は、libunity.so360からlibmono.so370のAPIを呼び出することで起こるようになる。このために、libunity.so360はIAT(Import Address Table)を含んでよく、recovery.so440は、libunity.so360のIATをフッキングしてlibunity.so360が暗号化されたDLLファイル410、420のロードのためにlibmono.so370のAPIコールを確認してよい。また、recovery.so440は、フルバッファからドットネットヘッダ部分とコード部分を探し出して暗号化された部分を復号化してよい。例えば、DLLファイルのドットネットヘッダは、特定値から始まる。したがって、recovery.so440は、DLLファイルをドットネットフレームワークにロードするときに、ドットネットヘッダが予め設定されている値から始まらない場合には、該当のDLLファイルが暗号化されていると判断し、復号化を実行してよい。
したがって、アプリケーションの実行コードが含まれたファイルを暗号化しながらも、アプリケーションの駆動時に暗号化されたファイルを安全に復号化して実行することが可能となる。特に、復号化のための情報が、DLLとは異なる低水準言語で作成されたライブラリファイルの形態で提供されるため、クライアントや第三者に復号化のための情報が露出されることを防ぐことができる。
図5は、本発明の一実施形態における、サーバのプロセッサが含むことのできる構成要素の例を示した図であり、図6は、本発明の一実施形態における、サーバが実行することのできる方法の例を示したフローチャートである。図5に示すように、サーバ150のプロセッサ222は、受信制御部510、暗号化制御部520、およびファイル追加制御部530を備えてよく、実施形態によって選択的に送信制御部540をさらに備えてもよい。このようなプロセッサ222の構成要素は、図6の方法が含む段階610〜640を実行するようにサーバ150を制御してよく、このような制御のためにメモリ221が含むオペレーティングシステムと少なくとも1つのプログラムコードに基づいて動作するように実現されてよい。段階640は、実施形態によって選択的に実行されてよい。
段階610で、サーバ150は、アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信してよい。ここで、応用プログラムパッケージは、アプリケーションのコードがコンパイルされて生成された中間言語(Intermediate Language:IL)コードを含むファイルおよび中間言語コードによってアプリケーションを実行するように電子機器(一例として、電子機器1(110))に実行環境を提供するためのライブラリファイルを含んでよい。例えば、応用プログラムパッケージは、図3の実施形態で説明したAPK300に対応してよく、中間言語コードを含むファイルは、DLLファイル310〜340に対応してよい。また、ライブラリファイルは、図3のライブラリファイル350〜370に対応してよい。受信制御部510は、段階610を実行するようにサーバ150を制御してよい。
このとき、応用プログラムパッケージに含まれたファイルのうちの暗号化するためのファイルは、サーバ150で選択されてもよいが、開発者によって選択されてもよい。この場合、サーバ150は、段階610で、中間言語コードを含むファイルのうちの暗号化するためのファイルに関する情報をさらに受信してよい。例えば、サーバ150は、応用プログラムパッケージをアップロードしようとする開発者に応用プログラムパッケージのアップロードのための第1ユーザインタフェースおよび暗号化するファイルを選択するための第2ユーザインタフェースが含まれたウェプページを提供してよい。このとき、第1ユーザインタフェースを通じて応用プログラムパッケージをアップロードした開発者が第2ユーザインタフェースを通じて暗号化するファイルを選択した場合、選択されたファイルに関する情報がサーバ150にさらに伝達されてよい。
このようなサーバ150は、既に開発されたアプリケーションのための応用プログラムパッケージを受信してこれを保護するためにDLLファイルを暗号化するシステムであってよい。このとき、サーバ150は、アプリケーションの開発者のシステムであっても、開発者から応用プログラムパッケージを受信してDLLファイルを暗号化する第三者のシステムであっても、開発者の応用プログラムパッケージを受信してユーザに配布するファイル配布システムであってもよい。
段階620で、サーバ150は、中間言語コードを含むファイルのうちの少なくとも1つのファイルを暗号化してよい。暗号化制御部520は、段階620を実行するようにサーバ150を制御してよい。中間言語コードを含むファイルそれぞれは、実行環境のためのヘッダ部分およびアプリケーションのためのコード部分を含んでよい。この場合、サーバ150は、段階620で、ヘッダ部分およびコード部分のうちの少なくとも1つを暗号化してよい。上述したように、ヘッダ部分を暗号化する場合には中間言語コードに対するデコンパイル自体が不可能となり、コード部分を暗号化する場合にはデコンパイルによって本来のソースを確認することができなくなるため、ヘッダ部分やコード部分のうちの1つだけを暗号化しても、中間言語コードを含むファイルを保護することができる。また、ヘッダ部分とコード部分の両方を暗号化してもよい。ヘッダ部分を暗号化する場合、サーバ150は、ヘッダ部分が含む情報をヌル(null)値に変更して暗号化してよい。
段階630で、サーバ150は、少なくとも1つの暗号化されたファイルの復号化のためのリカバリーファイルを応用プログラムパッケージに追加してよい。ここで、リカバリーファイルは、電子機器でのアプリケーションの実行のためにライブラリファイル間の呼び出しによって少なくとも1つの暗号化されたファイルが伝達される場合に、少なくとも1つの暗号化されたファイルを復号化するためのコードを含んでよい。ファイル追加制御部530は、段階630を実行するようにサーバ150を制御してよい。
上述したように、少なくとも1つの暗号化されたファイルは、ライブラリファイルがアプリケーションの実行環境(一例として、ドットネットフレームワーク、単一フレームワーク、またはCLR(Common Language Runtime))に中間言語コードを含むファイルをロードするため、ライブラリファイル間の呼び出しによって少なくとも1つの暗号化されたファイルが伝達される場合のように、アプリケーションの実行時にリカバリーファイルが含むコードに基づいて電子機器が復号化を実行できるようにすることにより、中間言語コードのデコンパイルを防ぎながらも復号化のための情報が露出されないようにすることができる。
このために、ライブラリファイルは、中間言語コードを含むファイルを呼び込むためのコードを含む第1ライブラリファイルおよび第1ライブラリファイルに対するAPI(Application Programming Interface)コールによって中間言語コードを含むファイルのフルバッファ(full buffer)を読み取ってパースするためのコードを含む第2ライブラリファイルを含んでよい。また、リカバリーファイルは、第2ライブラリファイルが含むコードによって第1ライブラリファイルがAPIコールされることによって読み取られる少なくとも1つの暗号化されたファイルに対するフルバッファ(full buffer)を復号化し、少なくとも1つの暗号化されたファイルを復号化するためのコードを含んでよい。例えば、第1ライブラリファイルは図3および図4を参照しながら説明したlibmono.so370に対応してよく、第2ライブラリファイルはlibunity.so360に対応してよく、リカバリーファイルはrecovery.so440に対応してよい。
より具体的に説明すると、リカバリーファイルは、第1ライブラリファイルのAPIに関する情報を含む第2ライブラリファイルのIAT(Import Address Table)をフッキング(hooking)して第2ライブラリファイルが含むコードによるAPIコールを確認するためのコードを含んでよい。IATは、第2ライブラリファイルが中間言語コードを含むファイルを読み取ることによって生成されてよい。
段階640で、サーバ150は、ネットワークを介した電子機器からの要請に応じ、リカバリーファイルが追加された応用プログラムパッケージを電子機器に送信してよい。送信制御部540は、段階640を実行するようにサーバ150を制御してよい。電子機器に送信された応用プログラムパッケージは、電子機器にインストールされてよく、アプリケーションの駆動(実行)時には上述した復号化過程が電子機器で行われてよい。
図7は、本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示した図であり、図8は、本発明の一実施形態における、電子機器が実行することのできる方法の例を示したフローチャートである。図7に示すように、電子機器1(110)のプロセッサ212は、受信制御部710および復号化制御部720を備えてよい。このようなプロセッサ212の構成要素は、図8の方法が含む段階810および820を実行するように電子機器1(110)を制御してよく、このような制御のためにメモリ211が含むオペレーティングシステムと少なくとも1つのプログラムコードに基づいて動作するように実現されてよい。このとき、少なくとも1つのプログラムコードは、段階820の処理のために電子機器1(110)が段階810で受信する応用プログラムパッケージに含まれたコードを含んでよい。
段階810で、子機器1(110)は、プリケーションのためのファイルが含まれた応用プログラムパッケージを受信してよい。受信制御部710は、段階810を実行するように電子機器1(110)を制御してよい。このとき、応用プログラムパッケージには、アプリケーションのコードがコンパイルされて生成された中間言語(Intermediate Language:IL)コードを含み、暗号化された少なくとも1つのファイルおよび中間言語コードによってアプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルおよび暗号化された少なくとも1つのファイルを復号化するためのリカバリーファイルが含まれてよい。
段階820で、電子機器1(110)は、アプリケーションの実行過程において、リカバリーファイルに含まれたコードの制御にしたがってアプリケーションの実行のためにライブラリファイル間の呼び出しによって少なくとも1つの暗号化されたファイルが伝達される場合に、少なくとも1つの暗号化されたファイルを復号化してよい。
上述したように、ライブラリファイルは、中間言語コードを含むファイルを読み込むためのコードを含む第1ライブラリファイルおよび第1ライブラリファイルに対するAPI(Application Programming Interface)呼び出しによって中間言語コードを含むファイルのフルバッファ(full buffer)を読み取ってパースするためのコードを含む第2ライブラリファイルを含んでよい。このとき、電子機器1(110)は、段階820で、第2ライブラリファイルが含むコードに基づいて第1ライブラリファイルがAPIコールされることによって読み取られる少なくとも1つの暗号化されたファイルに対するフルバッファ(full buffer)をリカバリーファイルが含むコードの制御にしたがって復号化し、少なくとも1つの暗号化されたファイルを復号化してよい。言い換えれば、アプリケーションの実行過程において、第2ライブラリファイルに基づいて第1ライブラリファイルのAPIを呼び出すにことよって中間言語コードを含むファイルが実行環境にロードされてよく、このとき、電子機器1(110)は、リカバリーファイルが含むコードの制御にしたがって実行環境にロードされる少なくとも1つの暗号化されたファイルに対するフルバッファを復号化し、暗号化されたファイルを復号化してよい。少なくとも1つの暗号化されたファイルは、ヘッダ部分とコード部分のうちの少なくとも1つが暗号化されたファイルであることは上述したとおりであり、電子機器1(110)は、リカバリーファイルが含むコードの制御にしたがって暗号化された部分を復号化してよい。
また、電子機器1(110)は、リカバリーファイルが含むコードの制御にしたがって第1ライブラリファイルに対するAPIに関する情報を含む第2ライブラリファイルのIAT(Import Address Table)をフッキング(hooking)し、第2ライブラリファイルが含むコードによるAPIコールを確認してよい。
また、電子機器1(110)は、少なくとも1つの暗号化されたファイルのヘッダ部分が予め設定された値で始まるかによって少なくとも1つの暗号化されたファイルの暗号化の可否を確認してもよい。上述したように、DLLファイルのようなファイルのヘッダは予め設定された値で始まることから、ヘッダが予め設定された値で始まるかによって該当のファイルの暗号化の可否が確認されてよい。
このように、本発明の実施形態によると、アプリケーションの実行コードが含まれたファイルを暗号化しながらも、アプリケーションの駆動時に暗号化されたファイルを安全に復号化して実行することができると同時に、暗号化されたファイルを復号化するための情報が第三者やクライアントに露出されることを防ぐことができる。
上述した装置は、ハードウェア構成要素、ソフトウェア構成要素、および/またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)および前記OS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置、コンピュータ格納媒体または装置、または伝送される信号波に永久的または一時的に具現化されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で格納されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータで読み取り可能な記録媒体に格納されてよい。
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータで読み取り可能な媒体に記録されてよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであってもよいし、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータで読み取り可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD−ROM、DVDのような光媒体、フロプティカルディスクのような光磁気媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。上述したハードウェア装置は、実施形態の動作を実行するために1つ以上のソフトウェアモジュールとして動作するように構成されてもよく、その逆も同じである。
以上のように、実施形態を、限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
222:プロセッサ
510:受信制御部
520:暗号化制御部
530:ファイル追加制御部
540:送信制御部

Claims (20)

  1. コンピュータで実現される方法であって、
    アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信する段階であって、前記応用プログラムパッケージは、前記アプリケーションのコードがコンパイルされて生成された中間言語コードを含むファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルを含む、段階、
    前記中間言語コードを含むファイルのうちの少なくとも1つのファイルを暗号化する段階、および
    前記少なくとも1つの暗号化されたファイルの復号化のためのリカバリーファイルを前記応用プログラムパッケージに追加する段階であって、前記リカバリーファイルは、前記電子機器での前記アプリケーションの実行のために前記ライブラリファイル間の呼び出しによって前記少なくとも1つの暗号化されたファイルが伝達される場合に、前記少なくとも1つの暗号化されたファイルを復号化するためのコードを含む、段階、
    を含むことを特徴とする、コンピュータで実現される方法。
  2. 前記応用プログラムパッケージを受信する段階は、
    前記中間言語コードを含むファイルのうちの暗号化するためのファイルに関する情報をさらに受信し、
    前記少なくとも1つのファイルを暗号化する段階は、
    前記中間言語コードを含むファイルのうちの前記さらに受信した情報に対応するファイルを暗号化することを特徴とする、請求項1に記載のコンピュータで実現される方法。
  3. 前記少なくとも1つのファイルは、前記実行環境のためのヘッダ部分および前記アプリケーションのためのコード部分を含み、
    前記少なくとも1つのファイルを暗号化する段階は、
    前記ヘッダ部分および前記コード部分のうちの少なくとも1つを暗号化することを特徴とする、請求項1に記載のコンピュータで実現される方法。
  4. 前記少なくとも1つのファイルを暗号化する段階は、
    前記ヘッダ部分を暗号化する場合、前記ヘッダ部分が含む情報をヌル値に変更して暗号化することを特徴とする、請求項3に記載のコンピュータで実現される方法。
  5. 前記ライブラリファイルは、前記中間言語コードを含むファイルを呼び込むためのコードを含む第1ライブラリファイルおよび前記第1ライブラリファイルに対するAPI(Application Programming Interface)コールによって前記中間言語コードを含むファイルのフルバッファを読み取ってパースするためのコードを含む第2ライブラリファイルを含み、
    前記リカバリーファイルは、前記第2ライブラリファイルが含むコードに基づいて前記第1ライブラリファイルがAPIコールされることによって読み取られる前記少なくとも1つの暗号化されたファイルに対するフルバッファを復号化し、前記少なくとも1つの暗号化されたファイルを復号化するためのコードを含むことを特徴とする、請求項1に記載のコンピュータで実現される方法。
  6. 前記リカバリーファイルは、前記第1ライブラリファイルのAPIに関する情報を含む前記第2ライブラリファイルのIAT(Import Address Table)をフッキングし、前記第2ライブラリファイルが含むコードによる前記APIコールを確認するためのコードを含むことを特徴とする、請求項5に記載のコンピュータで実現される方法。
  7. ネットワークを介した前記電子機器からの要請に応じ、前記リカバリーファイルが追加された前記応用プログラムパッケージを前記電子機器に送信する段階
    をさらに含むことを特徴とする、請求項1に記載のコンピュータで実現される方法。
  8. コンピュータで実現される方法であって、
    アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信する段階であって、前記応用プログラムパッケージは、前記アプリケーションのコードがコンパイルされて生成された中間言語コードを含み、暗号化された少なくとも1つのファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルおよび前記暗号化された少なくとも1つのファイルを復号化するためのリカバリーファイルを含む、段階、および
    前記アプリケーションの実行過程において、前記リカバリーファイルに含まれたコードの制御にしたがって前記アプリケーションの実行のために前記ライブラリファイル間の呼び出しによって前記少なくとも1つの暗号化されたファイルが伝達される場合に、前記少なくとも1つの暗号化されたファイルを復号化する段階
    を含むことを特徴とする、コンピュータで実現される方法。
  9. 前記ライブラリファイルは、前記中間言語コードを含むファイルを呼び込むためのコードを含む第1ライブラリファイルおよび前記第1ライブラリファイルに対するAPI(Application Programming Interface)コールによって前記中間言語コードを含むファイルのフルバッファを読み取ってパースするためのコードを含む第2ライブラリファイルを含み、
    前記復号化する段階は、
    前記第2ライブラリファイルが含むコードに基づいて前記第1ライブラリファイルがAPIコールされることによって読み取られる前記少なくとも1つの暗号化されたファイルに対するフルバッファを前記リカバリーファイルが含むコードの制御にしたがって復号化し、前記少なくとも1つの暗号化されたファイルを復号化することを特徴とする、請求項8に記載のコンピュータで実現される方法。
  10. 前記復号化する段階は、
    前記リカバリーファイルが含むコードの制御にしたがって前記第1ライブラリファイルのAPIに関する情報を含む前記第2ライブラリファイルのIAT(Import Address Table)をフッキングし、前記第2ライブラリファイルが含むコードによる前記APIコールを確認することを特徴とする、請求項9に記載のコンピュータで実現される方法。
  11. 前記復号化する段階は、
    前記少なくとも1つの暗号化されたファイルのヘッダ部分が予め設定された値で始まるかによって前記少なくとも1つの暗号化されたファイルの暗号化の可否を確認することを特徴とする、請求項8に記載のコンピュータで実現される方法。
  12. 請求項1〜11のうちのいずれか一項に記載の方法を実行するためのプログラムが記録されていることを特徴とする、コンピュータで読み取り可能な記録媒体。
  13. 1つ以上のプロセッサを含むサーバのシステムであって、
    前記1つ以上のプロセッサは、
    アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信するように前記サーバを制御する受信制御部であって、前記応用プログラムパッケージは、前記アプリケーションのコードがコンパイルされて生成された中間言語コードを含むファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルを含む、受信制御部、
    前記中間言語コードを含むファイルのうちの少なくとも1つのファイルを暗号化するように前記サーバを制御する暗号化制御部、および
    前記少なくとも1つの暗号化されたファイルの復号化のためのリカバリーファイルを前記応用プログラムパッケージに追加するように前記サーバを制御するファイル追加制御部であって、前記リカバリーファイルは、前記電子機器での前記アプリケーションの実行のために前記ライブラリファイル間の呼び出しによって前記少なくとも1つの暗号化されたファイルが伝達される場合に、前記少なくとも1つの暗号化されたファイルを復号化するためのコードを含む、ファイル追加制御部
    を含むことを特徴とする、システム。
  14. 前記受信制御部は、
    前記中間言語コードを含むファイルのうちの暗号化するためのファイルに関する情報をさらに受信するように前記サーバを制御し、
    前記暗号化制御部は、
    前記中間言語コードを含むファイルのうちの前記さらに受信した情報に対応するファイルを暗号化するように前記サーバを制御することを特徴とする、請求項13に記載のシステム。
  15. 前記少なくとも1つのファイルは、前記実行環境のためのヘッダ部分および前記アプリケーションのためのコード部分を含み、
    前記暗号化制御部は、
    前記ヘッダ部分および前記コード部分のうちの少なくとも1つを暗号化するように前記サーバを制御することを特徴とする、請求項13に記載のシステム。
  16. 前記ライブラリファイルは、前記中間言語コードを含むファイルを呼び込むためのコードを含む第1ライブラリファイルおよび前記第1ライブラリファイルに対するAPI(Application Programming Interface)コールによって前記中間言語コードを含むファイルのフルバッファを読み取ってパースするためのコードを含む第2ライブラリファイルを含み、
    前記リカバリーファイルは、前記第2ライブラリファイルが含むコードに基づいて前記第1ライブラリファイルがAPIコールされることによって読み取られる前記少なくとも1つの暗号化されたファイルに対するフルバッファを復号化し、前記少なくとも1つの暗号化されたファイルを復号化するためのコードを含むことを特徴とする、請求項13に記載のシステム。
  17. ネットワークを介した前記電子機器からの要請に応じ、前記リカバリーファイルが追加された前記応用プログラムパッケージを前記電子機器に送信するように前記サーバを制御する送信制御部
    をさらに備えることを特徴とする、請求項13に記載のシステム。
  18. 1つ以上のプロセッサを含む電子機器のシステムであって、
    前記1つ以上のプロセッサは、
    アプリケーションのためのファイルが含まれた応用プログラムパッケージを受信するように前記電子機器を制御する受信制御部であって、前記応用プログラムパッケージは、前記アプリケーションのコードがコンパイルされて生成された中間言語コードを含み、暗号化された少なくとも1つのファイルおよび前記中間言語コードによって前記アプリケーションを実行するように電子機器に実行環境を提供するためのライブラリファイルおよび前記暗号化された少なくとも1つのファイルを復号化するためのリカバリーファイルを含む、および
    前記アプリケーションの実行過程において、前記リカバリーファイルに含まれたコードの制御にしたがって前記アプリケーションの実行のために前記ライブラリファイル間の呼び出しによって前記少なくとも1つの暗号化されたファイルが伝達される場合に、前記少なくとも1つの暗号化されたファイルを復号化するように前記電子機器を制御する復号化制御部
    を備えることを特徴とする、システム。
  19. 前記ライブラリファイルは、前記中間言語コードを含むファイルを呼び込むためのコードを含む第1ライブラリファイルおよび前記第1ライブラリファイルに対するAPI(Application Programming Interface)コールによって前記中間言語コードを含むファイルのフルバッファを読み取ってパースするためのコードを含む第2ライブラリファイルを含み、
    前記復号化制御部は、
    前記第2ライブラリファイルが含むコードに基づいて前記第1ライブラリファイルがAPIコールされることによって読み取られる前記少なくとも1つの暗号化されたファイルに対するフルバッファを前記リカバリーファイルが含むコードの制御にしたがって復号化し、前記少なくとも1つの暗号化されたファイルを復号化するように前記電子機器を制御することを特徴とする、請求項18に記載のシステム。
  20. 前記復号化制御部は、
    前記少なくとも1つの暗号化されたファイルのヘッダ部分が予め設定された値で始まるかによって前記少なくとも1つの暗号化されたファイルの暗号化の可否を確認することを特徴とする、請求項18に記載のシステム。
JP2018506544A 2015-08-10 2016-08-04 アプリケーションのコードを保護するためのシステム、方法およびプログラム Active JP6815386B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR1020150112740A KR101740133B1 (ko) 2015-08-10 2015-08-10 어플리케이션의 코드를 보호하기 위한 시스템 및 방법
KR10-2015-0112740 2015-08-10
PCT/KR2016/008587 WO2017026738A1 (ko) 2015-08-10 2016-08-04 어플리케이션의 코드를 보호하기 위한 시스템 및 방법

Publications (3)

Publication Number Publication Date
JP2018527664A true JP2018527664A (ja) 2018-09-20
JP2018527664A5 JP2018527664A5 (ja) 2019-09-12
JP6815386B2 JP6815386B2 (ja) 2021-01-20

Family

ID=57984491

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018506544A Active JP6815386B2 (ja) 2015-08-10 2016-08-04 アプリケーションのコードを保護するためのシステム、方法およびプログラム

Country Status (3)

Country Link
JP (1) JP6815386B2 (ja)
KR (1) KR101740133B1 (ja)
WO (1) WO2017026738A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018194196A1 (ko) * 2017-04-20 2018-10-25 라인 가부시키가이샤 Elf 파일의 난독화 적용 여부의 탐지 및 보안성 평가를 위한 방법 및 시스템
JP7131946B2 (ja) 2017-04-20 2022-09-06 Line株式会社 アプリケーションの保安性を評価する方法およびシステム
WO2018194198A1 (ko) * 2017-04-20 2018-10-25 라인 가부시키가이샤 Pe 파일의 난독화 적용 여부의 탐지 및 보안성 평가를 위한 방법 및 시스템
WO2018199366A1 (ko) * 2017-04-28 2018-11-01 라인 가부시키가이샤 덱스 파일의 난독화 적용 여부의 탐지 및 보안성 평가를 위한 방법 및 시스템
CN111273943A (zh) * 2018-12-04 2020-06-12 北京嘀嘀无限科技发展有限公司 应用文件的生成方法、装置及电子设备
CN110472425A (zh) * 2019-07-18 2019-11-19 福建天晴在线互动科技有限公司 基于Mono的Unity插件加密方法、存储介质
CN110619220B (zh) * 2019-08-09 2022-03-11 北京小米移动软件有限公司 对神经网络模型加密的方法及装置、存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625690A (en) * 1993-11-15 1997-04-29 Lucent Technologies Inc. Software pay per use system
JP2007172526A (ja) * 2005-12-26 2007-07-05 Nippon Computer Co Ltd 情報処理システム、情報処理方法
JP2007328541A (ja) * 2006-06-07 2007-12-20 Canon Inc 電子機器
JP2013511077A (ja) * 2009-11-13 2013-03-28 イルデト カナダ コーポレーション 悪意ある実行環境内での静的および動的攻撃からJavaバイトコードを保護するシステムおよび方法
US8887152B1 (en) * 2011-11-04 2014-11-11 Trend Micro, Inc. Android application virtual environment
US8892876B1 (en) * 2012-04-20 2014-11-18 Trend Micro Incorporated Secured application package files for mobile computing devices
WO2015026091A1 (ko) * 2013-08-22 2015-02-26 (주)잉카엔트웍스 공통 중간 언어 기반 프로그램을 위한 보안 제공 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4727366B2 (ja) * 2005-09-28 2011-07-20 株式会社デジタル 情報処理装置、情報処理システム、プログラムおよび記録媒体
KR101092373B1 (ko) * 2010-01-07 2011-12-09 한국과학기술연구원 소프트웨어 패키지의 생성 및 설치를 위한 시스템 및 방법
CN102236757A (zh) * 2011-06-30 2011-11-09 北京邮电大学 一种适用于Android系统的软件保护方法及系统
KR101472346B1 (ko) * 2012-05-24 2014-12-16 주식회사 엘지유플러스 암호화된 웹 어플리케이션 제공 방법, 이를 지원하는 단말, 및 이를 위한 기록매체
KR101391982B1 (ko) * 2012-08-28 2014-05-07 바른소프트기술 주식회사 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625690A (en) * 1993-11-15 1997-04-29 Lucent Technologies Inc. Software pay per use system
JP2007172526A (ja) * 2005-12-26 2007-07-05 Nippon Computer Co Ltd 情報処理システム、情報処理方法
JP2007328541A (ja) * 2006-06-07 2007-12-20 Canon Inc 電子機器
JP2013511077A (ja) * 2009-11-13 2013-03-28 イルデト カナダ コーポレーション 悪意ある実行環境内での静的および動的攻撃からJavaバイトコードを保護するシステムおよび方法
US8887152B1 (en) * 2011-11-04 2014-11-11 Trend Micro, Inc. Android application virtual environment
US8892876B1 (en) * 2012-04-20 2014-11-18 Trend Micro Incorporated Secured application package files for mobile computing devices
WO2015026091A1 (ko) * 2013-08-22 2015-02-26 (주)잉카엔트웍스 공통 중간 언어 기반 프로그램을 위한 보안 제공 방법

Also Published As

Publication number Publication date
JP6815386B2 (ja) 2021-01-20
KR101740133B1 (ko) 2017-05-26
WO2017026738A1 (ko) 2017-02-16
KR20170018744A (ko) 2017-02-20

Similar Documents

Publication Publication Date Title
JP6815385B2 (ja) アプリケーションのコード難読化のためのシステムおよび方法
JP6815386B2 (ja) アプリケーションのコードを保護するためのシステム、方法およびプログラム
US10255443B2 (en) Method, apparatus, system and non-transitory computer readable medium for code protection
JP6490598B2 (ja) コンパイラベースの難読化
US10218790B2 (en) Providing access to a resource for a computer from within a restricted network
CN111143869B (zh) 应用程序包处理方法、装置、电子设备及存储介质
US9479328B1 (en) Secure key provisioning
US20180067777A1 (en) Application protection method, server, and terminal
CN109891415B (zh) 针对未经授权的客户端应用程序保护Web服务器
CN113568680B (zh) 应用程序的动态链接库保护方法、装置、设备及介质
WO2016201853A1 (zh) 加解密功能的实现方法、装置及服务器
US20170005798A1 (en) Binding software application bundles to a physical execution medium
JP6935617B2 (ja) 中間言語ファイルのロード速度改善のための方法およびシステム
CN114547558A (zh) 授权方法、授权控制方法及装置、设备和介质
KR101823226B1 (ko) 코드 보호 방법 및 시스템
KR20100036298A (ko) 임베디드 및 모바일 기기에서 특정 런타임 기반의 콘텐츠를 다른 기종의 단말에서 구동하는 방법
JP6279040B2 (ja) オーバーレイ制御方法およびシステム
KR101701625B1 (ko) 암호화된 컨텐츠의 복호화 키를 안전하게 획득하여 컨텐츠를 재생하기 위한 방법 및 시스템
WO2020187008A1 (zh) 服务调用控制方法、服务调用方法、装置及终端
JP7015120B2 (ja) アプリケーションパッケージを提供する方法およびシステム、アプリケーションを実行する方法およびシステム
KR101745821B1 (ko) 시큐어 부팅 방법 및 시스템
US20090300583A1 (en) Apparatus, Method, and Computer Program Product for Performing a Software Build
CN109784085B (zh) 虚拟网络应用实现方法及管理系统、计算机可读存储介质
KR20210151077A (ko) 메모리상에서 실행 가능 이미지를 적재하는 방법 및 시스템
KR20240010048A (ko) 소프트웨어 이용 시스템 및 소프트웨어 이용 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190731

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190731

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200616

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20201201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201222

R150 Certificate of patent or registration of utility model

Ref document number: 6815386

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350