JP6698775B2 - 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法 - Google Patents

共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法 Download PDF

Info

Publication number
JP6698775B2
JP6698775B2 JP2018175878A JP2018175878A JP6698775B2 JP 6698775 B2 JP6698775 B2 JP 6698775B2 JP 2018175878 A JP2018175878 A JP 2018175878A JP 2018175878 A JP2018175878 A JP 2018175878A JP 6698775 B2 JP6698775 B2 JP 6698775B2
Authority
JP
Japan
Prior art keywords
security
file
shared object
execution
object file
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
JP2018175878A
Other languages
English (en)
Other versions
JP2019096300A (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 JP2019096300A publication Critical patent/JP2019096300A/ja
Application granted granted Critical
Publication of JP6698775B2 publication Critical patent/JP6698775B2/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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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/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
    • G06F21/562Static detection
    • 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
    • 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
    • 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)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Bioethics (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)

Description

本発明は、共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法に関し、特に、静的解析から共有オブジェクトの初期化関数の実行コード保護のための保安提供装置と方法、及び保安実行装置と方法に関する。
ライブラリーは、複数のアプリケーションプログラムが一つのライブラリーコードを共有して使用するかどうかによって、静的ライブラリー(static library)と共有ライブラリー(shared library)に分けられる。静的ライブラリー(通常*.a形態のファイル)は、リンキング段階でライブラリーコードをアプリケーションプログラムに併合して使用するライブラリーである。一方、共有ライブラリー(通常*.so形態のファイル)は、ランタイムにライブラリーコードインスタンスがアプリケーションプログラム間で共有されて使用できるように生成されたライブラリーである。
共有ライブラリーを利用するアプリケーションプログラムでは、リンキング段階でライブラリーコードのコピーが起こらない。共有ライブラリーを使用すると、ライブラリーのコードを共有することができ、メモリーのサイズを大幅に減らすことができる。
既存の運営体制、例えばウィンドウズ(登録商標)やリナックス(登録商標)では、共有ライブラリーの使用が日常的であり、最近は、携帯電話をはじめとした小型携帯機器の性能が向上し、このようなコンピューティング環境でも、複数のアプリケーションプログラムを同時にメモリーにロードして実行することができるようになった。このように、メモリーの制限されたコンピューティング環境では、共有ライブラリー技術がさらに求められている。
共有オブジェクト(Shared Object)は、リナックスベースの運営体制で使用される共有ライブラリー(shared object)であって、略字のsoは、実際に共有オブジェクトの拡張子として使用される。実行ファイルは、ランタイムに共有オブジェクトファイルをメモリーにロードして使用する。共有オブジェクトファイルは、単独で実行できないが、一つの共有オブジェクトファイルが他の共有オブジェクトファイルをロードして使用することは可能である。
このような共有オブジェクトは、リバースエンジニアリングによる逆分析などによって重要な実行コードが露出されてしまう虞があるだけでなく、さらには、ハッカーが勝手にコードを修正できるという問題がある。
上述の問題点を解決するために、本発明は、共有オブジェクトファイルに保安を提供し、共有オブジェクトファイルをハッキングから保護する保安提供装置及び方法を提供することを目的とする。
本発明は、共有オブジェクトファイルに保安を実行して、共有オブジェクトファイルをハッキングから保護する保安実行装置及び方法を提供することを目的とする。
本発明は、特に、静的分析で共有オブジェクトの実行コードを保護して、共有オブジェクトファイルをハッキングから保護する保安提供装置及び方法を提供することを目的とする。
本発明は、特に、静的分析から共有オブジェクトの実行コードに保安を実行して、共有オブジェクトファイルをハッキングから保護する保安実行装置及び方法を提供することを目的とする。
上述の目的を達成するために、本発明の一実施例による共有オブジェクトファイルと実行エンジンライブラリーとを組み合わせて生成された実行パッケージが貯蔵されている保安提供装置は、前記実行パッケージから前記共有オブジェクトファイルを抽出するオブジェクトファイル抽出部と、前記共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグの値を別途貯蔵して、前記共有オブジェクトファイルの前記少なくとも一つのタグの値を0で埋めて保安共有オブジェクトファイルを提供するオブジェクト管理部と、前記オブジェクト管理部で別途貯蔵した前記少なくとも一つのタグの値を含む保安モジュールファイルを生成する保安モジュール生成部と、前記実行エンジンライブラリーと、前記オブジェクト管理部で提供された前記保安共有オブジェクトファイルと、前記保安モジュール生成部で提供された保安モジュールファイルとを含んで保安実行パッケージを生成するパッケージ組み合わせ部と、を提供する。
前記保安提供装置は、前記共有オブジェクトファイルの実行コードセクションのイメージを暗号化アルゴリズムで暗号化して保安実行コードファイルを生成するコード暗号化部をさらに含み、前記パッケージ組み合わせ部は、前記コード暗号化部で生成された保安実行コードファイルをさらに含んで、前記保安実行パッケージを生成することができる。
前記コード暗号化部は、前記暗号化アルゴリズムで暗号化する前に、前記共有オブジェクトファイルの前記実行コードセクションのイメージを圧縮プログラムで圧縮することができる。
前記暗号化アルゴリズムは、AES(Advanced Encryption Standard)アルゴリズムである。
前記コード暗号化部は、前記共有オブジェクトファイルの前記実行コードセクションのイメージを別途のファイルに分離した後、前記暗号化アルゴリズムで暗号化することができる。
前記共有オブジェクトファイルの初期化関数関連セクションは、動的セクションであり、前記共有オブジェクトファイルの実行コードセクションは、テキストセクションである。
本発明のまた他の実施例による保安実行装置は、運営体系を通じて共有オブジェクトファイルに対して動的ローダーが呼び出されると、前記動的ローダーの動作によって前記共有オブジェクトファイルをメモリーにロードして、前記ロードされた共有オブジェクトファイルのベースアドレスを取り戻す動的ローダー部と、別途貯蔵された前記共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグの値を読み取って前記ベースアドレスに加え、前記ベースアドレスにタグの値を加えたアドレスに貯蔵されている初期化関数アドレスを持ってきて、該当初期化関数を呼び出すオブジェクト管理部とを提供することで、上述の目的を達成することができる。
前記オブジェクト管理部は、前記共有オブジェクトファイルの前記初期化関数関連セクションの動的テーブル初期化アレイ大きさの数だけ前記ベースアドレスにタグの値を加えたアドレスに貯蔵されている初期化関数アドレスからアレイの値を順に持ってきて、それぞれ初期化関数を呼び出すことができる。
前記保安実行装置は、前記共有オブジェクトファイルの実行コードセクションのイメージを暗号化アルゴリズムで暗号化して提供された保安実行コードファイルを復号化するコード復号化部をさらに含む。
前記コード復号化部は、別途のファイルで貯蔵された前記保安実行コードファイルを復号化して、前記メモリーにロードされた前記共有オブジェクトファイルの前記実行コードセクションの位置に復元させることをさらに含む。
本発明のまた他の実施例による保安提供方法は、共有オブジェクトファイルと実行エンジンライブラリーとを組み合わせて生成された実行パッケージを貯蔵する段階と、前記実行パッケージから前記共有オブジェクトファイルを抽出する段階と、前記共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグの値を別途貯蔵して、前記共有オブジェクトファイルの前記少なくとも一つのタグの値を0で埋めて保安共有オブジェクトファイルを提供する段階と、前記保安共有オブジェクトファイルを提供する段階で別途貯蔵した前記少なくとも一つのタグの値を含む保安モジュールファイルを生成して提供する段階と、前記実行エンジンライブラリーと、前記保安共有オブジェクトファイルを提供する段階で提供された前記保安共有オブジェクトファイルと、前記保安モジュールファイルを生成する段階で提供された保安モジュールファイルとを含んで保安実行パッケージを生成する段階とを提供することにより、上述の目的を達成することができる。
本発明のまた他の実施例による保安実行方法は、運営体系を通じて共有オブジェクトファイルに対して動的ローダーを呼び出す段階と、前記動的ローダーの動作により、前記共有オブジェクトファイルをメモリーにロードして、前記ロードされた共有オブジェクトファイルのベースアドレスを取り戻す段階と、別途貯蔵された前記共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグの値を読み取って、前記ベースアドレスに加える段階と、前記ベースアドレスにタグの値を加えたアドレスに貯蔵されている初期化関数アドレスを持ってきて、該当初期化関数を呼び出す段階とを提供することにより、上述の目的を達成することができる。
前記保安実行方法は、前記共有オブジェクトファイルの前記初期化関数関連セクションの少なくとも一つのタグのオフセット値が指すオブジェクトファイル領域の位置に貯蔵されている初期化関数アドレスをゴミ値で埋める段階をさらに含む。
前記保安実行方法は、前記共有オブジェクトファイルのELFヘッダー領域をゴミ値で埋める段階をさらに含む。
上述の構成により、本発明は、静的分析攻撃から共有オブジェクトファイルの重要な実行コードをより完璧に保護することができる。
また、本発明は、共有オブジェクトファイルの正常実行に必要な一部情報を隠すことにより、共有オブジェクトダンプ及び再使用を防止することができる。
図1は、本発明の一実施例による共有オブジェクトのコード保護のための保安提供システムの構成図。 図2は、一般的な共有オブジェクトファイルの構造を概略的に示す図。 図3は、本発明を説明するために、共有オブジェクトファイルの構造を具体的に示す図。 図4は、図1の保安提供装置のブロック図。 図5は、本発明の一実施例による共有オブジェクトファイルに対する保安提供動作を説明する図。 図6は、図1の保安実行装置のブロック図。 図7は、本発明の実施例による保安モジュールファイルがメインメモリーユニットにロードされた状態を説明する図。 図8a〜図8cは、図7の保安モジュールファイルの動作を説明するために示した図。 図9は、本発明の一実施例による共有オブジェクトファイルのコード保護のための保安提供方法の流れ図。 図10は、本発明の他の実施例による共有オブジェクトファイルのコード保護のための保安実行方法の流れ図。
以下、添付の図面を参照し、本発明による共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法の好ましい実施例を説明する。参考に、本発明を説明するにあたって、本発明の構成要素を指す用語は、それぞれの構成要素の機能を考慮して命名されたものであるため、本発明の技術的構成要素を限定する意味として理解されてはいけない。
図1は、本発明の一実施例による共有オブジェクトのコード保護のための保安提供システムの構成図である。
図1に示したように、本発明による共有オブジェクトのコード保護のための保安提供システムは、プログラム開発装置110、保安提供装置120、及び保安実行装置130を含む。ここで、プログラム開発装置110、保安提供装置120、及び保安実行装置130は、有無線通信網を通じて連結される。
プログラム開発装置110は、開発者がアプリケーションプログラムを開発するための装置である。実行エンジン、例えば、ユニティエンジンは、アプリケーションプログラムが開発されると、アプリケーションソースコードをコンパイルしてバイナリーコードを生成し、生成されたバイナリーコードと必須リソースライブラリーなどとを含んで実行パッケージ、例えばユニティパッケージを生成する。
保安提供装置120は、プログラム開発装置110で生成されたユニティパッケージに対する保安を提供するための装置である。保安提供装置120は、プログラム開発装置110で生成されたユニティパッケージがアップロードされると、共有オブジェクトファイルを抽出し、抽出されたオブジェクトの実行コードを暗号化して、共有オブジェクトの初期化関数に係る少なくとも一つのタグの値を別途の領域に貯蔵し、それに保安モジュールファイルを追加した後、再び保安ユニティパッケージを生成する。
保安実行装置130は、実行プログラム、例えばゲームプログラムが実行されるユーザー端末装置である。保安実行装置130は、プログラム開発装置110または保安提供装置120から保安ユニティパッケージをダウンロードして、実行プログラムを実行することができる。
図1では、プログラム開発装置110と保安提供装置120がそれぞれ別途の装置として示されているが、これは例示であって、本発明はこれに限定されない。
図2は、一般的な共有オブジェクトファイルの構造を概略的に示す図であり、図3は、本発明を説明するために、共有オブジェクトファイルの構造を具体的に示す図である。
共有オブジェクト(SO)ファイルは、図2に示したように、ELF(Executable and Linkable Format)形式になっている。ELFは、実行ファイル、オブジェクトファイル、共有ライブラリー、及びコアダンプのための標準ファイル形式である。 ELFは、1999年86openプロジェクトによって、x86ベースのユニックス及びユニックス系列システムの標準ファイル形式として選択された。
図2を見ると、本発明の実施例によるSOファイル200は、SOファイルの先頭にある一つのELFヘッダー210と、SOファイルのランタイム実行に必要な情報を含むセグメントを定義するプログラムヘッダーテーブル(Program header table)220と、リンキングと再配置に必要な重要な情報を含むセクションを定義するセクションヘッダーテーブル(Section header table)を含む。
一方、動的ローダー(dlopen)は、ユニックス系列運営体系で提供するシステム関数でSOファイルを開けて、メモリーにロードし、実際に使用できるように準備する作業を行う。アプリケーションファイルまたは実行ファイルでSOファイルを使用するためには、必ずdlopen関数を呼び出さなければならない。dlopen関数の呼び出しによってメモリーにロードされたSOファイルは、後で他の実行ファイルまたはSOファイルでdlopenの要請が再び発生した場合、メモリーのロード過程を繰り返すことなく、既にメモリーにロードされている情報を再使用できるリンクを提供する。本発明のSOファイルのコード領域保護技術は、dlopen関数のこのような特性を活用して具現される。
図3に示されたように、図2に示されたプログラムヘッダーテーブル220は、プログラムヘッダー(Program header)及びSOファイルのランタイム実行に必要な少なくとも一つのアドレスが存在するプログラムテーブル領域を含む。そしてセクションヘッダーテーブル230は、セクションヘッダー(Section header)、テキストセクション(.text section)及び動的セクション(.dynamic section)を含む。
セクションヘッダーには、SOファイルに含まれているさまざまなセクション(データ束)に対する位置及びサイズ情報が貯蔵されており、セクションは、ELFが共有ライブラリーに使用される場合に有効な概念で、バイナリーデータ束の単位と見られる。複数のセクションの中で、テキストセクションには、全てのプログラムコードが含まれており、動的セクションには、タグ及びその値が含まれているため、これらのセクションが、本発明の保護対象となる最も重要なセクションである。
テキストセクション内のコンストラクター(constructor)は、共有ライブラリーが最初にメモリーにロードされる時、必ず一度だけ実行される初期化関数または関数の集合である。システムにdlopenを要請すると、システムは、内部でコンストラクタ関数を実行させる。初期化関数が実行されない場合、正常的なプログラムの実行が不可能であり、同一なSOファイルに対して数回dlopenが行われても、全ての初期化関数は、ただ一回だけ呼び出される。
以下、図3に示された共有オブジェクトファイルの構造を利用して、共有オブジェクトファイルの動作を詳細に説明する。
SOファイルの最初の部分を構成するELFヘッダーには、追加的な情報を含んでいるプログラムヘッダー及びセクションヘッダーに対する位置及び数の情報が貯蔵されている。実行ファイルがSOファイルをロードすると、実行ファイルは、ELFヘッダーに貯蔵されたプログラムヘッダー及びセクションヘッダーに対する位置及び数の情報を利用して、プログラムヘッダー及びセクションヘッダーの位置を探す((1)参照)。
セクションヘッダーには、SOファイルに含まれているさまざまなセクションに対する位置及びサイズの情報が貯蔵されている。実行ファイルは、セクションヘッダーに貯蔵されたテキストセクションの位置情報を利用して、テキストセクションの位置を探す((2)参照)。テキストセクションは、本発明に係る最も重要なセクションであって、全ての実行コードがバイナリーデータ形式として貯蔵されており、暗号化による保護の対象となる領域である。
実行ファイルは、セクションヘッダーに貯蔵された動的セクションの位置情報を利用して、動的セクションの位置を探す((3)参照)。動的セクションには、<タグ:値>形態の情報が複数含まれている。これらのうち、本発明では、動的テーブル初期化(DT_INIT)タグ、動的テーブル初期化アレイ(DT_INIT_ARRAY)タグ及び動的テーブル初期化アレイサイズ(DT_INIT_ARRAYSZ)タグが使用される。そして、動的テーブルの初期化(DT_INIT)タグ及び動的テーブル初期化アレイ(DT_INIT_ARRAY)タグには、タグの値としてアドレスポインター、即ちSOファイルが最初にdlopenによってメモリーにロードされた時点でシステムによって1回だけ呼び出される初期化関数のアドレスを貯蔵しているメモリー位置の値(offser)が貯蔵されており、動的テーブル初期化アレイサイズ(DT_INIT_ARRAYSZ)タグには、タグの値として初期化関数の数が貯蔵されている。
初期化関数が一つである場合は、動的テーブル初期化(DT_INIT)タグの値が使用されて、プログラムテーブル領域の一つのアドレスを指す((4)参照)。しかし、初期化関数が複数である場合は、動的テーブル初期化アレイ(DT_INIT_ARRAY)タグの値が使用されて、動的テーブル初期化アレイサイズ(DT_INIT_ARRAYSZ)タグの数Nに応じて、N個の全ての初期化関数が順に各1回ずつ呼び出される((5)参照)。初期化関数の数は、動的テーブル初期化アレイサイズ(DT_INIT_ARRAYSZ)タグの値に貯蔵されている((6)参照)。
図4は、図1の保安提供装置のブロック図であり、図5は、本発明の一実施例による共有オブジェクトファイルに対する保安提供動作を説明する図である。
図4に示すように、保安提供装置120は、SOファイル抽出部410、コード暗号化部420、オブジェクト管理部430、保安モジュール生成部440、及びパッケージ組み合わせ部450を含む。
SOファイル抽出部410は、プログラム開発装置110からアップロードされたユニティパッケージの複数のライブラリー及びファイルを分析してSOファイルを抽出する。即ち、SOファイル抽出部410は、SOファイルと実行エンジンライブラリーとを組み合わせて生成された実行パッケージからSOファイルを抽出する。
コード暗号化部420は、SOファイルの実行コードセクション、即ち、保護対象のテキストセクションの全体領域を別途のファイルに分離し、分離されたテキストセクションファイルを圧縮プログラム、例えばZIPで圧縮する。さらに、コード暗号化部420は、ZIPによって圧縮されたテキストセクションファイルを暗号化アルゴリズムで暗号化を行い、保安テキストセクションファイルを生成する((1)参照)。暗号化アルゴリズムは、DES、AES、RSAなどのような暗号化アルゴリズムのうち、少なくとも一つを含むことができる。ここで、暗号化アルゴリズムとしては、DLL全体に対して暗号化を行うAES(Advanced Encryption Standard)アルゴリズムが好ましい。
オブジェクト管理部430は、まず、実行コードセクション、即ち保護対象のテキストセクションが別途のファイルとして生成されたため、テキストセクションのあるSOファイル領域を全て0で埋める((2)参照)。
さらにオブジェクト管理部430は、動的セクションの三つのタグの値を別途の領域に貯蔵しておき、SOファイル内の元の値を全て0で埋める((3)参照)。この場合、DT_INIT_ARRAYSZタグの値を0に変えないと、非正常的なコード、即ち、0に変えられている初期化関数が呼び出され、エラーが発生し、プログラムが中止されるため、初期化関数の呼び出しを防ぐために、0に変える過程が必ず必要である。
保安モジュール生成部440は、SOファイルに保安を適用するための構成であって、オブジェクト管理部430で別途貯蔵した少なくとも一つのタグの値を含む保安モジュールファイルを生成する。保安モジュール生成部440で生成された保安モジュールファイルは、保安ライブラリーファイルである。
保安モジュール生成部440は、コード暗号化部420で暗号化された保安SOファイルを復号化するための復号化アルゴリズムを含み、コード暗号化部420が保安テキストセクションファイルを別途のファイルとして貯蔵した場合は、元のテキストセクションのオフセット値をさらに含むことができる。
さらに、保安モジュール生成部440は、ライブラリーの完全性検証のためのハッシュレジストリー関数と、デバッガー(debugger)を利用したゲームプログラム分析を防止するためのアンチデバッグー関数と、ゲームプログラムのメモリー状態をダンプすることを防止するためのアンチダンプ関数などを含むことができる。
パッケージ組み合わせ部450は、実行エンジンライブラリーと、コード暗号化部420で生成された保安実行コードファイルと、オブジェクト管理部430で提供された保安共有オブジェクトファイルと、保安モジュール生成部440で提供された保安モジュールファイルとを含んで保安実行パッケージを生成する。
図6は、図1の保安実行装置のブロック図である。
図6に示されたように、保安実行装置130は、CPU610、メインメモリーユニット620、ディスプレイユニット630、補助メモリユニット640は、入力ユニット650と、ネットワークユニット660とを含む。
補助メモリーユニット640には、保安提供装置120からネットワークユニット660を通じてダウンロードされた保安実行パッケージが貯蔵される。ゲームプログラムの保安実行パッケージ、例えば、保安ユニティパッケージの実行が要請されると、CPU610は、補助メモリーユニット640に貯蔵された保安ユニティパッケージをメインメモリーユニット620にロードする。一方、ゲームプログラムは、入力ユニット650やネットワークユニット660を通じて新しい値を入力することもできる。
本発明の実施例による保安実行装置130は、パーソナルコンピューター(PC:Personal Computer)、ノートパソコン、タブレット、携帯情報端末(PDA:Personal Digital Assistant)、ゲームコンソール、携帯マルチメディアプレーヤー(PMP:Portable Multimedia Player)、プレイステーションポータブル(PSP:PlayStation Portable)、無線通信端末(Wireless Communication Terminal)、スマートフォン(Smart Phone)、TV、メディアプレーヤーなどのユーザー端末である。
図7は、本発明の実施例による保安モジュールファイルがメインメモリーユニットにロードされた状態を説明する図である。図8a〜図8cは、図7の保安モジュールファイルの動作を説明するための図である。
図7に示されたように、保安モジュールファイル700は、動的ローダー部710、コード復号化部720、及びオブジェクト管理部730を含む。
動的ローダー部710は、運営体系を通じて、SOファイルに対して動的ローダーが呼び出されると、SOファイルをメインメモリーユニット620にロードして、ロードされたSOファイルのベースアドレスを取り戻す。
コード復号化部720は、オブジェクトファイルの実行コードセクションを暗号化アルゴリズムで暗号化して提供された保安実行コードファイルを復号化する。コード復号化部720は、別途のファイルとして貯蔵された保安実行コードファイルを復号化し、メインメモリーユニット620にロードされたSOファイルの実行コードセクションの位置に復元させる。
オブジェクト管理部630は、別途貯蔵されたSOファイルの初期化関数関連セクションの少なくとも一つのタグの値を読み取って、ベースアドレスに加えた後、メインメモリーユニット620の該当アドレスに貯蔵されている初期化関数アドレスを持ってきて、初期化関数を呼び出す。さらに、オブジェクト管理部630は、SOファイルの初期化関数関連セクションの動的テーブル初期化アレイ大きさの数だけメインメモリーユニット620の該当アドレスに貯蔵されている初期化関数アドレスアレイの値を順に持ってきて、それぞれ初期化関数を呼び出すことができる。
以下、図8a〜図8cを参照して、保安モジュールファイルの動作をさらに詳細に説明する。
実行ファイルは、ターゲットSOファイルを使用する前に、まず、保安モジュールファイル700を呼び出す。保安モジュールファイル700が呼び出されると、まず、運営体系を通じて、該当SOファイルに対して動的ローダー(dlopen)を呼び出す(図8aの(1)参照)。
動的ローダーの内部ロジックにより、該当SOファイルがメインメモリーユニット620にロードされる。保安モジュールファイル700は、SOファイルのロードが完了すると、ロードされたSOファイルのベースアドレスを取り戻す(図8aの(2)を参照)。
保安モジュールファイル700は、別途のファイルに貯蔵されたテキストセクションのデータを復号化して、圧縮アルゴリズムにより圧縮されたテキストセクションのデータを解除し、原本データを確保する(図8aの(3)を参照)。保安モジュールファイル700は、確保された原本イメージを、貯蔵されたテキストセクションのオフセット値を利用して、メインメモリーユニットのSOファイル領域のテキストセクション位置に復元させる(図8aの(4)を参照)。
保安モジュールファイル700は、テキストセクションの復元が完了すると、まず、別途貯蔵しておいたDT_INITタグの値を読み取って、SOファイルのベースアドレスにこのタグの値を加える(図8bの(1)参照)。保安モジュールファイル700は、ベースアドレスにタグの値を加えたアドレスに貯蔵されている初期化関数アドレスを持ってくる(図8bの(2)を参照)。保安モジュールファイル700は、初期化関数アドレスを利用して、該当コンストラクター関数を呼び出す(図8bの(3)参照)。一方、保安モジュールファイル700は、読み取ったDT_INITタグの値が0であれば、次の段階に移動する。
保安モジュールファイル700は、別途貯蔵しておいたDT_INIT_ARRAYタグの値を読み取って、SOファイルのベースアドレスにこのタグの値を加える(図8bの(4)参照)。保安モジュールファイル700は、ベースアドレスにタグの値を加えたアドレスに貯蔵されている初期化関数アドレスを持ってくる(図8bの(5)参照)。保安モジュールファイル700は、初期化関数アドレス及びDT_INIT_ARRAYタグの値を利用して、初期化関数アドレスアレイの値を順に持ってきて、それぞれ初期化関数を呼び出す(図8bの(6)参照)。
上述の動作により、全ての初期化関数が1回ずつ実行された状態であるため、以後、実行プログラムでSOファイルに対して動的ローダー(dlopen)を行うと、既にメインメモリーユニット620にロードされて復号化が完了したデータのポインターが返され、アプリケーションプログラムは、正常的に実行される。
一方、保安モジュールファイル700は、DT_INITタグが指す位置に貯蔵されている初期化関数アドレスをゴミ値で埋めて、またDT_INIT_ARRAYタグが指している位置のアレイに貯蔵されている全ての初期化関数アドレスもゴミ値で埋める(図8c参照)。
保安モジュールファイル700が、メモリーダンプ及び動的分析を防ぐために、基本的に付着防御機能を含んでいるが、ハッカーがこのような付着防御を迂回して、メモリーにロードされたSOファイルをダンプすることができる。しかし、初期化関数に対する情報がゴミ値で満たされているため、正常的に初期化関数を実行することもできないばかりか、ダンプしたSOファイルを変調することもできない。
また、保安モジュールファイル700は、追加にヘッダー領域もゴミ値で埋めて、メモリーダンプのための位置検索をさらに難しくすることができる(図8c参照)。即ち、ELFヘッダーには、プログラムヘッダー及びセクションヘッダーに対する情報が含まれているが、これらの情報のない共有オブジェクトをダンプしてリサイクルすると、アプリケーションプログラムが非正常的にに実行されるか、実行自体ができない。
図9は、本発明の一実施例による共有オブジェクトファイルのコード保護のための保安提供方法の流れ図である。
保安提供装置120は、共有オブジェクトファイルと実行エンジンライブラリーとを組み合わせて生成された実行パッケージを貯蔵する(S902)。共有オブジェクトファイル抽出部410は、実行パッケージから共有オブジェクトファイルを抽出する(S904)。
コード暗号化部420は、共有オブジェクトファイルの実行コードセクションのイメージを暗号化アルゴリズムで暗号化し、保安実行コードファイルを生成する(S906)。この場合、コード暗号化部420は、共有オブジェクトファイルの実行コードセクションのイメージを別途のファイルに分離した後、暗号化アルゴリズムで暗号化することができる。
オブジェクト管理部430は、共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグの値を別途貯蔵して、共有オブジェクトファイルの少なくとも一つのタグの値を0で埋めて、保安共有オブジェクトファイルを提供する(S908) 。
保安モジュール生成部440は、オブジェクト管理部430で別途貯蔵した少なくとも一つのタグの値を含む保安モジュールファイルを生成する(S910)。パッケージ組み合わせ部450は、実行エンジンライブラリーと、コード暗号化部420で生成された保安実行コードファイルと、オブジェクト管理部430で提供された前記保安共有オブジェクトファイルと、保安モジュール生成部440で提供された保安モジュールファイルとを含み、保安実行パッケージを生成する(S912)。
図10は、本発明の他の実施例による共有オブジェクトファイルのコード保護のための保安実行方法の流れ図である。
実行ファイルは、対象SOファイルを使用する前に、まず、保安モジュールファイル700を呼び出す(S1002)。保安モジュールファイル700は、運営体系を通じて共有オブジェクトファイルに対して動的ローダーを呼び出す(S1004)。動的ローダーは、SOファイルをメインメモリーユニット620にロードし、ロードされたSOファイルのベースアドレスを保安モジュールファイル700に返すため、保安モジュールファイル700は、ベースアドレスを取り戻す(S1006)。
保安モジュールファイル700は、オブジェクトファイルの実行コードセクションを暗号化アルゴリズムで暗号化して、提供された保安実行コードファイルを復号化する(S1008)。保安実行コードファイルが別途のファイルに貯蔵された場合、保安モジュールファイル700は、別途のファイルに貯蔵された保安実行コードファイルを復号化し、メインメモリーユニット620にロードされたSOファイルの実行コードセクションの位置に復元させる。
保安モジュールファイル700は、別途貯蔵された共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグの値を読み取って、前記ベースアドレスに加える(S1010)。
保安モジュールファイル700は、ベースアドレスにタグの値を加えたアドレスに貯蔵されている初期化関数アドレスを持ってきて、該当初期化関数を呼び出す(S1012)。さらに、保安モジュールファイル700は、SOファイルの初期化関数関連セクションの動的テーブルの初期化アレイ大きさの数だけメインメモリーユニット620の該当アドレスに貯蔵されている初期化関数アドレスアレイの値を順に持ってきて、それぞれ初期化関数を呼び出すことができる。
保安モジュールファイル700は、共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグのオフセット値が指すオブジェクトファイル領域の位置に貯蔵されている初期化関数アドレスをゴミ値で埋める(S1014)。さらに、保安モジュールファイル700は、共有オブジェクトファイルのELFヘッダー領域をゴミ値で埋める(S1016)。
以上説明した本発明の実施例は、本発明の技術思想を例示的に示したものに過ぎず、本発明の保護範囲は、以下の特許請求の範囲によって解釈されるべきである。また、本発明の属する技術分野で通常の知識を有する者であれば、本発明の本質的な特性から逸脱しない範囲で様々な修正や変更が可能であって、本発明と同等の範囲内にある全ての技術思想は、本発明の権利範囲に含まれるものと解釈されるべきである。
110:プログラム開発装置
120:保安提供装置
130:保安実行装置
410:SOファイル抽出部
420:コード暗号化部
430:オブジェクト管理部
440:保安モジュール生成部
450:パッケージ組み合わせ部
610:CPU
620:メインメモリーユニット
630:ディスプレイユニット
640:補助メモリーユニット
650:入力ユニット
660:ネットワークユニット
710:動的ローダー部
720:コード復号化部
730:オブジェクト管理部

Claims (19)

  1. 共有オブジェクトファイルと実行エンジンライブラリーとを組み合わせて生成された実行パッケージが貯蔵されている保安提供装置であって、
    前記実行パッケージから前記共有オブジェクトファイルを抽出するオブジェクトファイル抽出部と、
    前記共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグの値を別途貯蔵して、前記共有オブジェクトファイルの前記少なくとも一つのタグの値を0で埋めて保安共有オブジェクトファイルを提供するオブジェクト管理部と、
    前記オブジェクト管理部で別途貯蔵した前記少なくとも一つのタグの値を含む保安モジュールファイルを生成する保安モジュール生成部と、
    前記実行エンジンライブラリーと、前記オブジェクト管理部で提供された前記保安共有オブジェクトファイルと、前記保安モジュール生成部で提供された保安モジュールファイルとを含んで保安実行パッケージを生成するパッケージ組み合わせ部と、
    を含むことを特徴とする、保安提供装置。
  2. 前記共有オブジェクトファイルの実行コードセクションのイメージを暗号化アルゴリズムで暗号化して保安実行コードファイルを生成するコード暗号化部をさらに含み、
    前記パッケージ組み合わせ部は、前記コード暗号化部で生成された保安実行コードファイルをさらに含んで、前記保安実行パッケージを生成することを特徴とする、請求項1に記載の保安提供装置。
  3. 前記コード暗号化部は、前記暗号化アルゴリズムで暗号化する前に、前記共有オブジェクトファイルの前記実行コードセクションのイメージを圧縮プログラムで圧縮することを特徴とする、請求項2に記載の保安提供装置。
  4. 前記暗号化アルゴリズムは、AES(Advanced Encryption Standard)アルゴリズムであることを特徴とする、請求項3に記載の保安提供装置。
  5. 前記コード暗号化部は、前記共有オブジェクトファイルの前記実行コードセクションのイメージを別途のファイルに分離した後、前記暗号化アルゴリズムで暗号化することを特徴とする、請求項2乃至4のいずれかに記載の保安提供装置。
  6. 前記共有オブジェクトファイルの初期化関数関連セクションは、動的セクションであり、前記共有オブジェクトファイルの実行コードセクションは、テキストセクションであることを特徴とする、請求項2乃至4のいずれかに記載の保安提供装置。
  7. 運営体系を通じて共有オブジェクトファイルに対して動的ローダーが呼び出されると、前記動的ローダーの動作によって前記共有オブジェクトファイルをメモリーにロードして、前記ロードされた共有オブジェクトファイルのベースアドレスを取り戻す動的ローダー部と、
    別途貯蔵された前記共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグの値を読み取って前記ベースアドレスに加え、前記ベースアドレスにタグの値を加えたアドレスに貯蔵されている初期化関数アドレスを持ってきて、該当初期化関数を呼び出すオブジェクト管理部とを含むことを特徴とする、保安実行装置。
  8. 前記オブジェクト管理部は、前記共有オブジェクトファイルの前記初期化関数関連セクションの動的テーブル初期化アレイ大きさの数だけ前記ベースアドレスにタグの値を加えたアドレスに貯蔵されている初期化関数アドレスからアレイの値を順に持ってきて、それぞれ初期化関数を呼び出すことを特徴とする、請求項7に記載の保安実行装置。
  9. 前記共有オブジェクトファイルの実行コードセクションのイメージを暗号化アルゴリズムで暗号化して提供された保安実行コードファイルを復号化するコード復号化部をさらに含むことを特徴とする、請求項7または8に記載の保安実行装置。
  10. 前記コード復号化部は、別途のファイルで貯蔵された前記保安実行コードファイルを復号化して、前記メモリーにロードされた前記共有オブジェクトファイルの前記実行コードセクションの位置に復元させることをさらに含むことを特徴とする、請求項9に記載の保安実行装置。
  11. 共有オブジェクトファイルと実行エンジンライブラリーとを組み合わせて生成された実行パッケージが貯蔵されている保安提供装置による保安提供方法であって, 前記保安提供装置による保安提供方法は:
    前記実行パッケージから前記共有オブジェクトファイルを抽出する段階と、
    前記共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグの値を別途貯蔵して、前記共有オブジェクトファイルの前記少なくとも一つのタグの値を0で埋めて保安共有オブジェクトファイルを提供する段階と、
    前記保安共有オブジェクトファイルを提供する段階で別途貯蔵した前記少なくとも一つのタグの値を含む保安モジュールファイルを生成して提供する段階と、
    前記実行エンジンライブラリーと、前記保安共有オブジェクトファイルを提供する段階で提供された前記保安共有オブジェクトファイルと、前記保安モジュールファイルを生成する段階で提供された保安モジュールファイルとを含んで保安実行パッケージを生成する段階と、を含むことを特徴とする、保安提供方法。
  12. 前記共有オブジェクトファイルの実行コードセクションのイメージを暗号化アルゴリズムで暗号化して保安実行コードファイルを生成する段階をさらに含み、
    前記保安実行パッケージを生成する段階は、前記保安実行コードファイルを生成する段階で生成された保安実行コードファイルをさらに含んで、前記保安実行パッケージを生成することを特徴とする、請求項11に記載の保安提供方法
  13. 前記保安実行コードファイルを生成する段階は、前記共有オブジェクトファイルの前記実行コードセクションのイメージを別途のファイルに分離した後、前記暗号化アルゴリズムで暗号化することを特徴とする、請求項12に記載の保安提供方法。
  14. 運営体系を通じて共有オブジェクトファイルに対して動的ローダーを呼び出す段階と、
    前記動的ローダーの動作により、前記共有オブジェクトファイルをメモリーにロードして、前記ロードされた共有オブジェクトファイルのベースアドレスを取り戻す段階と、
    別途貯蔵された前記共有オブジェクトファイルの初期化関数関連セクションの少なくとも一つのタグの値を読み取って、前記ベースアドレスに加える段階と、
    前記ベースアドレスにタグの値を加えたアドレスに貯蔵されている初期化関数アドレスを持ってきて、該当初期化関数を呼び出す段階と、を含むことを特徴とする、保安実行方法。
  15. 前記該当初期化関数を呼び出す段階は、前記共有オブジェクトファイルの前記初期化関数関連セクションの動的テーブル初期化アレイ大きさの数だけ前記ベースアドレスにタグの値を加えたアドレスに貯蔵されている初期化関数アドレスからアレイの値を順に持ってきて、それぞれ初期化関数を呼び出すことを特徴とする、請求項14に記載の保安実行方法。
  16. 前記共有オブジェクトファイルの実行コードセクションのイメージを暗号化アルゴリズムで暗号化して提供された保安実行コードファイルを復号化する段階をさらに含むことを特徴とする、請求項14または15に記載の保安実行方法。
  17. 前記保安実行コードファイルを復号化する段階は、別途のファイルで貯蔵された前記保安実行コードファイルを復号化して、前記メモリーにロードされた前記共有オブジェクトファイルの前記実行コードセクションの位置に復元させることをさらに含むことを特徴とする、請求項16に記載の保安実行方法。
  18. 前記該当初期化関数を呼び出す段階の後に、前記共有オブジェクトファイルの前記初期化関数関連セクションの少なくとも一つのタグのオフセット値が指すオブジェクトファイル領域の位置に貯蔵されている初期化関数アドレスをゴミ値で埋める段階をさらに含むことを特徴とする、請求項14または15に記載の保安実行方法。
  19. 前記該当初期化関数を呼び出す段階の後に、前記共有オブジェクトファイルのELFヘッダー領域をゴミ値で埋める段階をさらに含むことを特徴とする、請求項18に記載の保安実行方法。
JP2018175878A 2017-11-24 2018-09-20 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法 Active JP6698775B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2017-0158133 2017-11-24
KR1020170158133A KR102039380B1 (ko) 2017-11-24 2017-11-24 공유 오브젝트의 코드 보호를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법

Publications (2)

Publication Number Publication Date
JP2019096300A JP2019096300A (ja) 2019-06-20
JP6698775B2 true JP6698775B2 (ja) 2020-05-27

Family

ID=66632453

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018175878A Active JP6698775B2 (ja) 2017-11-24 2018-09-20 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法

Country Status (4)

Country Link
US (1) US11061998B2 (ja)
JP (1) JP6698775B2 (ja)
KR (1) KR102039380B1 (ja)
CN (1) CN109840396B (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112800418B (zh) * 2020-12-31 2022-05-13 北京深思数盾科技股份有限公司 自定义程序集的文件保护方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112025A (en) * 1996-03-25 2000-08-29 Sun Microsystems, Inc. System and method for dynamic program linking
US6598130B2 (en) * 2000-07-31 2003-07-22 Hewlett-Packard Development Company, L.P. Technique for referencing distributed shared memory locally rather than remotely
US7685596B1 (en) * 2004-09-01 2010-03-23 The Mathworks, Inc. Deploying and distributing of applications and software components
US9111036B2 (en) * 2010-04-30 2015-08-18 Red Hat, Inc. Preloading unwind data for non-intrusive backtracing
CN102591659A (zh) * 2011-12-28 2012-07-18 中标软件有限公司 一种移动终端主界面上的微件实现方法及其管理方法
KR101536920B1 (ko) * 2013-12-16 2015-07-15 주식회사 에스이웍스 Arm 프로세서 기반의 파일 난독화 방법
TWI524208B (zh) * 2013-12-31 2016-03-01 Giga Byte Tech Co Ltd Encryption and Decryption of Function Library of Open System
KR101671336B1 (ko) * 2014-02-27 2016-11-16 (주)스마일게이트엔터테인먼트 코드 분리가 적용된 언패킹 보호 방법 및 장치
KR101695639B1 (ko) * 2014-08-13 2017-01-16 (주)잉카엔트웍스 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
CN105227565B (zh) * 2015-10-13 2019-02-22 北京娜迦信息科技发展有限公司 用于安卓系统的防逆向破解共享对象文件的方法和装置
CN105825087B (zh) * 2016-03-16 2019-07-26 福建联迪商用设备有限公司 Elf共享库保护方法及其系统

Also Published As

Publication number Publication date
CN109840396B (zh) 2023-09-29
KR102039380B1 (ko) 2019-11-01
US11061998B2 (en) 2021-07-13
CN109840396A (zh) 2019-06-04
US20190163885A1 (en) 2019-05-30
JP2019096300A (ja) 2019-06-20
KR20190060181A (ko) 2019-06-03

Similar Documents

Publication Publication Date Title
US20160203087A1 (en) Method for providing security for common intermediate language-based program
US20070271446A1 (en) Application Execution Device and Application Execution Device Application Execution Method
US20080216071A1 (en) Software Protection
CN108491235B (zh) 结合动态加载和函数Native化的DEX保护方法
CN106203006A (zh) 基于dex与so文件动态执行的Android应用加固方法
CN109784007B (zh) 一种字节码加密的方法、字节码解密的方法及终端
US20160275019A1 (en) Method and apparatus for protecting dynamic libraries
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
CN110826031B (zh) 加密方法、装置、计算机设备及存储介质
CN111191195A (zh) 一种用于保护apk的方法和装置
CN109840400B (zh) 提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法
CN105930695A (zh) 一种软件开发工具包的保护方法及装置
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
CN111159658B (zh) 字节码处理方法、系统、装置、计算机设备和存储介质
CN111737718A (zh) 一种jar包的加解密方法、装置、终端设备和存储介质
JP6698775B2 (ja) 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法
KR101667774B1 (ko) 스크립트 프로그램을 위한 보안 제공 장치 및 방법
JP2008040853A (ja) アプリケーション実行方法およびアプリケーション実行装置
KR101863325B1 (ko) 역공학 방지 방법 및 장치
CN111290781A (zh) Npk方式打包脚本、运行npk格式脚本文件的方法及装置
US9965621B2 (en) Program protection device
KR101704703B1 (ko) 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
Morris et al. Privacy protected ELF for private computing on public platforms
CN117195166A (zh) 组件源码保护方法、装置、计算机设备和存储介质
CN117492900A (zh) 类文件加载方法、装置、电子设备及存储介质

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

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250