JP6935617B2 - 中間言語ファイルのロード速度改善のための方法およびシステム - Google Patents

中間言語ファイルのロード速度改善のための方法およびシステム Download PDF

Info

Publication number
JP6935617B2
JP6935617B2 JP2017016780A JP2017016780A JP6935617B2 JP 6935617 B2 JP6935617 B2 JP 6935617B2 JP 2017016780 A JP2017016780 A JP 2017016780A JP 2017016780 A JP2017016780 A JP 2017016780A JP 6935617 B2 JP6935617 B2 JP 6935617B2
Authority
JP
Japan
Prior art keywords
file
optimization
optimization file
intermediate language
information
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.)
Active
Application number
JP2017016780A
Other languages
English (en)
Other versions
JP2017146967A (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 JP2017146967A publication Critical patent/JP2017146967A/ja
Application granted granted Critical
Publication of JP6935617B2 publication Critical patent/JP6935617B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/45525Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Quality & Reliability (AREA)
  • Devices For Executing Special Programs (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Probability & Statistics with Applications (AREA)

Description

以下の説明は、中間言語ファイルのロード速度改善のためl0の方法およびシステムに関する。
中間言語(Intermediate LanguageまたはInterLanguage:IL)とは、原始言語プログラムをコンパイラによって翻訳して目的言語プログラムを生成するとき、その中間段階として経るようになる言語を意味する。例えば、高水準言語プログラムをアセンブリ言語に変えた後、それをアセンブルして機械語プログラムを生成すれば、中間のアセンブリ言語が中間言語となる。
韓国公開特許第10−2007−0067953は、モバイルプラットフォームの中間言語変換装置およびその方法に関し、CまたはC++言語で開発されたモバイルプラットフォームソースコードを移動通信端末機のインタプリタで要求する中間言語コードに変換するC/C++コンパイラと、中間言語コードを移動通信端末機のインタプリタで実行されるフォーマットに変換する中間言語アセンブラについて開示している。
このような中間言語への変換を経るアプリケーションのコードは、その特性上、逆コンパイル(decompile)に弱い。例えば、ジャバ(Java)のようなプログラミング言語で製作されたアプリケーションのコードは、中間言語への変換を経るという特性上、逆コンパイルに弱いため、重要なコードが簡単に露出されてしまう上に、コード操作にも極めて弱い。より具体的な例として、ジャバで作成されたコードは、一般的にクラスごとに拡張子「.class」ファイルにコンパイルされ、アンドロイド(Android)では、ジャバで作成されたコードが、「classes.dex」のようにヘッダとデータで構成されたデックス(dex)ファイル(ジャバコードがコンパイルされた中間言語コードとしてのバイナリ(binary)コードであるバイトコード(bytecode))にコンパイルされる。バイトコードは、ジャバプログラムのコンパイルされた形態であって、ジャバプログラムがバイトコードに変換されれば、ネットワークを介して送信されることができ、仮想マシン(Virtual Machine:VM)によって実行されることができる。
例えば、中間言語コードの形態にコンパイルされたファイルがサーバから電子機器に提供されることができ、電子機器は、支援する仮想マシンを利用して中間言語コードの形態にコンパイルされたファイルを実行することができる。これにより、電子機器では、中間言語の特性に基づいて中間言語コードの形態にコンパイルされたファイルを逆コンパイルして本来のコードを取得して修正し、修正されたコードを中間言語コードの形態に再びコンパイルすることが可能であるため、アプリケーションを偽・変造できるようになるという問題が存在する。
このような問題を解決するために、従来技術では、デックスファイルのような中間言語ファイルを保護しようと、中間言語ファイルに対する難読化や暗号化などの技法を適用している。
一方、仮想マシンは、その種類にしたがい、中間言語ファイルに対する最適化ファイルを生成し、最適化ファイルをロードして処理する形態を採っている。例えば、アンドロイドのアート(ART)モードの仮想マシンは、アプリケーションがインストールされるときに、アプリケーションに含まれる中間言語をすべて翻訳して予め最適化ファイル(odexファイルまたはoatファイル)を生成し、最適化ファイルを利用してアプリケーションを実行する。
しかし、上述したアプリケーションの偽・変造問題により、アプリケーションを実行するシステムは、生成された最適化ファイルを継続して利用することができないという問題がある。例えば、システムは、コード保護などの理由から最適化ファイルを削除し、アプリケーションの実行時ごとに中間言語ファイルに対する難読化や暗号化を復号化し、アプリケーションの実行時ごとに新たな最適化ファイルを生成しなければならない。この場合、最適化ファイルの生成およびロードによって多くの時間を要するようになるという問題がある。
中間言語ファイル(一例として、アンドロイド(Android)のデックス(dex)ファイル)に対する最適化ファイルを保護すると同時に再使用を可能にすることにより、中間言語ファイルに対するロード速度を改善することができる方法およびシステムを提供する。
コンピュータによって実現される電子機器と結合されてロード速度改善方法を実行させるために記録媒体に格納されたコンピュータプログラムであって、前記ロード速度改善方法は、アプリケーションのための中間言語ファイルがロードされる時点に生成される最適化ファイルを変更して格納する段階、前記中間言語ファイルの変更の可否を確認するための情報を生成および格納する段階、前記中間言語ファイルが再びロードされる場合、前記格納された情報を利用して前記中間言語ファイルの変更の可否を確認する段階、および前記中間言語ファイルの変更の可否にしたがい、前記変更された最適化ファイルを削除して新たな最適化ファイルを生成するか、または前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する段階を含むことを特徴とする、コンピュータプログラムを提供する。
コンピュータによって実行されるロード速度改善方法であって、アプリケーションのための中間言語ファイルがロードされる時点に生成される最適化ファイルを変更して格納する段階、前記中間言語ファイルの変更の可否を確認するための情報を生成および格納する段階、前記中間言語ファイルが再びロードされる場合、前記格納された情報を利用して前記中間言語ファイルの変更の可否を確認する段階、および前記中間言語ファイルの変更の可否にしたがい、前記変更された最適化ファイルを削除して新たな最適化ファイルを生成するか、または前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する段階を含むことを特徴とする、ロード速度改善方法を提供する。
コンピュータによって実現される電子機器のロード速度改善システムであって、前記コンピュータで読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサは、アプリケーションのための中間言語ファイルがロードされる時点に生成される最適化ファイルを変更して格納する最適化ファイル管理部、前記中間言語ファイルの変更の可否を確認するための情報を生成および格納する変更確認情報管理部、前記中間言語ファイルが再びロードされる場合、前記格納された情報を利用して前記中間言語ファイルの変更の可否を確認する変更確認部、および前記中間言語ファイルの変更の可否にしたがい、前記変更された最適化ファイルを削除して新たな最適化ファイルを生成するか、または前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する最適化ファイル再使用制御部を含むことを特徴とする、ロード速度改善システムを提供する。
中間言語ファイルに対する最適化ファイルを保護すると同時に再使用を可能にすることにより、中間言語ファイルに対するロード速度を改善することができる。
本発明の一実施形態における、ネットワーク環境の例を示した図である。 本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。 本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示したブロック図である。 本発明の一実施形態における、電子機器が実行することのできる方法の例を示したフローチャートである。 本発明の一実施形態における、最適化ファイルの変更する例を示した図である。 本発明の一実施形態における、デックスファイルが変更されない場合に、変更された最適化ファイルを修復する例を示した図である。 本発明の一実施形態における、デックスファイルの変更にしたがって新たな最適化ファイルを生成する例を示した図である。
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような図1は、発明を説明するための一例に過ぎず、電子機器の数やサーバの数が図1のように限定されることはない。
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定型端末や移動型端末であってもよい。複数の電子機器110、120、130、140の例としては、スマートフォン(smart phone)、携帯電話、ナビゲーション、コンピュータ、ノート型パンコン、デジタル放送用端末、PDA(Personal Digital Assistants)、PMP(Portable Multimedia Player)、タブレットPCなどがある。一例として、電子機器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は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター−バスネットワーク、ツリーまたは階層的(hierarchical)ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これに制限されることはない。
サーバ150、160それぞれは、複数の電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供するコンピュータ装置または複数のコンピュータ装置によって実現されてもよい。
一例として、サーバ150は、電子機器2(120)からネットワーク170を介してアップロードされるアプリケーションのパッケージファイルを登録し、登録されたパッケージファイルに保護機能や暗号化機能などのような追加機能のためのコードを追加してパッケージファイルに対する機能(一例として、アプリケーションの追加機能)を確張してもよい。ここで、サーバ150は、直接または別のサーバ160を通じて電子機器1(110)に機能が拡張されたパッケージファイルを提供してもよい。電子機器1(110)は、アプリケーションのパッケージファイルを通じてアプリケーションを電子機器1(110)にインストールおよび駆動してもよく、アプリケーションを通じて予め設定されたサービス(一例として、ゲームサービス、チャットサービス、SNS(Social Network Service)サービスなど)の提供を受けてもよい。
図2は、本発明の一実施形態における、電子機器およびサーバの内部構成を説明するためのブロック図である。図2では、1つの電子機器に対する例として電子機器1(110)、そして1つのサーバに対する例としてサーバ150の内部構成について説明する。他の電子機器120、130、140やサーバ160も、同一または類似の内部構成を備えてもよい。
電子機器1(110)とサーバ150は、メモリ211、221、プロセッサ212、222、通信モジュール213、223、および入力/出力インタフェース214、224を含んでもよい。メモリ211、221は、コンピュータで読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永久大容量記憶装置(permanent mass storage device)を含んでよい。また、メモリ211、221には、オペレーティングシステムと、少なくとも1つのプログラムコード(一例として、電気機器1(110)にインストールされ駆動するブラウザや映像通話のためのアプリケーションなどのためのコード)が格納されてよい。このようなソフトウェア構成要素は、ドライブメカニズム(drive mechanism)を利用してメモリ211、221とは別のコンピュータで読み取り可能な記録媒体からロードされてもよい。このような別のコンピュータで読み取り可能な記録媒体は、フロッピードライブ、ディスク、テープ、DVD/CD−ROMドライブ、メモリカードなどのコンピュータで読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータで読み取り可能な記録媒体ではない通信モジュール213、223を利用してメモリ211、221にロードされてもよい。例えば、少なくとも1つのプログラムは、開発者またはアプリケーションのインストールファイルを配布するファイル配布システム(一例として、上述したサーバ160)がネットワーク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のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ(transceiver)、GPS(Global Positioning System)モジュール、カメラ、各種センサ、データベースなどのような他の構成要素をさらに含んでもよい。より具体的な例として、電子機器1(110)がスマートフォンである場合、一般的にスマートフォンが含んでいる加速度センサやジャイロセンサ、カメラ、各種物理的なボタン、タッチパネルを利用したボタン、入力/出力ポート、振動のための振動器などの多様な構成要素が電子機器1(110)にさらに含まれるように実現されてもよいことが分かる。
本発明の実施形態に係るロード速度改善システムは、アプリケーションが実行される装置に実現されてもよい。言い換えれば、本発明の実施形態に係るロード速度改善方法は、アプリケーションがインストールおよび駆動されるすべての装置で実行されてもよい。以下では、説明の便宜のために、電子機器1(110)にアプリケーションのインストールおよび駆動のためのパッケージファイルが格納され、電子機器1(110)に実現されるロード速度改善システムを通じてロード速度改善方法が実行される実施形態について説明する。
図3は、本発明の一実施形態における、電子機器のプロセッサが含むことのできる構成要素の例を示したブロック図であり、図4は、本発明の一実施形態における、電子機器が実行することのできる方法の例を示したフローチャートである。
電子機器1(110)は、ロード速度改善システムを実現してもよく、図3に示すように、電子機器1(110)に含まれたプロセッサ212は、構成要素として、ロード制御部310、最適化ファイル管理部320、変更確認情報管理部330、変更確認部340、および最適化ファイル再使用制御部350を含んでもよい。このようなプロセッサ212およびプロセッサ212の構成要素は、図4のロード速度改善方法が含む段階410〜450を実行するように電子機器1(110)を制御してもよい。ここで、プロセッサ212およびプロセッサ212の構成要素は、メモリ211が含むオペレーティングシステムのコードと少なくとも1つのプログラムのコードによる命令(instruction)を実行するように実現されてもよい。ここで、プロセッサ212の構成要素は、電子機器1(110)に格納されたプログラムコードが提供する制御命令にしたがってプロセッサ212によって実行され互いに異なる機能(different functions)の表現であってもよい。例えば、プロセッサ212が上述した制御命令にしたがってロード速度改善方法のためのプログラムのファイルに格納されたプログラムコードをメモリ221にロードするように動作する機能的表現として、ロード制御部310が使用されてもよい。
段階410で、ロード制御部310は、ロード速度改善方法のためのプログラムのファイルに格納されたプログラムコードをメモリ211にロードしてもよい。例えば、電子機器1(110)でプログラムが実行されれば、ロード制御部310は、オペレーティングシステムの制御にしたがってプログラムのファイルからプログラムコードをメモリ211にロードするようにサーバ150を制御してもよい。
ここで、メモリ211にロードされるプログラムコードは、アプリケーションのためのプログラムコードと最適化ファイルを管理するための制御機能を提供してもよい。アプリケーションのための中間言語ファイルも、段階410でロードされてもよい。
プロセッサ212が含む最適化ファイル管理部320、変更確認情報管理部330、変更確認部340、および最適化ファイル再使用制御部350それぞれは、メモリ211にロードされたプログラムコードのうちの対応する部分の命令を実行して以後の段階420〜450を実行するためのプロセッサ212の機能的表現であってもよい。
段階420で、最適化ファイル管理部320は、アプリケーションのための中間言語ファイルがロードされる時点に生成される最適化ファイルを変更して格納してもよい。上述したように、中間言語ファイルがロードされる場合、中間言語ファイルを翻訳した最適化ファイルが生成されて活用されてもよい。ここで、最適化ファイル管理部320は、生成された最適化ファイルを変更して格納してもよい。最適化ファイルの変更は、最適化ファイルの名前や経路を変更するか、または最適化ファイルを暗号化するなどのように、再び本来の最適化ファイルを取得することのできるすべての方法のうちの少なくとも1つを対象としてもよい。
例えば、最適化ファイル管理部320は、生成された最適化ファイルの名前および経路のうちの少なくとも1つを格納し、最適化ファイルの名前および経路のうちの少なくとも1つを変更して最適化ファイルを変更してもよい。以後、格納された名前および経路のうちの少なくとも1つは、以後に変更された最適化ファイルの修復に活用されてもよい。
他の例として、最適化ファイル管理部320は、生成された最適化ファイルを暗号化して最適化ファイルを変更してもよい。以後、暗号化された最適化ファイルは、復号化によって復元されてもよい。暗号化方法も、再び本来の最適化ファイルを修復することができるすべての方法のうちの1つが活用されてもよい。一例として、暗号化に使用されるキーを固定的に使用してもよいし、個別暗号化および復号化のインストンスごとに新たなキーを利用して暗号化および復号化を処理してもよい。キーは、対称キーや非対称キーなどのように、その種類とは関係なく、必要に応じて選択された種類のキーが活用されてもよい。
段階430で、変更確認情報管理部330は、中間言語ファイルの変更の可否を確認するための情報を生成および確認してもよい。一例として、中間言語ファイルに対する巡回冗長検査(Cyclic Redundancy Check)によって生成されるエラー検出コードが、中間言語ファイルの変更の可否を確認するための情報として生成されてもよい。中間言語ファイルの変更の可否を確認することができる方法であれば、制限なく活用されてもよい。
また、必要によって選択的に、オペレーティングシステム(電子機器1(110)のオペレーティングシステム)の変更の可否やアプリケーションの変更の可否を確認するための情報がさらに生成および格納されてもよい。
段階440で、変更確認部340は、中間言語ファイルが再びロードされる場合、格納された情報を利用して中間言語ファイルの変更の可否を確認してもよい。上述した巡回冗長検査の例において、変更確認部340は、再びロードされた中間言語ファイルに対して生成されるエラー検出コードと格納されたエラー検出コードとの比較により、中間言語ファイルの変更の可否を確認してもよい。
また、変更確認部340は、段階440で、オペレーティングシステムの変更の可否やアプリケーションの変更の可否をさらに確認してもよい。この場合、段階430でさらに格納されることのできる情報(オペレーティングシステムの変更の可否やアプリケーションの変更の可否を確認するための情報)が、オペレーティングシステムの変更の可否やアプリケーションの変更の可否を確認するために活用されてもよい。
段階450で、最適化ファイル再使用制御部350は、中間言語ファイルの変更の可否にしたがい、変更された最適化ファイルを削除して新たな最適化ファイルを生成するか、または変更された最適化ファイルを本来の最適化ファイルに修復して再使用してもよい。例えば、最適化ファイル再使用制御部350は、中間言語ファイルが変更されない間には、変更された最適化ファイルを修復して再使用してもよい。したがって、最適化ファイルに対する重複生成を最小化することができ、ロード速度を改善することができる。
中間言語ファイルが変更される場合(一例として、アプリケーションのパッチ)には、以前に生成された最適化ファイルをそのまま使用することができないため、変更されて格納された最適化ファイルは削除し、再びロードされた中間言語ファイルを通じて新たな最適化ファイルを生成して使用してもよい。ここで、再び生成された新たな最適化ファイルに対して段階420〜段階450が繰り返し実行されることにより、新たな最適化ファイルも以後の中間言語ファイルのロード時に再使用されることができる。
また、最適化ファイル再使用制御部350は、オペレーティングシステムやアプリケーションが変更される場合にも、変更されて格納された最適化ファイルを削除して新たな最適化ファイルを生成してもよい。言い換えれば、最適化ファイル再使用制御部350は、中間言語ファイル、オペレーティングシステム、およびアプリケーションのうちの少なくとも1つが変更された場合、変更された最適化ファイルを削除して新たな最適化ファイルを生成してもよい。この場合、最適化ファイル再使用制御部350は、中間言語ファイル、オペレーティングシステム、およびアプリケーションが変更されない間は、変更された最適化ファイルを修復して再使用することができるため、最適化ファイルに対する重複生成を最小化することができ、ロード速度を改善することができる。
図5は、本発明の一実施形態における、最適化ファイルの変更する例を示した図である。電子機器1(110)でアプリケーションがインストールされるか、または駆動される場合、アプリケーションのアンドロイド応用プログラムパッケージ(Android application package:APK)ファイルが含むデックスファイル510がローダ520によってロードされてもよく、デックスファイル510に対する最適化ファイル530が生成されてもよい。
ここで、電子機器1(110)に実現されたロード速度改善システム540は、生成された最適化ファイルを変更して格納してもよい。図5では、ロード速度改善システム540が最適化ファイル530を暗号化して変更し、暗号化された最適化ファイル550を格納する例を示している。
この場合、ロード速度改善システム540は、変更確認情報560を生成して格納してもよい。変更確認情報560は、少なくともデックスファイル510の変更の可否を確認することのできる情報を含んでもよく、選択的に、アンドロイドオペレーティングシステムの変更の可否を確認するための情報、および/またはアプリケーションの変更の可否を確認するための情報をさらに含んでもよい。
図6は、本発明の一実施形態における、デックスファイルが変更されない場合に変更された最適化ファイルを修復する例を示した図である。図6は、変更されないデックスファイル510がローダ520を通じて再びロードされる場合を示している。ロード速度改善システム540は、再びロードされるデックスファイル510の変更確認情報を生成し、格納された変更確認情報560と比較することにより、デックスファイル510の変更の可否を確認してもよい。図6の例では、デックスファイル510が変更されなかったため、ロード速度改善システム540は、暗号化された最適化ファイル550を復号化して本来の最適化ファイル(図5の最適化ファイル530)を修復し、復元された最適化ファイルを再使用することができる。
図7は、本発明の一実施形態における、デックスファイルの変更にしたがって新たな最適化ファイルを生成する例を示した図である。図7は、変更されたデックスファイル710がローダ520を通じてロードされる場合を示している。ロード速度改善システム540は、ロードされる変更されたデックスファイル710の変更確認情報を生成し、格納された変更確認情報560と比較することにより、デックスファイル510の変更の可否を確認してもよい。図7の例では、変更されたデックスファイル710がロードされたため、ロード速度改善システム540は、暗号化された最適化ファイル550を削除し、新たな最適化ファイル720を生成することができる。
以後、新たな最適化ファイル720も変更(暗号化)されて格納されてもよく、変更されたデックスファイル710に対する変更確認情報も新たに格納されてもよい。
このように、本発明の実施形態によると、中間言語ファイルに対する最適化ファイルを保護すると同時に再使用を可能にすることにより、中間言語ファイルに対するロード速度を改善することができる。
上述したシステムまたは装置は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてもよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてもよい。処理装置は、オペレーティングシステム(OS)および前記OS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素(processing element)および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでもよい。また、並列プロセッサ(parallel processor)のような、他の処理構成(processing configuration)も可能である。
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に(collectively)処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供するために、いかなる種類の機械、コンポーネント、物理装置、仮想装置(virtual equipment)、コンピュータ格納媒体または装置、または送信される信号波(signal wave)に永久的または一時的に具現化(embody)されてもよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された方法によって格納されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータで読み取り可能な記録媒体に格納されてもよい。
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータで読み取り可能な媒体に記録されてもよい。前記コンピュータで読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでもよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであってもよいし、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータで読み取り可能な記録媒体の例としては、ハードディスク、フロッピディスク、および磁気テープのような磁気媒体、CD−ROM、DVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。上述したハードウェア装置は、実施形態の動作を実行するために1つ以上のソフトウェアモジュールとして動作するように構成されてもよく、その逆も同じである。
以上のように、実施形態を限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能である。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、および/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
110、120、130、140:電子機器
150、160:サーバ
170:ネットワーク

Claims (16)

  1. コンピュータによって実現される電子機器と結合されてロード速度改善方法を実行させるために記録媒体に格納されたコンピュータプログラムであって、
    前記ロード速度改善方法は、
    アプリケーションのための中間言語ファイルがロードされる時点に生成される最適化ファイルを変更して格納する段階、
    前記中間言語ファイルの変更の有無を確認するための情報を生成および格納する段階、
    前記中間言語ファイルが再びロードされる場合、前記格納された情報を利用して前記中間言語ファイルの変更の有無を確認する段階、および
    前記中間言語ファイルの変更の有無にしたがい、前記変更された最適化ファイルを削除して新たな最適化ファイルを生成するか、または前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する段階
    を含むことを特徴とする、コンピュータプログラム。
  2. 前記最適化ファイルを変更して格納する段階は、
    前記最適化ファイルの名前および経路のうちの少なくとも1つを格納し、前記最適化ファイルの名前および経路のうちの少なくとも1つの情報を変更して前記最適化ファイルを変更し、
    前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する段階は、
    前記格納された名前および経路のうちの少なくとも1つを通じて前記変更された少なくとも1つの情報を修復して前記最適化ファイルを修復することを特徴とする、請求項1に記載のコンピュータプログラム。
  3. 前記最適化ファイルを変更して格納する段階は、
    前記最適化ファイルを暗号化して前記最適化ファイルを変更し、
    前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する段階は、
    前記暗号化された最適化ファイルを復号化して前記最適化ファイルを修復することを特徴とする、請求項1に記載のコンピュータプログラム。
  4. 前記中間言語ファイルの変更の有無を確認するための情報を生成および格納する段階は、
    前記コンピュータのオペレーティングシステムの変更の有無を確認するための情報および前記アプリケーションの変更の有無を確認するための情報のうちの少なくとも1つの情報をさらに生成して格納し、
    前記格納された情報を利用して前記中間言語ファイルの変更の有無を確認する段階は、
    前記格納された少なくとも1つの情報をさらに利用して前記オペレーティングシステムの変更の有無または前記アプリケーションの変更の有無をさらに確認することを特徴とする、請求項1に記載のコンピュータプログラム。
  5. 前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する段階は、
    前記中間言語ファイル、前記オペレーティングシステム、および前記アプリケーションのうちの少なくとも1つが変更された場合、前記変更された最適化ファイルを削除して新たな最適化ファイルを生成することを特徴とする、請求項4に記載のコンピュータプログラム。
  6. 前記中間言語ファイルの変更の有無を確認するための情報を生成および格納する段階は、
    前記中間言語ファイルに対する巡回冗長検査(Cyclic Redundancy Check)によってエラー検出コードを生成および格納し、
    前記格納された情報を利用して前記中間言語ファイルの変更の有無を確認する段階は、
    前記再びロードされた中間言語ファイルに対して生成されるエラー検出コードと前記格納されたエラー検出コードとの比較により、前記中間言語ファイルの変更の有無を確認することを特徴とする、請求項1に記載のコンピュータプログラム。
  7. コンピュータによって実行されるロード速度改善方法であって、
    アプリケーションのための中間言語ファイルがロードされる時点に生成される最適化ファイルを変更して格納する段階、
    前記中間言語ファイルの変更の有無を確認するための情報を生成および格納する段階、
    前記中間言語ファイルが再びロードされる場合、前記格納された情報を利用して前記中間言語ファイルの変更の有無を確認する段階、および
    前記中間言語ファイルの変更の有無にしたがい、前記変更された最適化ファイルを削除して新たな最適化ファイルを生成するか、または前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する段階
    を含むことを特徴とする、ロード速度改善方法。
  8. 前記最適化ファイルを変更して格納する段階は、
    前記最適化ファイルの名前および経路のうちの少なくとも1つを格納し、前記最適化ファイルの名前および経路のうちの少なくとも1つの情報を変更して前記最適化ファイルを変更し、
    前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する段階は、
    前記格納された名前および経路のうちの少なくとも1つを通じて前記変更された少なくとも1つの情報を修復して前記最適化ファイルを修復することを特徴とする、請求項7に記載のロード速度改善方法。
  9. 前記最適化ファイルを変更して格納する段階は、
    前記最適化ファイルを暗号化して前記最適化ファイルを変更し、
    前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する段階は、
    前記暗号化された最適化ファイルを復号化して前記最適化ファイルを修復することを特徴とする、請求項7に記載のロード速度改善方法。
  10. 前記中間言語ファイルの変更の有無を確認するための情報を生成および格納する段階は、
    前記コンピュータのオペレーティングシステムの変更の有無を確認するための情報および前記アプリケーションの変更の有無を確認するための情報のうちの少なくとも1つの情報をさらに生成して格納し、
    前記格納された情報を利用して前記中間言語ファイルの変更の有無を確認する段階は、
    前記格納された少なくとも1つの情報をさらに利用して前記オペレーティングシステムの変更の有無または前記アプリケーションの変更の有無をさらに確認することを特徴とする、請求項7に記載のロード速度改善方法。
  11. 前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する段階は、
    前記中間言語ファイル、前記オペレーティングシステム、および前記アプリケーションのうちの少なくとも1つが変更された場合、前記変更された最適化ファイルを削除して新たな最適化ファイルを生成することを特徴とする、請求項10に記載のロード速度改善方法。
  12. コンピュータによって実現される電子機器のロード速度改善システムであって、
    前記コンピュータで読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサ
    を含み、
    前記少なくとも1つのプロセッサは、
    アプリケーションのための中間言語ファイルがロードされる時点に生成される最適化ファイルを変更して格納する最適化ファイル管理部、
    前記中間言語ファイルの変更の有無を確認するための情報を生成および格納する変更確認情報管理部、
    前記中間言語ファイルが再びロードされる場合、前記格納された情報を利用して前記中間言語ファイルの変更の有無を確認する変更確認部、および
    前記中間言語ファイルの変更の有無にしたがい、前記変更された最適化ファイルを削除して新たな最適化ファイルを生成するか、または前記変更された最適化ファイルを本来の最適化ファイルに修復して再使用する最適化ファイル再使用制御部
    を含むことを特徴とする、ロード速度改善システム。
  13. 前記最適化ファイル管理部は、
    前記最適化ファイルの名前および経路のうちの少なくとも1つを格納し、前記最適化ファイルの名前および経路のうちの少なくとも1つの情報を変更して前記最適化ファイルを変更し、
    前記最適化ファイル再使用制御部は、
    前記格納された名前および経路のうちの少なくとも1つを通じて前記変更された少なくとも1つの情報を修復して前記最適化ファイルを修復することを特徴とする、請求項12に記載のロード速度改善システム。
  14. 前記最適化ファイル管理部は、
    前記最適化ファイルを暗号化して前記最適化ファイルを変更し、
    前記最適化ファイル再使用制御部は、
    前記暗号化された最適化ファイルを復号化して前記最適化ファイルを修復することを特徴とする、請求項12に記載のロード速度改善システム。
  15. 前記変更確認情報管理部は、
    前記コンピュータのオペレーティングシステムの変更の有無を確認するための情報および前記アプリケーションの変更の有無を確認するための情報のうちの少なくとも1つの情報をさらに生成して格納し、
    前記変更確認部は、
    前記格納された少なくとも1つの情報をさらに利用して前記オペレーティングシステムの変更の有無または前記アプリケーションの変更の有無をさらに確認することを特徴とする、請求項12に記載のロード速度改善システム。
  16. 前記最適化ファイル再使用制御部は、
    前記中間言語ファイル、前記オペレーティングシステム、および前記アプリケーションのうちの少なくとも1つが変更された場合、前記変更された最適化ファイルを削除して新たな最適化ファイルを生成することを特徴とする、請求項15に記載のロード速度改善システム。

JP2017016780A 2016-02-18 2017-02-01 中間言語ファイルのロード速度改善のための方法およびシステム Active JP6935617B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2016-0019007 2016-02-18
KR1020160019007A KR101832594B1 (ko) 2016-02-18 2016-02-18 중간 언어 파일의 로딩 속도 개선을 위한 방법 및 시스템

Publications (2)

Publication Number Publication Date
JP2017146967A JP2017146967A (ja) 2017-08-24
JP6935617B2 true JP6935617B2 (ja) 2021-09-15

Family

ID=59629939

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017016780A Active JP6935617B2 (ja) 2016-02-18 2017-02-01 中間言語ファイルのロード速度改善のための方法およびシステム

Country Status (3)

Country Link
US (1) US10379886B2 (ja)
JP (1) JP6935617B2 (ja)
KR (1) KR101832594B1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106066686B (zh) * 2016-05-31 2019-02-05 Oppo广东移动通信有限公司 一种信息处理方法及终端设备
KR102195103B1 (ko) * 2017-06-26 2020-12-24 삼성전자주식회사 프로그램 컴파일 방법
CN108446186B (zh) * 2018-01-30 2022-05-13 国家计算机网络与信息安全管理中心 从加壳Android应用程序中恢复Dex源文件的方法
CN115640078B (zh) * 2022-12-23 2023-03-10 北京麟卓信息科技有限公司 基于虚拟文件系统数据智能预取的安卓应用加载优化方法
CN118314251A (zh) * 2024-04-29 2024-07-09 广州蓝昊广告有限公司 一种Alembic文件优化方法、装置、设备及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004075048A (ja) * 1992-09-16 2004-03-11 Hitachi Ltd 自動車の制御装置
JPH09218789A (ja) * 1996-02-08 1997-08-19 Oki Electric Ind Co Ltd 分割コンパイル方式
US6978450B2 (en) * 1999-01-15 2005-12-20 Hewlett-Packard Development Company, L.P. Method and system for optimizing compilation time of a program by selectively reusing object code
JP2007233426A (ja) * 2004-04-05 2007-09-13 Matsushita Electric Ind Co Ltd アプリケーション実行装置
WO2006088304A1 (en) * 2005-02-15 2006-08-24 Lg Chem, Ltd. Lithium secondary battery of electrolyte containing ammonium compounds
KR100771057B1 (ko) 2005-12-26 2007-10-29 주식회사 신지소프트 모바일 플랫폼의 중간 언어 변환 장치 및 그 방법
US7845005B2 (en) * 2006-02-07 2010-11-30 International Business Machines Corporation Method for preventing malicious software installation on an internet-connected computer
KR101299099B1 (ko) 2011-09-07 2013-09-16 주식회사 팬택 임베디드 시스템에서 최적화된 가상화 모듈을 관리하는 장치 및 방법
KR101369251B1 (ko) 2011-12-29 2014-03-06 주식회사 안랩 시스템 파일 보호 및 복구를 위한 장치, 방법, 사용자 단말기 및 시스템
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
EP3026557A1 (en) * 2014-11-28 2016-06-01 Thomson Licensing Method and device for providing verifying application integrity
EP3026558A1 (en) * 2014-11-28 2016-06-01 Thomson Licensing Method and device for providing verifying application integrity
KR20170047957A (ko) * 2015-10-26 2017-05-08 삼성전자주식회사 반도체 장치의 동작 방법 및 반도체 시스템
US10339137B2 (en) * 2015-12-07 2019-07-02 Futurewei Technologies, Inc. System and method for caching and parameterizing IR
US10296323B2 (en) * 2016-02-02 2019-05-21 ZeroTurnaround AS System and method for fast initial and incremental deployment of apps

Also Published As

Publication number Publication date
KR20170097362A (ko) 2017-08-28
US10379886B2 (en) 2019-08-13
KR101832594B1 (ko) 2018-02-26
US20170242716A1 (en) 2017-08-24
JP2017146967A (ja) 2017-08-24

Similar Documents

Publication Publication Date Title
JP6815385B2 (ja) アプリケーションのコード難読化のためのシステムおよび方法
JP6935617B2 (ja) 中間言語ファイルのロード速度改善のための方法およびシステム
US10255443B2 (en) Method, apparatus, system and non-transitory computer readable medium for code protection
JP6936016B2 (ja) パッケージファイルに対する機能拡張方法およびシステム
US10459711B2 (en) Updating applications using migration signatures
JP6490598B2 (ja) コンパイラベースの難読化
US20180260199A1 (en) Method and apparatus for intermediate representation of applications
CN107533622A (zh) 可信二进制文件翻译
CN113568680B (zh) 应用程序的动态链接库保护方法、装置、设备及介质
JP2018527664A (ja) アプリケーションのコードを保護するためのシステムおよび方法
KR101814897B1 (ko) 파일 보호 방법 및 시스템
JP6917150B2 (ja) コード保護方法およびコンピュータプログラム
CN116249980A (zh) 通过异构加密的软件访问
WO2019142267A1 (ja) セキュリティ設計装置、セキュリティ設計方法およびセキュリティ設計プログラム
CN116028945A (zh) 防止执行注入的恶意代码的保护
CN115238249A (zh) 应用程序代码混淆方法、装置、设备和介质
JP7015120B2 (ja) アプリケーションパッケージを提供する方法およびシステム、アプリケーションを実行する方法およびシステム
JP2021197180A (ja) クラス分散およびシーケンシャルメモリ格納を利用したファイル保護方法およびシステム
KR101745821B1 (ko) 시큐어 부팅 방법 및 시스템
KR102410810B1 (ko) 확장 암호연산 처리 방법 및 시스템
US20240311102A1 (en) Software use system and software use method
KR102677540B1 (ko) 네이티브 라이브러리를 보호하는 방법 및 시스템
KR20210133961A (ko) 힙 메모리를 이용하여 실행 가능 파일을 보호하는 방법 및 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201201

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20201215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210122

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: 20210427

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210427

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210428

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20210412

R150 Certificate of patent or registration of utility model

Ref document number: 6935617

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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