JP6698774B2 - 共通中間言語のための保安提供装置と方法、及び保安実行装置と方法 - Google Patents

共通中間言語のための保安提供装置と方法、及び保安実行装置と方法 Download PDF

Info

Publication number
JP6698774B2
JP6698774B2 JP2018175877A JP2018175877A JP6698774B2 JP 6698774 B2 JP6698774 B2 JP 6698774B2 JP 2018175877 A JP2018175877 A JP 2018175877A JP 2018175877 A JP2018175877 A JP 2018175877A JP 6698774 B2 JP6698774 B2 JP 6698774B2
Authority
JP
Japan
Prior art keywords
intermediate language
security
language library
library
encryption algorithm
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
JP2018175877A
Other languages
English (en)
Other versions
JP2019096299A (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.)
Inka Entworks Inc
Original Assignee
Inka Entworks Inc
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 Inka Entworks Inc filed Critical Inka Entworks Inc
Publication of JP2019096299A publication Critical patent/JP2019096299A/ja
Application granted granted Critical
Publication of JP6698774B2 publication Critical patent/JP6698774B2/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/106Enforcing content protection by specific content processing
    • G06F21/1062Editing
    • 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/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bioethics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)

Description

本発明は、共通中間言語のための保安提供装置と方法、および保安実行装置と方法に関し、特にスクリプト言語などで作成されたプログラムの共通中間言語に対して保安を提供するための保安提供装置と方法、および保安実行装置と方法に関する。
アプリケーションは、同一なことを実行するとしても、ハードウェアや運営体制に応じて動作するように個別にプログラムされなければならない。つまり、PC、Mac、ウェブブラウザ、フラッシュ、アンドロイドフォン、アイフォンなど、さまざまな環境で同一なアプリケーション、例えば同じゲームプログラムなどが実行されても、ゲームプログラムなどのソースコードは、プラットフォームに応じて個別に開発されなければならない。これにより、ゲームプログラムの開発・メンテナンスコストが増加するようになるが、もし一つのソースコードを、ハードウェアや運営体制に関係なく再使用できるようになれば、このようなコストを大幅に減らすことができる。
最近は、スマートフォンの登場によって、プログラムの再使用の必要性が更に高まり、実際、ほとんどのモバイルゲームは、このような特徴を反映したゲームエンジンのような開発ツールによって製作されている。代表的なクロスプラットフォームゲームエンジンとしては、Unity、Havok Vision、COCOS2Dなどがあるが、特にユニティ(Unity)は、ゲームスクリプト作成用言語でC#、Java(登録商標)script、Booを支援するクロスプラットフォームゲームエンジンである。
しかし、C#のようなプログラム言語で作成されたプログラムは、コンパイルされてから直に機械語に変換されるものではなく、共通中間言語(Common Intermediate Language; CIL)という形の中間言語のバイナリに変換され、DLLなどの拡張子を持つファイルとしてゲームパッケージに含まれ、このような共通中間言語コードを実行するためには、ドットネットフレームワーク(.NET Framework)、モノ(mono)、JVMなどの共通中間言語を機械語に変換して実行する手段が必要である。
ここで問題は、共通中間言語の形式が、完全に公開された形式であり、共通中間言語を元のスクリプトソースコードに完全に復元して表示するツールが提供されているため、リバースエンジニアリングによる逆分析により、重要なゲームロジックのソースをそのままのぞき見ることができるだけではなく、さらには、攻撃者が勝手にコードを修正してDLLを再構成(rebuild)し、クラックされたバージョンを配布することが非常に容易に行われてしまうおそれがある
これに対し、C#などのスクリプトの作成時、コード難読化(obfuscation)技法を適用してメソッド名や変数名を変えてやれば、リバースエンジニアリングによるプログラム分析をある程度難しくすることができるが、根本的に、ソースコードがすべて見えてしまう脆弱性を防止することはできない。
また、ハッキング攻撃を検知するロジックをアンドロイドNDK(Native Development Kit)ファイルで作成し、これをJava段やC#スクリプト段で呼び出して保護する方法も一部使用されているが、JavaもC#と同様に、中間言語に変換して実行する言語であるため、簡単にソースコードの露出と変調が行われてしまい、攻撃者が非常に簡単に保安ロジックを無力化することができる。
上述の問題点を解決するために、本発明は、中間言語ライブラリーに保安を提供して、共通中間言語をハッキングから保護する保安提供装置及び方法を提供することを目的とする。
本発明は、中間言語ライブラリーに保安を実行し、共通中間言語をハッキングから保護する保安実行装置及び方法を提供することを目的とする。
上述の目的を達成するために、本発明の一実施例による複数のファイルをコンパイルして生成された中間言語ライブラリーと実行エンジンライブラリーとを組み合わせて生成された実行パッケージが貯蔵されている保安提供装置は、前記実行パッケージから前記中間言語ライブラリーを抽出する中間言語抽出部と、前記中間言語抽出部で抽出された中間言語ライブラリーに対して第1の暗号化アルゴリズムで暗号化し、前記暗号化された中間言語ライブラリーに対して第2の暗号化アルゴリズムで暗号化して保安中間言語ライブラリーを提供する暗号化部とを含む。
前記保安提供装置は、前記実行パッケージの中間言語ライブラリーを、前記暗号化部で暗号化された前記保安中間言語ライブラリーで代替し、前記実行パッケージのモノファイルを、イメージ構造体及び前記暗号化部に対応する復号化部を含む保安モノファイルで代替するファイル代替部をさらに含む。
前記保安提供装置は、前記第1の暗号化アルゴリズムの暗号化キー値を第2の暗号化アルゴリズムで暗号化して保安ファイルを生成する保安ファイル生成部をさらに含む。
前記保安提供装置は、前記実行エンジンライブラリーと、前記ファイル代替部で代替された前記保安中間言語ライブラリーと前記保安モノファイルと、前記保安ファイル生成部で提供された保安ファイルとを組み合わせて保安実行パッケージを生成するパッケージ組み合わせ部をさらに含む。
前記モノ保安ファイルは、前記保安中間言語ライブラリーを実行する際、メインメモリーに前記保安中間言語ライブラリーを一つのイメージとしてロードして、実行コードにアクセスするために、前記イメージ構造体に復号化された中間言語ライブラリーの各パートの開始アドレスを貯蔵する。
前記第1の暗号化アルゴリズムは、XOR演算アルゴリズムであり、前記第2の暗号化アルゴリズムは、AES(Advanced Encryption Standard)アルゴリズムである。
本発明のまた他の実施例による保安実行装置は、中間言語ライブラリーに対して第1の暗号化アルゴリズムで暗号化し、前記暗号化された中間言語ライブラリーに対して第2の暗号化アルゴリズムで暗号化した保安中間言語ライブラリーを、実行エンジンライブラリーにおける動作に応じてメインメモリーにロードする実行エンジン部と、前記メインメモリーに保安中間言語ライブラリーがロードされると、前記保安中間言語ライブラリーに必要な初期化作業を実行し、保安ファイルから前記第1の暗号化アルゴリズムに係る第1の復号化関数インターフェース及び前記第2の暗号化アルゴリズムに係る第2の復号化関数インターフェーイスを持ってくるイメージ構造体と、前記イメージ構造体で持ってきた第2の復号化関数インターフェースを利用し、暗号化された前記保安中間ライブラリーを復号化して、前記暗号化された中間言語ライブラリーを前記メインメモリーの中間言語ライブラリー領域に保持する復号化部とを含むことにより、上述の目的を達成することができる。
前記復号化部は、前記イメージ構造体で持ってきた第1の復号化関数インターフェースを用いて、前記暗号化された中間言語ライブラリーのヘッダー関連情報を、元の中間言語ライブラリーで復号化し、前記中間言語ライブラリーのヘッダー関連情報の少なくとも一つの情報を前記中間言語ライブラリー領域以外のメモリー領域に貯蔵し、前記中間言語ライブラリー領域以外のメモリー領域に貯蔵されたヘッダー関連情報の位置をイメージ構造体に貯蔵する。
前記復号化部は、前記中間言語ライブラリー領域以外のメモリー領域にヘッダー関連情報が貯蔵されると、ヘッダー関連情報が貯蔵されている前記中間言語ライブラリー領域をスクランブルするか、意味のない値で埋める。
本発明のまた他の実施例による保安提供方法は、複数のファイルをコンパイルして生成された中間言語ライブラリーと実行エンジンライブラリーとを組み合わせて生成された実行ファイルを貯蔵する段階と、前記実行パッケージから前記中間言語ライブラリーを抽出する段階と、前記実行パッケージから抽出された中間言語ライブラリーに対して第1の暗号化アルゴリズムで暗号化する段階と、前記暗号化された中間言語ライブラリーに対して第2の暗号化アルゴリズムで暗号化して保安中間言語ライブラリーを生成する段階とを含む。
本発明のまた他の実施例による保安実行方法は、中間言語ライブラリーに対して第1の暗号化アルゴリズムで暗号化し、前記暗号化された中間言語ライブラリーに対して第2の暗号化アルゴリズムで暗号化した保安中間言語のライブラリーを、実行エンジンライブラリーの動作に応じてメインメモリーにロードする段階と、前記メインメモリーに保安中間言語ライブラリーがロードされると、前記保安中間言語ライブラリーに必要な初期化作業を実行する段階と、保安ファイルから前記第1の暗号化アルゴリズムに係る第1の復号化関数インターフェース及び前記第2の暗号化アルゴリズムに係る第2の復号化関数インターフェースを持ってくる段階と、前記第2の復号化関数のインターフェースを利用して暗号化された前記保安中間ライブラリーを復号化して、前記暗号化された中間言語ライブラリーを前記メインメモリーの中間言語ライブラリー領域に保持する段階とを含むことで、上述の目的を達成することができる。
上述の構成により、本発明は、中間言語ライブラリーに対する静的分析の攻撃を防ぐことができる。即ち、DLLがメインメモリー上で復号化されて実行されるため、静的分析攻撃に対して完璧に防御することができる。
本発明は、メインメモリー上で保安中間言語ライブラリーがAESアルゴリズムで復号化されても、全体的にXOR演算ができているため、中間言語ライブラリーをハッキングから保護することができる。
本発明は、ハッカーにDLL領域のアドレスが流出されても、ヘッダー関連情報がメインメモリー全体にかけて分散されており、しかもDLL領域内のヘッダー関連情報はスクランブルされているため、DLL領域内でDLLのコード情報をマッピングする情報を見つけ出すことができない。
図1は、本発明の一実施例による共通中間言語のための保安提供システムの構成図。 図2は、図1のプログラム開発装置における通常のユニティパッケージの生成方法の例を示す図。 図3は、図2に示されたDLLの構造を示す図。 図4は、本発明による保安モノファイルのイメージ構造体の例を示す図。 図5は、図1の保安提供装置のブロック図。 図6は、図5の保安提供装置で再び組み合わされた保安ユニティパッケージを示す図。 図7は、図1の保安実行装置のブロック図。 図8は、本発明の実施例による保安実行プログラムがメインメモリーユニットにロードされた状態を説明する図。 図9a〜図9hは、図8の保安実行プログラムの動作を説明するために示した図。 図10は、本発明の一実施例による共通中間言語のための保安提供方法の流れ図。 図11は、本発明の他の実施例による共通中間言語のための保安実行方法の流れ図。
以下、添付の図面を参照し、本発明による共通中間言語のための保安提供装置と方法、及び保安実行装置と方法の好ましい実施例を説明する。参考に、本発明を説明するにあたって、本発明の構成要素を指す用語は、それぞれの構成要素の機能を考慮して命名されたものであるため、本発明の技術的構成要素を限定する意味として理解されてはいけない。
図1は、本発明の一実施例による共通中間言語のための保安提供システムの構成図である。
図1に示すように、本発明による共通中間言語のための保安提供システムは、プログラム開発装置110、保安提供装置120と、保安実行装置130とを含む。ここで、プログラム開発装置110、保安提供装置120及び保安実行装置130は、有無線通信網を通じて連結できる。
プログラム開発装置110は、開発者がアプリケーションプログラムを開発するための装置である。実行エンジン、例えば、ユニティエンジンは、アプリケーションプログラムが開発されると、アプリケーションソースコードをコンパイルしてバイナリーコードを生成し、生成されたバイナリーコードと必須リソースライブラリーなどとを含めて実行パッケージ、例えばユニティパッケージを生成する。
保安提供装置120は、プログラム開発装置110で生成されたユニティパッケージに対して保安を提供するための装置である。保安提供装置120は、プログラム開発装置110で生成されたユニティパッケージがアップロードされると、共通中間言語ライブラリー、例えばDLLを抽出して、抽出されたDLLを利用して二重暗号化を実行し、モノファイルを、二重暗号化による修正された保安モノファイルで代替した後、再び保安ユニティパッケージを生成する。
保安実行装置130は、プログラム、例えばゲームプログラムが実行されるユーザー端末装置である。保安実行装置130は、プログラム開発装置110または保安提供装置120から保安ユニティパッケージをダウンロードしてゲームプログラムを実行することができる。
図1では、プログラム開発装置110と保安提供装置120がそれぞれ別途の装置として示されているが、これは例示であって、本発明はこれに限定されない。
図2は、図1のプログラム開発装置における通常のユニティパッケージの生成方法の例を示す図であり、図3は、図2に示されたDLLの構造を示す図である。
図2に示したように、ユニティエンジンは、スクリプトファイル、例えば、GameScript1.cs、GameScript2.cs、GameScript3.cs、...GameScriptN.csをコンパイルして、共通中間言語のAssembly-CSharp.dllライブラリーを生成する。そして、ユニティエンジンは、生成されたAssembly-CSharp.dllとユニティエンジン関連リソースライブラリー、例えばMono.Security.dll、UnityEngine.dll、mono.so及びlibunity.soなどとを含んでユニティパッケージを生成する。
図3に示されたように、DLLの構造は、PEヘッダ(PE header)、セクションテーブル(section table)、テキストセクション(.text section)、CLIヘッダ(CLI header)、BSJB(stream headers)、ストリーム情報(#〜stream)とストリングスストリーム(Strings stream)を含む。
PEヘッダーは、ビルド時間、コードサイズなどのDLL情報を含み、本発明と関連しては、テキストセクション内のCLIヘッダー位置を把握することができる。セクションテーブルは、各セクションの位置情報(RVA)が計算できる情報を含み、本発明と関連しては、テキストセクション位置を把握することができる。テキストセクションは、DLLを構成する実際の実行コードのある領域であって、実行コードに対する情報を分析するための情報も一緒に有しており、本発明と関連しては、実際の実行コードが含まれていて、このテキストセクションを通じて応用プログラムの動作が決定される。
CLIヘッダーは、共通中間言語(CLI)で構成されたコードにアクセスするために必要な情報を含み、本発明と関連しては、CLIヘッダーを利用してBSJB位置を把握することができる。 BSJBは、#〜stream及びStrings streamの位置情報を有しており、本発明と関連しては、#〜streamの位置を把握することができる。ストリーム情報は、モジュール、リファレンス、定義、メソッドなど、dll内のクラスに関する情報を含み、特に、メソッド情報は、テキストセクションにおいて、該当名の関数の実行コード位置を含み、本発明と関連しては、各関数の実行コード位置を把握することができる。ストリングスストリームは、クラス名、関数名、フィールド名など、実際の関数名や初期化に使用される値などをストリング型として貯蔵し、ランタイム時も、ストリング値は本領域で参照されたりする。
図4は、本発明による保安モノファイルのイメージ構造体の例を示す図である。
保安モノファイルは、CLIベースのC#コードを、Windows(登録商標)環境ではなく、運用体制で実行できるようにする一種の仮想マシーンである。図4に示すように、保安モノファイルは、DLLを実行するとき、メモリーにDLL全体を一つのイメージとしてロードし、これに基づいてコード領域にアクセスする。そて、コードにアクセスするために、モノファイル内のイメージ構造体820にDLLの各パーツの開始メモリーアドレスを貯蔵しておきる。
保安モノファイルは、実際にDLLが暗号化されているため、保安適用のためには、DLLをオープンして、実際の情報にアクセスする前に、メモリー上にロードされている暗号化されたDLLを復号化して、復号化された値に基づいて、各パートの開始メモリーアドレスをイメージ構造体に貯蔵して置かなければならない。DLL全体を一遍に復号化しておけば、メモリー上に、復号化された値がすべてロードされるため、ハッカーがDLLロード中にマジックキーワードやDOSヘッダーなどを利用して、メモリー上で動的に原本DLLを抽出することができる。DLLを保護するために、本発明は、DLLを二重に暗号化して、ロード時点で必要な部分だけを復号化して使用することができることを特徴とする。
図5は、図1の保安提供装置のブロック図を示す図であり、図6は、図5の保安提供装置で再び組み合わされた保安ユニティパッケージを示す図である。
図5に示されたように、保安提供装置120は、共通中間言語抽出部510、暗号化部520、保安ファイル生成部530、ファイル代替部540及びパッケージ組み合わせ部550を含む。
共通中間言語抽出部510は、プログラム開発装置110からアップロードされたユニティパッケージの複数のライブラリー及びファイルを分析して、共通中間言語ライブラリー、例えば、図2に示されたAssembly-CSharp.dllを抽出する。
暗号化部520は、DLL、例えば図2に示されたAssembly-CSharp.dll全体に対して、第1の暗号化アルゴリズムで暗号化を行う。第1の暗号化アルゴリズムは、DLL全体に対して、例えばXORキーを使用してXOR演算を行うことができる。この場合、第1の暗号化アルゴリズムは、ブロック単位でスクランブルして暗号化することができる。
暗号化部520は、第1の暗号化アルゴリズムで暗号化されたDLL全体に対して第2の暗号化アルゴリズムで暗号化を行い、保安中間言語ライブラリーを生成する。第2の暗号化アルゴリズムは、DES、AES、RSAなどのような暗号化アルゴリズムの少なくとも一つを含むことができる。ここで、第2の暗号化アルゴリズムとしては、暗号化されたDLL全体に対して暗号化を行うAES(Advanced Encryption Standard)アルゴリズムが好ましい。
保安ファイル生成部530は、第1の暗号化アルゴリズムの第1の暗号化キー値を暗号化部520で第2の暗号化アルゴリズムで暗号化し、保安ファイル、例えば図6に示されたappsealing.soを生成して、また、生成された保安ファイルに第1の暗号化アルゴリズムに係る第1の復号化関数インターフェース及び前記第2の暗号化アルゴリズムに係る第2の復号化関数インターフェイスを貯蔵することができる。
ファイル代替部540は、ユニティパッケージの中間言語ライブラリーを、暗号化部520で生成された保安中間言語ライブラリー、例えば保安DLLで代替し、また、ユニティパッケージのモノファイルを、図8に示されたイメージ構造体820と、暗号化部520に対応する復号化部830とを含む保安モノファイルで代替する。
ユニティパッケージ組み合わせ部550は、ファイル代替部540で代替された保安中間言語ライブラリーの保安DLL、例えばAssembly-SECSharp.dllと、保安モノファイル、例えばsecmono.soと、保安ファイルのappsealing .soと、必須リソースライブラリーとを含み、再びユニティパッケージに組換えする。
図7は、図1の保安実行装置のブロック図である。
図7に示されたように、保安実行装置130は、CPU710、メインメモリーユニット720、ディスプレイユニット730、補助メモリーユニット740、入力ユニット750及びネットワークユニット760を含む。
補助メモリーユニット740には、保安提供装置120からネットワークユニット760を通じてダウンロードされた保安実行パッケージが貯蔵される。ゲームプログラムの保安実行パッケージ、例えば、保安ユニティパッケージの実行が要請されると、CPU710は、補助メモリーユニット(740)に貯蔵された保安ユニティパッケージをメインメモリーユニット720にロードする。一方、ゲームプログラムは、入力ユニット750やネットワークユニット(760)を通じて新しい値を入力することもできる。
本発明の実施例による保安実行装置130は、パーソナルコンピューター(PC:Personal Computer)、ノートパソコン、タブレット、携帯情報端末(PDA:Personal Digital Assistant)、ゲームコンソール、携帯マルチメディアプレーヤー(PMP:Portable Multimedia Player)、プレイステーションポータブル(PSP:PlayStation Portable)、無線通信端末(Wireless Communication Terminal)、スマートフォン(Smart Phone)、TV、メディアプレーヤーなどのようなユーザー端末である。
図8は、本発明の実施例による保安実行プログラムがメインメモリーユニットにロードされた状態を説明する図である。図9a〜図9hは、図8の保安実行プログラムの動作を説明するために示した図である。
図8に示されたように、保安実行プログラムは、実行エンジン部810、イメージ構造体820及び復号化部830を含む。
実行エンジン部810は、保安中間言語ライブラリー、例えば保安DLLを、実行エンジンライブラリーにおける実行エンジンによってメインメモリーユニット720にロードする。
イメージ構造体820は、メインメモリーユニット720に保安中間言語ライブラリーがロードされると、保安中間言語ライブラリーに必要な初期化作業を行って、保安ファイルから第1の暗号化アルゴリズムに係る第1の復号化関数インターフェース及び第2の暗号化アルゴリズムに係る第2の復号化関数インターフェースを持ってくる。
復号化部830は、イメージ構造体820で持ってきた第2の復号化関数インターフェースを利用して、暗号化された保安中間ライブラリーを復号化し、暗号化された中間言語ライブラリーをメインメモリーユニット720の中間言語ライブラリー領域840、例えばDLL領域に保持する。復号化部830は、イメージ構造体820で持ってきた第1の復号化関数インターフェースを利用して、暗号化された中間言語ライブラリーのヘッダー関連情報を、元の中間言語ライブラリーに復号化して、中間言語ライブラリーのヘッダー関連情報の少なくとも一つの情報を中間言語ライブラリー領域以外のメモリー領域850に貯蔵し、中間言語ライブラリー領域以外のメモリー領域850に貯蔵されたヘッダー関連情報の位置をイメージ構造体820に貯蔵する。復号化部830は、中間言語ライブラリー領域以外のメモリー領域850にヘッダー関連情報が貯蔵されると、ヘッダー関連情報の貯蔵されている中間言語ライブラリー領域840をスクランブルするか、意味のない値で埋める。
以下、図9を参照し、保安実行プログラムの動作をさらに詳細に説明する。
保安実行装置130で入力ユニット750を通じてアプリケーション、例えばゲームプログラムが実行されると、CPU710は、ゲームプログラムをメインメモリーユニット720にロードする。メインメモリーユニット720にロードされたゲームプログラムが実行されると、実行エンジン部810によってDLL、例えばAssembly-SECSharp.dllがロードされる。
DLLがロードされると、イメージ構造体820は、既存のロジックでDLLイメージ復号化に必要な初期化作業を行う。イメージ構造体820はまた、暗号化部520の第2の暗号化アルゴリズムに係る第2の復号化関数インターフェース、例えばAES復号化関数ポインターを持ってきて、第1の暗号化アルゴリズムに係る第1の復号化関数インターフェース、例えばXOR復号化関数ポインターを持ってくる。
復号化部830は、MS−DOSヘッダーの特定バイトにDLLが暗号化されているというキーワードが存在すると、DLLの全体領域を第2の復号化アルゴリズムを用いて復号化する。暗号化部でAESで暗号化された場合は、AES復号化アルゴリズムを利用して復号化された保安DLLを得る. この場合、メインメモリーユニットのDLL領域のDLLは、そのまま第1の暗号化アルゴリズムによって暗号化されたDLLである(図9a参照)。
復号化部830は、ヘッダー関連情報を、第2の復号化アルゴリズムを利用して元通りに復号化した後、その位置をイメージ構造体820に貯蔵して、ヘッダー関連情報領域はスクランブルする(図9b〜図9g参照)。
以下、第2の復号化アルゴリズムを利用してヘッダー関連情報を復号化する過程をさらに具体的に説明する。
復号化部830は、まず、XORされたMS−DOSヘッダーをXOR演算して元通りに復号化して、イメージ構造体820にPEヘッダーの位置を貯蔵し、MS−DOSヘッダーをスクランブルする(図9b参照)。
復号化部830は、XORされたPEヘッダーをXOR演算して元通りに復号化して、イメージ構造体820にテキストセクション内のCLIヘッダー位置を貯蔵する。さらに、復号化部830は、PEヘッダーのキーワードを削除し、メモリー上において、キーワード検索によってDLL領域を見つけ出せないようにする(図9c参照)。
復号化部830は、XORされたセクションテーブルをXOR演算して元通りに復号化し、セクションテーブルを参照して、テキストセクションを除いた他のセクション領域を復号化して、 復号化された他のセクション領域をDLL領域以外のメモリー領域に貯蔵する。復号化部830は、イメージ構造体820にテキストセクションを除いた他のセクション領域のアドレスを貯蔵し、DLL領域内の関連セクションをスクランブルする(図9d参照)。
復号化部830は、XORされたCLIヘッダーをXOR演算して元通りに復号化して、復号化されたCLIヘッダーでストリームヘッダーの相対的仮想アドレス(RVA、Relative Virtual Address)を抽出する。さらに、復号化部830は、CLIヘッダーのキーワードを削除し、メモリー上において、キーワード検索でDLL領域を見つけ出せないようにする(図9e参照)。
復号化部830は、XORされた各ストリームヘッダーをXOR演算して元通りに復号化して、復号化されたストリームヘッダーを利用し、#〜を除いた他のストリームを復号化して、復号化されたストリームをDLL領域以外のメモリー領域に貯蔵する。復号化部830は、イメージ構造体820に、DLL領域以外のメモリー領域に貯蔵された各ストリームのアドレスを貯蔵して、DLLの復号化されたストリーム領域をスクランブルする(図9f参照)。
復号化部830は、XORされた#〜領域内のテーブルをXOR演算して元通りに復号化して、復号化された#〜領域内のテーブル(モジュール(module)、typeref、typedef、メソッド(method)、フィールド(filed)など)をDLL領域以外のメモリー領域に貯蔵する。復号化部830は、イメージ構造体820に、DLL領域以外のメモリー領域に貯蔵された#〜領域内のテーブルのアドレスを貯蔵して、DLLの復号化されたストリーム領域をスクランブルする(図9g参照)。
一方、復号化部830は、イメージ構造体820に復号化された#〜領域内のテーブルのヘッダーのみをDLL領域以外のメモリー領域に貯蔵して、メソッドはDLL領域にそのまま置くことができる。
復号化部830は、イメージ構造体820に貯蔵されたヘッダー関連情報を利用して、XORされた実行コードのアドレスに貯蔵された実行コードをXOR演算して、元通りに実行コードを復号化する。
復号化部830は、XORされたテキストセクション内のコード領域とそれ以外のテキストセクションの領域をXOR演算して元通りに復号化して、DLL内セクションテーブルのコード領域を除いた他の領域及びPEヘッダーなどの必要ない領域を、任意の値、すなわち意味のない値で埋める。
図10は、本発明の一実施例による共通中間言語のための保安提供方法の流れ図である。
保安提供装置120は、複数のスクリプトファイルをコンパイルして生成された中間言語ライブラリーと実行エンジンライブラリーとを組み合わせて生成された実行パッケージ、例えば、ユニティパッケージを貯蔵する(S1002)。
中間言語を抽出部510は、実行ファイルから前記中間言語ライブラリーを抽出する(S1004)。
暗号化部520は、中間言語抽出部510で抽出された中間言語ライブラリーの全体に対して第1の暗号化アルゴリズムで暗号化し(S1006)、暗号化された中間言語ライブラリーに対して第2の暗号化アルゴリズムで暗号化して、保安中間言語ライブラリーを生成する(S1008)。
保安ファイル生成部530は、暗号化部520の第1の暗号化アルゴリズムの暗号化キー値を第2の暗号化アルゴリズムで暗号化して保安ファイルを生成し、生成された保安ファイルを実行パッケージに提供する(S1010)。
ファイル代替部540は、実行パッケージの中間言語ライブラリーを、暗号化部520で暗号化された保安中間言語ライブラリーで代替し、実行パッケージのモノファイルを、イメージ構造体及び暗号化部520に対応する復号化部を含む保安モノファイルで代替する(S1012)。
パッケージ組み合わせ部550は、実行エンジンライブラリーと、ファイル代替部540で代替された保安中間言語ライブラリーと保安モノファイル、及び保安ファイル生成部530で提供された保安ファイルを組み合わせて保安実行パッケージを生成する(S1014)。
図11は、本発明の他の実施例による共通中間言語のための保安実行方法の流れ図である。
実行エンジン部810は、実行エンジンライブラリーにおける動作によって、保安中間言語ライブラリーをメインメモリーユニットにロードする(S1102)。ここで、保安中間言語ライブラリーは、中間言語ライブラリーに対して第1の暗号化アルゴリズムで暗号化されて、暗号化された中間言語ライブラリーに対して第2の暗号化アルゴリズムで暗号化されている。
イメージ構造体820は、メインメモリーユニットに保安中間言語ライブラリーがロードされると、保安中間言語ライブラリーに必要な初期化作業を行う(S1104)。イメージ構造体820は、保安ファイルから前記第1の暗号化アルゴリズムに係る第1の復号化関数インターフェース及び前記第2の暗号化アルゴリズムに係る第2の復号化関数インターフェイスを持ってくる(S1106)。
復号化部830は、イメージ構造体820で持ってきた第2の復号化関数インターフェースを利用して、保安中間言語ライブラリーを復号化する(S1108)。暗号化された中間言語ライブラリーは、メインメモリーユニットの中間言語ライブラリー領域に保持される。
復号化部830は、イメージ構造体820で持ってきた第1の復号化関数インターフェースを利用して、暗号化された中間言語ライブラリーのヘッダー関連情報を元の中間言語ライブラリーに復号化する(S1110)。復号化部830は、中間言語ライブラリーのヘッダー関連情報の少なくとも一つの情報を、中間言語ライブラリー領域以外のメモリー領域に貯蔵し(S1112)、中間言語ライブラリー領域以外のメモリー領域に貯蔵されたヘッダー関連情報の位置をイメージ構造体820に貯蔵する((S1114)
復号化部830は、中間言語ライブラリー領域以外のメモリー領域にヘッダー関連情報が貯蔵されると、ヘッダー関連情報の貯蔵されている中間言語ライブラリー領域をスクランブルするか、意味のない値で埋める(S1116)。
復号化部830は、イメージ構造体820に貯蔵されたヘッダー関連情報を利用して、XORされた実行コードのアドレスに貯蔵された実行コードをXOR演算し、元通りに復号化する(S1118)。
以上説明した本発明の実施例は、本発明の技術思想を例示的に示したものに過ぎず、本発明の保護範囲は、以下の特許請求の範囲によって解釈されるべきである。また、本発明の属する技術分野で通常の知識を有する者であれば、本発明の本質的な特性から逸脱しない範囲で様々な修正や変更が可能であって、本発明と同等の範囲内にあるすべての技術思想は、本発明の権利範囲に含まれるものと解釈されるべきである。
110:プログラム開発装置
120:保安提供装置
130:保安実行装置
510:共通中間言語抽出部
520:暗号化部
530:保安ファイル生成部
540:ファイル代替部
550:パッケージ組み合わせ部
710:CPU
720:メインメモリーユニット
730:ディスプレイユニット
740:補助メモリーユニット
750:入力ユニット
760:ネットワークユニット
810:実行エンジン部
820:イメージ構造体
830:復号化部
840:DLL領域
850:DLL以外の領域

Claims (14)

  1. 複数のファイルをコンパイルして生成された中間言語ライブラリーと実行エンジンライブラリーとを組み合わせて生成された実行パッケージが貯蔵されている保安提供装置であって、
    前記実行パッケージから前記中間言語ライブラリーを抽出する中間言語抽出部と、
    前記中間言語抽出部で抽出された中間言語ライブラリーに対して第1の暗号化アルゴリズムで暗号化し、前記暗号化された中間言語ライブラリーに対して第2の暗号化アルゴリズムで暗号化して保安中間言語ライブラリーを提供する暗号化部と、を含み、
    前記実行パッケージの中間言語ライブラリーを、前記暗号化部で暗号化された前記保安中間言語ライブラリーで代替し、前記実行パッケージのモノファイルを、イメージ構造体及び前記暗号化部に対応する復号化部を含む保安モノファイルで代替するファイル代替部をさらに含み、
    前記保安モノファイルは、前記保安中間言語ライブラリーを実行する際、メインメモリーに前記保安中間言語ライブラリーを一つのイメージとしてロードして、実行コードにアクセスするために、前記イメージ構造体に復号化された中間言語ライブラリーの各パートの開始アドレスを貯蔵することを特徴とする、保安提供装置。
  2. 前記第1の暗号化アルゴリズムの暗号化キー値を第2の暗号化アルゴリズムで暗号化して保安ファイルを生成する保安ファイル生成部をさらに含むことを特徴とする、請求項に記載の保安提供装置。
  3. 前記実行エンジンライブラリーと、前記ファイル代替部で代替された前記保安中間言語ライブラリーと前記保安モノファイルと、前記保安ファイル生成部で提供された保安ファイルとを組み合わせて保安実行パッケージを生成するパッケージ組み合わせ部をさらに含むことを特徴とする、請求項に記載の保安提供装置。
  4. 前記第1の暗号化アルゴリズムは、XOR演算アルゴリズムであり、前記第2の暗号化アルゴリズムは、AES(Advanced Encryption Standard)アルゴリズムであることを特徴とする、請求項に記載の保安提供装置。
  5. 中間言語ライブラリーに対して第1の暗号化アルゴリズムで暗号化し、前記暗号化された中間言語ライブラリーに対して第2の暗号化アルゴリズムで暗号化した保安中間言語ライブラリーを、実行エンジンライブラリーにおける動作に応じてメインメモリーにロードする実行エンジン部と、
    前記メインメモリーに保安中間言語ライブラリーがロードされると、前記保安中間言語ライブラリーに必要な初期化作業を実行し、保安ファイルから前記第1の暗号化アルゴリズムに係る第1の復号化関数インターフェース及び前記第2の暗号化アルゴリズムに係る第2の復号化関数インターフェースを持ってくるイメージ構造体と、
    前記イメージ構造体で持ってきた前記第2の復号化関数インターフェースを利用し、暗号化された前記保安中間ライブラリーを復号化して、前記暗号化された中間言語ライブラリーを前記メインメモリーの中間言語ライブラリー領域に保持する復号化部と、を含むことを特徴とする、保安実行装置。
  6. 前記復号化部は、前記イメージ構造体で持ってきた前記第1の復号化関数インターフェースを用いて、前記暗号化された中間言語ライブラリーのヘッダー関連情報を、元の中間言語ライブラリーで復号化し、前記中間言語ライブラリーのヘッダー関連情報の少なくとも一つの情報を前記中間言語ライブラリー領域以外のメモリー領域に貯蔵し、前記中間言語ライブラリー領域以外のメモリー領域に貯蔵されたヘッダー関連情報の位置をイメージ構造体に貯蔵することを特徴とする、請求項に記載の保安実行装置。
  7. 前記復号化部は、前記中間言語ライブラリー領域以外のメモリー領域にヘッダー関連情報が貯蔵されると、ヘッダー関連情報が貯蔵されている前記中間言語ライブラリー領域をスクランブルするか、意味のない値で埋めることを特徴とする、請求項に記載の保安実行装置。
  8. 前記第1の暗号化アルゴリズムは、XOR演算アルゴリズムであり、前記第2の暗号化アルゴリズムは、AES(Advanced Encryption Standard)アルゴリズムであることを特徴とする、請求項乃至のいずれかに記載の保安提供装置。
  9. 複数のファイルをコンパイルして生成された中間言語ライブラリーと実行エンジンライブラリーとを組み合わせて生成された実行パッケージが貯蔵されている保安提供装置による保安提供方法であって,前記保安提供装置による保安提供方法は:
    前記実行パッケージから前記中間言語ライブラリーを抽出する段階と、
    前記実行パッケージから抽出された前記中間言語ライブラリーに対して第1の暗号化アルゴリズムで暗号化する段階と、
    前記暗号化された中間言語ライブラリーに対して第2の暗号化アルゴリズムで暗号化して保安中間言語ライブラリーを生成する段階と、
    を含み、
    前記実行パッケージの中間言語ライブラリーを、前記保安中間言語ライブラリーを生成する段階で生成された前記保安中間言語ライブラリーで代替し、前記実行パッケージのモノファイルを、イメージ構造体及び前記第1の暗号化アルゴリズム及び前記第2の暗号化アルゴリズムに対応する復号化部を含み、
    前記保安モノファイルは、前記保安中間言語ライブラリーを実行する際、メインメモリーに前記保安中間言語ライブラリーを一つのイメージとしてロードして、実行コードにアクセスするために、前記イメージ構造体に復号化された中間言語ライブラリーの各パートの開始アドレスを貯蔵することを特徴とする、保安提供方法。
  10. 前記第1の暗号化アルゴリズムの暗号化キー値を第2の暗号化アルゴリズムで暗号化して保安ファイルを生成する段階をさらに含むことを特徴とする、請求項に記載の保安提供方法。
  11. 前記実行エンジンライブラリーと、前記代替する段階で代替された前記保安中間言語ライブラリー及び前記保安モノファイルと、前記保安ファイルを生成する段階で提供された前記保安ファイルとを組み合わせて保安実行パッケージを生成する段階をさらに含むことを特徴とする、請求項10に記載の保安提供方法。
  12. 中間言語ライブラリーに対して第1の暗号化アルゴリズムで暗号化し、前記暗号化された中間言語ライブラリーに対して第2の暗号化アルゴリズムで暗号化した保安中間言語のライブラリーを、実行エンジンライブラリーの動作に応じてメインメモリーにロードする段階と、
    前記メインメモリーに保安中間言語ライブラリーがロードされると、前記保安中間言語ライブラリーに必要な初期化作業を実行する段階と、
    保安ファイルから前記第1の暗号化アルゴリズムに係る第1の復号化関数インターフェース及び前記第2の暗号化アルゴリズムに係る第2の復号化関数インターフェースを持ってくる段階と、
    前記第2の復号化関数のインターフェースを利用して暗号化された前記保安中間ライブラリーを復号化して、前記暗号化された中間言語ライブラリーを前記メインメモリーの中間言語ライブラリー領域に保持する段階と、を含むことを特徴とする保安実行方法。
  13. 前記持ってくる段階で持ってきた前記第1の復号化関数インターフェースを用いて、前記暗号化された中間言語ライブラリーのヘッダー関連情報を、元の中間言語ライブラリーで復号化する段階と、
    前記中間言語ライブラリーのヘッダー関連情報の少なくとも一つの情報を、前記中間言語ライブラリー領域以外のメモリー領域に貯蔵し、前記中間言語ライブラリー領域以外のメモリー領域に貯蔵されたヘッダー関連情報の位置をイメージ構造体に貯蔵するステップと、をさらに含むことを特徴とする、請求項12に記載の保安実行方法。
  14. 前記中間言語ライブラリー領域以外のメモリー領域にヘッダー関連情報が貯蔵されると、ヘッダー関連情報が貯蔵されている前記中間言語ライブラリー領域をスクランブルするか、意味のない値で埋める段階をさらに含むことを特徴とする、請求項13に記載の保安の実行方法。
JP2018175877A 2017-11-24 2018-09-20 共通中間言語のための保安提供装置と方法、及び保安実行装置と方法 Active JP6698774B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2017-0158127 2017-11-24
KR1020170158127A KR102001046B1 (ko) 2017-11-24 2017-11-24 공통 중간 언어를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법

Publications (2)

Publication Number Publication Date
JP2019096299A JP2019096299A (ja) 2019-06-20
JP6698774B2 true JP6698774B2 (ja) 2020-05-27

Family

ID=66632529

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018175877A Active JP6698774B2 (ja) 2017-11-24 2018-09-20 共通中間言語のための保安提供装置と方法、及び保安実行装置と方法

Country Status (4)

Country Link
US (1) US10867017B2 (ja)
JP (1) JP6698774B2 (ja)
KR (1) KR102001046B1 (ja)
CN (1) CN109840400B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110472425A (zh) * 2019-07-18 2019-11-19 福建天晴在线互动科技有限公司 基于Mono的Unity插件加密方法、存储介质
WO2022097799A1 (ko) * 2020-11-09 2022-05-12 동국대학교 산학협력단 함수 요약 정보를 생성하는 보안 취약점 분석 방법 및 이를 포함하는 전자 장치{security vulnerability analysis method for generating function abstract information and electronic device including the same}
CN116028057A (zh) * 2021-10-27 2023-04-28 北京字节跳动网络技术有限公司 代码管理的方法和装置
KR102622866B1 (ko) * 2022-09-26 2024-01-09 (주)잉카엔트웍스 매크로봇 탐지 서비스 제공 방법 및 시스템

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6539433B1 (en) * 1998-09-30 2003-03-25 Matsushita Electric Industrial Co., Ltd. System for distributing native program converted from Java bytecode to a specified home appliance
US7320075B2 (en) * 2001-11-20 2008-01-15 Safenet, Inc. Software protection method utilizing hidden application code in a protection dynamic link library object
US7260555B2 (en) * 2001-12-12 2007-08-21 Guardian Data Storage, Llc Method and architecture for providing pervasive security to digital assets
US8155306B2 (en) * 2004-12-09 2012-04-10 Intel Corporation Method and apparatus for increasing the speed of cryptographic processing
US7945958B2 (en) * 2005-06-07 2011-05-17 Vmware, Inc. Constraint injection system for immunizing software programs against vulnerabilities and attacks
US7962798B2 (en) * 2006-04-17 2011-06-14 The Trustees Of Columbia University In The City Of New York Methods, systems and media for software self-healing
US8423789B1 (en) * 2007-05-22 2013-04-16 Marvell International Ltd. Key generation techniques
US8756439B1 (en) * 2009-08-28 2014-06-17 Physical Optics Corporation Encryption key management for secured access
US8412934B2 (en) * 2010-04-07 2013-04-02 Apple Inc. System and method for backing up and restoring files encrypted with file-level content protection
US9286471B2 (en) * 2011-10-11 2016-03-15 Citrix Systems, Inc. Rules based detection and correction of problems on mobile devices of enterprise users
WO2014022636A1 (en) * 2012-08-02 2014-02-06 Trustees Of Tufts College Broad spectrum inhibitors of the post proline cleaving enzymes for treatment of hepatitis c virus infections
US9087191B2 (en) * 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
KR101471589B1 (ko) * 2013-08-22 2014-12-10 (주)잉카엔트웍스 공통중간언어 기반 프로그램을 위한 보안 제공 방법
US20150302218A1 (en) * 2014-04-22 2015-10-22 Pacid Technologies, Llc Method and system for file hiding
CN104199657B (zh) * 2014-08-27 2018-10-16 百度在线网络技术(北京)有限公司 开放平台的调用方法及装置
KR101667774B1 (ko) * 2015-04-23 2016-10-19 (주)잉카엔트웍스 스크립트 프로그램을 위한 보안 제공 장치 및 방법
KR101693249B1 (ko) * 2015-09-08 2017-01-06 충북대학교 산학협력단 어플리케이션 관리 시스템 및 방법

Also Published As

Publication number Publication date
CN109840400A (zh) 2019-06-04
US10867017B2 (en) 2020-12-15
US20190163884A1 (en) 2019-05-30
KR20190060179A (ko) 2019-06-03
KR102001046B1 (ko) 2019-07-17
CN109840400B (zh) 2023-09-29
JP2019096299A (ja) 2019-06-20

Similar Documents

Publication Publication Date Title
JP6698774B2 (ja) 共通中間言語のための保安提供装置と方法、及び保安実行装置と方法
US20160203087A1 (en) Method for providing security for common intermediate language-based program
JP5996810B2 (ja) 自己書換え基盤のアプリケーションコード難読化装置及びその方法
JP5990654B2 (ja) アプリケーションコード難読化装置及びその方法
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
RU2620712C2 (ru) Устройство виртуальной машины, имеющее управляемую ключом обфускацию, и способ
CN104298932B (zh) 一种so文件的调用方法及装置
CN105930695B (zh) 一种软件开发工具包的保护方法及装置
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
CN103902858A (zh) 一种apk应用加固的方法及系统
CN105022936A (zh) 一种类class文件加密解密方法和装置
Kim et al. Android Application Protection against Static Reverse Engineering based on Multidexing.
CN107871066B (zh) 基于安卓系统的代码编译方法及装置
CN103853943A (zh) 程序保护方法及装置
CN107220528A (zh) Java程序的保护与运行方法、装置和终端
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
KR101667774B1 (ko) 스크립트 프로그램을 위한 보안 제공 장치 및 방법
JP6698775B2 (ja) 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法
CN112115430A (zh) 一种apk的加固方法、电子设备及存储介质
EP2674892B1 (en) A method, a device and a computer program support for execution of encrypted computer code
Kumbhar et al. Hybrid Encryption for Securing SharedPreferences of Android Applications
JP6215468B2 (ja) プログラム保護装置
KR102177920B1 (ko) 원본코드 패킹장치 및 원본코드 패킹방법
Sonnleitner et al. Indirect Data Representation Via Offset Vectoring: A Code-integrity-driven In-memory Data Regeneration Scheme.
KR101704703B1 (ko) 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180920

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191023

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200114

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200428

R150 Certificate of patent or registration of utility model

Ref document number: 6698774

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250