JP6227772B2 - 動的ライブラリを保護する方法及び装置 - Google Patents

動的ライブラリを保護する方法及び装置 Download PDF

Info

Publication number
JP6227772B2
JP6227772B2 JP2016521281A JP2016521281A JP6227772B2 JP 6227772 B2 JP6227772 B2 JP 6227772B2 JP 2016521281 A JP2016521281 A JP 2016521281A JP 2016521281 A JP2016521281 A JP 2016521281A JP 6227772 B2 JP6227772 B2 JP 6227772B2
Authority
JP
Japan
Prior art keywords
dynamic library
security
library
application program
protected
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
JP2016521281A
Other languages
English (en)
Other versions
JP2016540282A (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 JP2016540282A publication Critical patent/JP2016540282A/ja
Application granted granted Critical
Publication of JP6227772B2 publication Critical patent/JP6227772B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • 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/16Obfuscation or hiding, e.g. involving white box

Landscapes

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

Description

本発明は、動的ライブラリ(Dynamic Library)を、分析ツールを利用した分析と攻撃から保護する方法に関するものである。
以下に記述される内容は、単に本実施例に係る背景情報のみを提供するだけで、従来技術を構成するものではないことを明らかにして置く。
プログラムで、ライブラリ(Library)とは、再利用(reuse)が可能なように予め作成されたコンパイルされた関数を意味する。プログラムでライブラリを使用する理由は、関数を再利用する際に便利に使用することができ、ライブラリで配布すれば、関数の具体的な具現を隠すことができ、予めコンパイルされた関数を必要に応じて使用することができるため、メンテナンスが便利であるという点からである。
ライブラリには、プログラムをコンパイルする過程で、応用プログラムのオブジェクトファイルに含ませて使用する静的ライブラリ(Static Library)とコンピュータプログラムを実行するときに含ませる動的ライブラリ(Dynamic Library)がある。静的ライブラリは、コンパイル時に応用プログラムのオブジェクトと結合して1つの実行ファイルを形成する。これに対し、動的ライブラリは、いくつかのプログラムが共通して必要な機能を応用プログラムから分離して、ランタイム(run-time)で呼び出された場合にのみ、メモリにロードするように製作したものである。静的ライブラリは、コンパイル時に応用プログラムのオブジェクトと結合されるため、静的ライブラリを多く含む応用プログラムであるほど、実行ファイルのサイズが大きくなる。同じ静的ライブラリを使用する複数の応用プログラムが同時に実行される場合、同じ夫々のコードがメモリにロードされて、メモリを効率的に使用するのが難しい。しかし、動的ライブラリを使用する場合は、複数の応用プログラムが一つの動的ライブラリを共有して使用することができるため、メモリを効率的に使用することができる。
プログラムの中核的な機能を実行するため、保護が必要なプログラムのコードは、複数のプログラムで共通して使用されるため、動的ライブラリに製作される場合が多い。このような場合、動的ライブラリのセキュリティが必要であり、応用プログラムの内部の情報を外部に露出せずに動的ライブラリを安全に実行できる方法が問題となる。特に、デバッガやIDA(Interactive DisAssembler)などの静的分析ツール(Static Analyzer)を利用すれば、動的ライブラリを分析することができ、内容を変更するか、あるいは新しい機能を挿入することも可能である。このIDAのようなツールを利用すれば、マシンコード(machine code)をソースコードレベルまで分析することができる。
静的分析ツールから動的ライブラリを保護するために、従来は、動的ライブラリを暗号化して、プログラムのリソースに追加して保管しておき、必要な時に復号化してファイルに保存して、このファイルをメモリにロードして使用し、ファイルは削除する方法を利用した。動的ライブラリを保護するための従来の技術については、図2で詳細に説明する。
しかし、従来の動的ライブラリを保護する方法は、動的ライブラリを暗号化して、静的分析ツールで分析することを防止することはできたが、外部に露出されており、重要なファイルであることが分かりやすい。そして、パスワードが解かれた動的ライブラリが流出された場合は、復号化の過程が無力化されるため、パスワードが解かれた動的ライブラリをロードするようにすれば、比較的少ないコードの修正だけで迂回することができるという問題がある。結局、従来の技術は、動的ライブラリを静的分析ツールから保護して問題を解決する根本的な手段にはなれなかった。
本実施例は、プログラムの中核的な機能を行う動的ライブラリを静的分析ツールから保護するための方法を提供することを主な目的としている。
本実施例の一側面によれば、動的ライブラリ(Dynamic Library)を保護するための方法において、前記動的ライブラリを使用する応用プログラムをメインメモリにロードする過程と、セキュリティ担当動的ライブラリを前記メインメモリにロードする過程と、前記セキュリティ担当動的ライブラリの内部に保管された暗号化された動的ライブラリを復号化して、保護対象の動的ライブラリを生成する過程と、前記応用プログラムから前記保護対象の動的ライブラリの内部に含まれている特定のモジュールを呼び出す過程とを含むことを特徴とする動的ライブラリを静的分析ツールから保護するための方法を提供する。
また、本実施例の他の側面によれば、動的ライブラリ(Dynamic Library)を保護するための装置において、応用プログラム、および前記動的ライブラリを保存するための補助記憶装置と、前記補助記憶装置と連結されて、前記応用プログラムと前記動的ライブラリがロードされるメインメモリと、前記メインメモリにロードされた前記セキュリティ担当動的ライブラリの内部に保管された暗号化された動的ライブラリを復号化して、保護対象の動的ライブラリを生成する動的ライブラリ生成部と、前記応用プログラムから前記保護が必要な動的ライブラリの内部に含まれている特定のモジュールを呼び出す動的ライブラリ呼び出し部とを含むことを特徴とする動的ライブラリを静的分析ツールから保護するための装置を提供する。
以上で説明したように、本実施例によれば、動的ライブラリを暗号化して、静的分析ツールからプログラムの中核的な機能を担当している動的ライブラリを安全に保護することができる。本発明の実施例によれば、プログラムの中核的な機能を担当する保護が必要な保護対象の動的ライブラリは、セキュリティを担当するセキュリティ担当動的ライブラリの内部に保管されるので、外部に露出されず、プログラムに対する攻撃を避けることができ、また、暗号化して保管するため、静的分析ツールを利用して、これを分析することができないので、保護対象の動的ライブラリにセキュリティを提供することができる。セキュリティを担当する動的ライブラリには、セキュリティロジックが含まれている。セキュリティロジックには、セキュリティ担当動的ライブラリがメモリにロードされると、自動的に実行され、攻撃者の攻撃を検知したり、攻撃をすることができないように事前に環境を設定する機能が含まれている。
また、本発明の実施例によれば、保護対象の動的ライブラリとセキュリティを担当する動的ライブラリとの間のセキュリティを強化するために、別途製作した静的ライブラリに連結することにより、保護対象の動的ライブラリは、セキュリティ担当動的ライブラリなしでは駆動することができないようにして、中核的な機能を提供する保護対象の動的ライブラリのセキュリティをさらに強化する効果がある。セキュリティ担当動的ライブラリは、保護対象の動的ライブラリまたは応用プログラムのセキュリティのために、メモリにロードされた後、自動的に実行され、攻撃者の攻撃を検知したり、防止するアンチデバッグ(antidebugging)、アンチダンプ(anti-dump)などのセキュリティ機能を行うセキュリティロジックを含んでいる。もし、保護対象の動的ライブラリが静的分析ツールによって分析され、保護対象の動的ライブラリが変形されたとしても、ファイルの無欠性の検証を介してファイルが変形されたか否かを判断することができ、ファイルが変形された場合は、応用プログラムの実行を中断することができる。
以下、本実施例を添付された図面を参照して詳細に説明する。
本実施例に係る動的ライブラリを静的分析ツールから保護するための方法を実施するシステムは、Windows(登録商標)、MAC OS、Linux(登録商標)、Unix(登録商標)、IOS、Android、Unity、その他の動的ライブラリを支援するOS、または仮想マシン(Virtual Machine)などのプラットフォームを含むが、いずれか一つのシステムに限定されない。ここで、動的ライブラリは、動的リンクライブラリ(Dynamic Link Library)、共有ライブラリ(Shared Library)、ランタイムライブラリ(Run Time Library)、ActiveXコントロールなど、様々な名称で呼称することができる。
図1は、動的ライブラリを含むプログラムを実行するコンピュータ装置の例示図である。
補助記憶装置130に保管された応用プログラムをメインメモリ120にロードして、中央処理装置110で応用プログラムを実行する。応用プログラムは、実行に必要なデータを入力装置150から入力を受け、実行の結果をディスプレイ装置140に出力する。メインメモリ120にロードされた応用プログラムは、自分が必要な動的ライブラリを補助記憶装置130からメインメモリ120にロードして使用する。このとき、ロードされた動的ライブラリは、自分をメインメモリにロードした応用プログラムだけでなく、メインメモリ120で実行されている他の応用プログラムでも使用することができる。複数の応用プログラムで、メインメモリ120にロードされた一つの動的ライブラリを使用することにより、物理的なメインメモリの使用を減らし、効率的なメモリ管理が可能である。動的ライブラリのエラーが発見され、パッチが必要な場合は、動的ライブラリを使用する応用プログラムに関係なく、動的ライブラリのみを再作成して配布すればよい。もし、静的ライブラリを使用する場合には、静的ライブラリを使用するすべての応用プログラムを再作成して再配布しなければならない。さらに、動的ライブラリに含まれている機能の変更が必要な場合は、動的ライブラリのみ修正すれば、複数の応用プログラムが変更される必要がなく、適用されることができ、メンテナンスコストを削減することもできる。
図2は、動的ライブラリを保護するための方法の例示図である。
補助記憶装置130に保存されていた応用プログラム210と、リソースタイプの暗号化された動的ライブラリ220をメインメモリ120にロードする。暗号化された動的ライブラリは、応用プログラムの中核的な機能を担当し、保護が必要な保護対象の動的ライブラリである。応用プログラム210または応用プログラムで使用する動的ライブラリから保護対象の動的ライブラリ内に含まれている特定のモジュールを呼び出すためには、暗号化された動的ライブラリ220を復号化して補助記憶装置130に動的ライブラリ230をファイルで保存し、この動的ライブラリ230をメインメモリ120にロードしなければならない。保護対象の動的ライブラリがメインメモリ120にロードされた後、応用プログラム210または動的ライブラリから特定の関数を呼び出すことができる。
従来技術である動的ライブラリを応用プログラムと分離して暗号化し、リソースに作って保存しておき、応用プログラムで動的ライブラリが必要とされる時に復号化する方法は、動的ライブラリを静的分析ツールで分析できないようにすることはできるが、動的ライブラリを悪意を持って攻撃しようとする者に発見されやすく、これだけでは、動的ライブラリを保護するには不十分である。プログラムを悪意を持って攻撃しようとする者が応用プログラムで復号化を担当し、動的ライブラリをロードする部分を無力化させ、暗号化が解かれた動的ライブラリファイルを変形してロードすれば、応用プログラムが実行されるしかないというセキュリティ上の問題点がある。
図3aは、本実施例に係る応用プログラムとセキュリティを担当する動的ライブラリがメインメモリにロードされた状態の例示図である。
応用プログラム310をメインメモリ120にロードして実行すると、保護対象の動的ライブラリ内の特定のモジュールを呼び出し、このときに、セキュリティ担当動的ライブラリ320をメインメモリ120にロードする。図3aは、セキュリティ担当動的ライブラリ320が、自分の内部にセキュリティが必要な動的ライブラリを暗号化された動的ライブラリ330として保管し、外部の攻撃者からプログラムを保護するためのセキュリティロジック335を含んでいる状態を見せている。セキュリティ担当動的ライブラリ320の内部に暗号化された動的ライブラリ330として保管することにより、静的分析ツールを使用してプログラムを悪意を持って分析したり、攻撃しようとする者から保護対象の動的ライブラリを隠すことができる。したがって、従来技術で保護対象の動的ライブラリが外部に露出されて発生する問題を改善することができる。セキュリティロジック335は、セキュリティ担当動的ライブラリ320がメインメモリ120にロードされた直後に自動的に実行され、アンチデバッグ(anti-debugging)とアンチダンプ(anti-dump)とともに、応用プログラムまたは動的ライブラリに対する攻撃を検知するか、あるいは攻撃することができないように事前に環境を設定する機能を行う。
図3bは、本実施例に係る応用プログラム、セキュリティ担当動的ライブラリと保護対象の動的ライブラリがメインメモリにロードされた状態の例示図である。
図3bは、図3aの応用プログラム310と、セキュリティ担当動的ライブラリ320をメインメモリ120にロードした状態で、セキュリティ担当動的ライブラリ320の内部の暗号化された動的ライブラリ330を復号化して保護対象の動的ライブラリ340をファイルにして補助記憶装置130に保存した後、保護対象の動的ライブラリ340をメインメモリ120にロードした状態を見せている。保護対象の動的ライブラリ340をメインメモリ120にロードした後、静的分析ツールを使用してプログラムを分析しようとする者に保護対象の動的ライブラリ340が露出されないように補助記憶装置130からファイルを削除することができる。
保護対象の動的ライブラリ340は、セキュリティをさらに強化するために、セキュリティ強化静的ライブラリ342を含んでいる。セキュリティ強化静的ライブラリ342は、事前に静的ライブラリの形で製作され、保護対象の動的ライブラリ340を作成する際に静的にリンクし、セキュリティ担当動的ライブラリ320と動的にリンクする。このように、ライブラリの相互間を連結して、保護対象の動的ライブラリ340でセキュリティ強化静的ライブラリ342内の少なくとも一つ以上の関数を呼び出し、セキュリティ強化静的ライブラリ342でセキュリティ担当動的ライブラリ320内の少なくとも一つ以上の関数を呼び出すようにして、保護対象の動的ライブラリ340がセキュリティ担当動的ライブラリ320なしに使用することができないようにして、セキュリティをさらに強化する。図4でライブラリの相互間の連結について詳しく説明する。
また、セキュリティ強化静的ライブラリ342は、事前に製作して使用することができ、セキュリティ強化静的ライブラリのコードを難読化(Obfuscation)処理をして、静的分析ツールを使用したリバースエンジニアリング(Reverse Engineering)分析を困難にすることができる。これにより、セキュリティ強化静的ライブラリ342がする役割を分析できないようにし、悪意を持ってプログラムを分析しようとする者から保護対象の動的ライブラリ340を保護することができる。
図4は、本実施例に係る応用プログラムと動的ライブラリ間の連結関係の例示図である。
図3bは、応用プログラム310と動的ライブラリがメインメモリ120にロードされた状態の例を見せており、図4は、応用プログラム310と、保護対象の動的ライブラリ340、セキュリティ強化静的ライブラリ342、セキュリティ担当動的ライブラリ320の相互間の連結関係を見せている。応用プログラム310が保護対象の動的ライブラリ340内の特定の関数を呼び出すためには、セキュリティ担当動的ライブラリ320を動的にメインメモリ120にロードして、セキュリティ担当動的ライブラリ320は、内部に暗号化されて保存されている動的ライブラリを復号化して補助記憶装置130にファイルにして保存する。
応用プログラム310またはセキュリティ担当動的ライブラリ320は、補助記憶装置130に保存された保護対象の動的ライブラリ340を動的にメインメモリ120にロードする。このとき、保護対象の動的ライブラリ340内に静的にリンクされたセキュリティ強化静的ライブラリ342内の少なくとも一つ以上の関数を呼び出して、セキュリティ強化静的ライブラリ342は、セキュリティ担当動的ライブラリ320内の少なくとも一つ以上の関数を呼び出して、保護対象の動的ライブラリ340がセキュリティ担当動的ライブラリ320なしに使用されることができないようにする。つまり、保護対象の動的ライブラリ340でセキュリティ強化静的ライブラリ342内の関数を呼び出して、呼び出された関数から、また、セキュリティ担当動的ライブラリ320を呼び出して、セキュリティ担当動的ライブラリ320が先にメインメモリ120にロードされていることを確認する。セキュリティ担当動的ライブラリ320は、メインメモリ120にロードされた直後にセキュリティのための機能を行うことになるので、このような確認の過程は、セキュリティ機能が設定されていることを保障する機能をする。
図5は、本実施例に係る応用プログラム、セキュリティ担当動的ライブラリ、保護対象の動的ライブラリ、偽装動的ライブラリとハッシュレジストリがメインメモリにロードされた状態の例示図である。
図5は、図3bの応用プログラム310、セキュリティ担当動的ライブラリ320と、セキュリティが必要な保護対象の動的ライブラリ340がメインメモリ120にロードされた状態で、偽装動的ライブラリ510とハッシュレジストリ520を追加でメインメモリ120にロードした状態を見せている。偽装動的ライブラリ510は、応用プログラムを悪意を持って攻撃しようとする者から、セキュリティ担当動的ライブラリ320の内部に保護対象の動的ライブラリ340が暗号化され保管されていることを偽装するために、保護対象の動的ライブラリと同じ名称で作成されたものである。これにより、攻撃者は偽装動的ライブラリ510がプログラムの中核的な機能を行う動的ライブラリだと認識するようになる。偽装動的ライブラリ510は、セキュリティ担当動的ライブラリ320のようにセキュリティロジックを含むことがあり、偽装動的ライブラリ510のコードを難読化することもできる。
ハッシュレジストリ520は、応用プログラム310、セキュリティ担当動的ライブラリ320、セキュリティが必要な保護対象の動的ライブラリ340、偽装動的ライブラリ510およびその他に応用プログラムで使用するファイルをハッシュ関数に入力して抽出されたファイルごとのハッシュコードを含んでいる。応用プログラム310、セキュリティ担当動的ライブラリ320、セキュリティが必要な動的ライブラリ340に対するハッシュコードは必須であるが、偽装動的ライブラリ510などに対するハッシュコードは、メインメモリにロードされた場合にのみ、選択的に必要である。ハッシュレジストリ520は、図5の例示のように別途保存されてメインメモリ120にロードされることができるのはもちろんのこと、応用プログラム310や動的ライブラリの内部に含まれて保存されることもできる。
以下、ファイルの無欠性を検証する方法について説明する。応用プログラム310が保護対象の動的ライブラリ340の特定の関数を呼び出す場合、セキュリティ担当動的ライブラリ320がメインメモリ120にロードされると、セキュリティ機能が実行され、保護対象の動的ライブラリ340を生成して補助記憶装置130に保存し、続いて、保護対象の動的ライブラリ340、偽装動的ライブラリ510とハッシュレジストリ520をメインメモリ120にロードする。無欠性検証を行うファイルは、セキュリティ担当動的ライブラリ320に限定されず、応用プログラム310、保護対象の動的ライブラリ340、偽装動的ライブラリ510のいずれかである。無欠性検証の対象ファイルも保護対象の動的ライブラリ340に限定されず、応用プログラム310、セキュリティ担当動的ライブラリ320、偽装動的ライブラリ510などである。もし、静的分析ツールによって応用プログラムが分析されて、変形された保護対象の動的ライブラリ340をメインメモリにロードしても、ファイルの無欠性を検証することにより、セキュリティ損傷を防止することができる。ファイルの無欠性を検証するために、検証しようとするファイルをハッシュ関数(MD5、SHA、Checksumなど)に入力してハッシュコードを抽出し、抽出されたハッシュコードがハッシュレジストリに含まれているいずれかのハッシュコードと一致するか否かを判断し、一致するハッシュコードがないと判断された場合に、応用プログラム310の実行を中断する。
図6は、本実施例に係る応用プログラムから保護対象の動的ライブラリ内の特定のモジュールを呼び出す過程のフローチャートである。
応用プログラム310を実行すると、メインメモリ120には応用プログラム310がロードされる(S610)。応用プログラム310が実行されている間に、保護対象の動的ライブラリ340の内部の特定のモジュールを呼び出すときに、まずセキュリティ担当動的ライブラリ320を補助記憶装置130からメインメモリ120にロードし(S620)、セキュリティ担当動的ライブラリ320のセキュリティ機能が活性化され、セキュリティ担当動的ライブラリ320の内部に暗号化されて保管されている動的ライブラリを復号化して、保護対象の動的ライブラリ340を生成し(S630)、生成された保護対象の動的ライブラリ340を補助記憶装置130にファイルとして保存すると、セキュリティ担当動的ライブラリ320または応用プログラム310で保護対象の動的ライブラリ340ファイルの無欠性を検証する(S640)。ファイルの無欠性検証でファイルが変形されていないことが確認されたら、保護対象の動的ライブラリをロードする(S650)。ファイルが変形されたことが確認された場合は、プログラムの実行を中断する。また、プログラムを悪意を持って攻撃しようとする者に、保護対象の動的ライブラリ340であるかのように装った偽装動的ライブラリ510をメインメモリ120にロードする(S660)。そして、応用プログラム310は、応用プログラムの実行に中核的な機能を担当する保護対象の動的ライブラリ340内の特定のモジュールを呼び出す(S670)。
図7は、静的分析ツールから動的ライブラリを保護するためのセキュリティを提供する過程の例示図である。
開発段階でセキュリティ担当動的ライブラリ320であるHardening.so、保護対象の動的ライブラリ340であるGame.so、セキュリティ担当動的ライブラリ320と保護対象の動的ライブラリ340との間でセキュリティを強化するセキュリティ強化静的ライブラリ342であるSDK.aが開発される。Game.soとSDK.aは静的に連結されて、Game.soはSDK.aを含む。このファイルのセキュリティを強化する動的ライブラリセキュリティ強化段階を経ることで、SDK.aを含むGame.soがHardening.soの内部に暗号化されて保管される。
Game.soを復号化するための暗号化キーをHardening.so内に保管する。ただし、本発明の技術的思想は、暗号化キーをHardening.soに保管することに限らず、他の場所に保管することもできる。
Game.soファイルが暗号化されHardening.so内に暗号化されていることを隠すために、同じ名前の偽装動的ライブラリ510であるGame'.soを使用する(Game'.soはGame.soと同じ名前であるが、説明のために両者を区別して表記した。)。ユーザーには、応用プログラムとセキュリティが適用されたHardening.soとGame'.soが配布される。
ユーザーが配布された応用プログラムを実行し、Game.soに含まれている特定のモジュールを呼び出すために、まずHardening.soをメインメモリにロードし、Hardening.soに暗号化されて保管されているGame.soを復号化して、Game.soをメインメモリにロードする。Game.soをメインメモリにロードした後は、Game.soファイルを削除し、Game.soを保護するための偽装動的ライブラリであるGame'.soをメインメモリにロードする。
図8は、本実施例に係る静的分析ツールから動的ライブラリを保護するための装置の構成図である。
補助記憶装置130は、応用プログラム310、セキュリティ担当動的ライブラリ320、偽装動的ライブラリ510などの応用プログラムの実行に必要なファイルを含むことができる。図8は、補助記憶装置130に保存された応用プログラム310、セキュリティ担当動的ライブラリ320、偽装動的ライブラリ510がメインメモリ120にロードされた例を見せている。応用プログラム310、セキュリティ担当動的ライブラリ320は必須的に含まれるが、偽装動的ライブラリ510は、選択的に含むことができる。応用プログラム310は、動的ライブラリ呼び出し部810を介してセキュリティが必要な動的ライブラリを呼び出し、それ以前に、動的ライブラリ生成部820は、セキュリティ担当動的ライブラリ320から保護対象の動的ライブラリ340を生成し、動的ライブラリ保存部830に保存する。
セキュリティ強化部840は、動的ライブラリ保存部830に保存された保護対象の動的ライブラリと動的にリンクされ、セキュリティ担当動的ライブラリ320と静的にリンクされて、保護対象の動的ライブラリ340がセキュリティ担当動的ライブラリ320なしに動作しないようにする。
無欠性検証部850は、ファイルハッシュ抽出部852、ハッシュレジストリ854、ファイル変形判断部856で構成されている。無欠性検証部850のファイルハッシュ抽出部852は、応用プログラム310、セキュリティ担当動的ライブラリ320、動的ライブラリ830に保存されている保護対象の動的ライブラリ340とその他の応用プログラムの実行に必要なファイルをハッシュ関数に入力して、ファイルごとのハッシュコードを抽出する。ただし、応用プログラム310、セキュリティ担当動的ライブラリ320、セキュリティが必要な保護対象の動的ライブラリ340に対するハッシュコードは必須であるが、偽装動的ライブラリ510などに対するハッシュコードは、メインメモリにロードされた場合にのみ、選択的に必要である。ファイル変形判断部856は、抽出されたハッシュコードがハッシュレジストリ保存部854に保存されたハッシュレジストリのハッシュコードのいずれかと一致するか否かを判断して、一致するハッシュコードがないものと判断された場合は、応用プログラムの実行を中断する。
本発明の実施例に係る静的分析ツールから動的ライブラリを保護するための装置800は、パーソナルコンピュータ(PC:Personal Computer)、ノートブックコンピュータ、タブレット、個人携帯端末(PDA:Personal DigitalAssistant)、ゲームコンソール、携帯型マルチメディアプレーヤー(PMP:Portable Multimedia Player)、プレイステーションポータブル(PSP:PlayStation Portable)、無線通信端末(Wireless Communication Terminal)、スマートフォン(Smart Phone)、TV、メディアプレーヤーなどのユーザー端末である。本発明の実施例に係る静的分析ツールから動的ライブラリを保護するための装置800は、応用サーバーとサービスサーバーなどのサーバー端末である。本発明の実施例に係る静的分析ツールから動的ライブラリを保護するための装置800は、それぞれ、(i)各種機器や有線・無線通信網との通信を行うための通信モデムなどの通信装置、(ii)プログラムを実行するためのデータを保存するためのメモリ、(iii)プログラムを実行して演算および制御を行うためのマイクロプロセッサなどを備える様々な装置を意味することができる。少なくとも一実施例によれば、メモリはラム(Random Access Memory:RAM)、ロム(Read Only Memory:ROM)、フラッシュメモリ、光ディスク、磁気ディスク、ソリッドステートディスク(Solid State Disk:SSD)などのコンピュータで読み取り可能な記録/保存媒体である。少なくとも一実施例によれば、マイクロプロセッサは、明細書に記載された動作と機能を1つ以上選択的に実行するようにプログラムすることができる。少なくとも一実施例によれば、マイクロプロセッサは、全体または部分的に特定の構成の特定用途向け半導体(application specific integrated circuit:ASIC)などのハードウェアで具現される。
以上の説明は、本実施例の技術思想を例示的に説明したにすぎないものであって、本実施例の属する技術分野で通常の知識を有する者であれば、本実施例の本質的な特性から逸脱しない範囲で様々な修正および変形が可能である。したがって、本実施例は、本実施例の技術思想を限定するためのものではなく説明するためのものであり、これらの実施例により、本実施例の技術思想の範囲が限定されるものではない。本実施例の保護範囲は、特許請求の範囲によって解釈されるべきであり、それと同等の範囲内にあるすべての技術思想は、本実施例の権利範囲に含まれるものと解釈されるべきである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[1]動的ライブラリ(Dynamic Library)を保護するための方法において、
前記動的ライブラリを使用する応用プログラムをメインメモリにロードする過程と、
セキュリティ担当動的ライブラリを前記メインメモリにロードする過程と、
前記セキュリティ担当動的ライブラリに保管された暗号化された動的ライブラリを復号化して、保護対象の動的ライブラリを生成する過程と、
前記応用プログラムから前記保護対象の動的ライブラリの内部に含まれている特定のモジュールを呼び出す過程とを含むことを特徴とする動的ライブラリを保護するための方法。
[2]前記保護対象の動的ライブラリ生成過程は、前記保護対象の動的ライブラリを保存装置にファイルとして保存する過程と、前記保護対象の動的ライブラリを前記メインメモリにロードする過程とをさらに含むことを特徴とする[1]に記載の動的ライブラリを保護するための方法。
[3]前記セキュリティ担当動的ライブラリは、セキュリティ強化静的(static)ライブラリと動的にリンク(dynamic link)され、前記保護対象の動的ライブラリは、前記セキュリティ強化静的ライブラリと静的にリンク(static link)されることを特徴とする[1]に記載の動的ライブラリを保護するための方法。
[4]前記セキュリティ強化静的ライブラリは、前記セキュリティ担当動的ライブラリ内の少なくとも一つ以上のモジュールを呼び出すことを特徴とする[3]に記載の動的ライブラリを保護するための方法。
[5]前記保護対象の動的ライブラリは、前記セキュリティ強化静的ライブラリ内の少なくとも一つ以上のモジュールを呼び出すことを特徴とする[3]に記載の動的ライブラリを保護するための方法。
[6]前記セキュリティ強化静的ライブラリのコード(code)が難読化(Obfuscation)されていることを特徴とする[3]に記載の動的ライブラリを保護するための方法。
[7]前記セキュリティ担当動的ライブラリは、アンチデバッグ(anti-debugging)またはアンチダンプ(anti-dump)を含み、前記応用プログラムまたは前記保護対象の動的ライブラリへの攻撃を検知するか、あるいは攻撃することができないように環境を設定するセキュリティロジックを含むことを特徴とする[1]に記載の動的ライブラリを保護するための方法。
[8]前記応用プログラムは、前記保護対象の動的ライブラリと同じファイル名の偽装動的ライブラリを含むことを特徴とする[1]に記載の動的ライブラリを保護するための方法。
[9]前記応用プログラム、前記セキュリティ担当動的ライブラリ、前記保護対象の動的ライブラリを必ず含み、偽装動的ライブラリを前記メインメモリにロードしたか否かに応じて、選択的に、前記偽装動的ライブラリを含む、前記応用プログラムの実行に必要なファイルに対するファイルごとのハッシュコードを含むハッシュレジストリを生成することを特徴とする[1]に記載の動的ライブラリを保護するための方法。
[10]前記応用プログラムの実行に必要なファイルに対するファイルごとのハッシュコードを利用して前記応用プログラムの実行に必要なファイルのいずれかの無欠性を検証する無欠性検証過程と、
前記無欠性検証過程でいずれか一つ以上のファイルが変形されたと判断された場合、前記応用プログラムの実行を中断する過程をさらに含むことを特徴とする[9]に記載の動的ライブラリを保護するための方法。
[11]前記無欠性検証過程は、前記セキュリティ担当動的ライブラリで実行することを特徴とする[10]に記載の動的ライブラリを保護するための方法。
[12]動的ライブラリ(Dynamic Library)を保護するための装置において、
応用プログラム、および前記動的ライブラリを保存するための補助記憶装置と、
前記補助記憶装置と連結されて、前記応用プログラムと前記動的ライブラリがロードされるメインメモリと、
前記メインメモリにロードされたセキュリティ担当動的ライブラリの内部に保管された暗号化された動的ライブラリを復号化して、保護が必要な保護対象の動的ライブラリを生成する動的ライブラリ生成部と、
前記応用プログラムから前記保護対象の動的ライブラリの内部に含まれている特定のモジュールを呼び出す動的ライブラリ呼び出し部とを含むことを特徴とする動的ライブラリ保護装置。
[13]前記動的ライブラリ作成部は、前記保護対象の動的ライブラリを保存する動的ライブラリ保存部をさらに含むことを特徴とする[12]に記載の動的ライブラリ保護装置。
[14]前記セキュリティ担当動的ライブラリとセキュリティ強化静的(static)ライブラリとを動的にリンク(dynamic link)させて、前記保護対象の動的ライブラリと前記セキュリティ強化静的ライブラリとを静的にリンク(static link)させるセキュリティ強化部をさらに含むことを特徴とする[12]に記載の動的ライブラリ保護装置。
[15]前記応用プログラムは、
前記保護対象の動的ライブラリと同じ名称の偽装動的ライブラリを含むことを特徴とする[12]に記載の動的ライブラリ保護装置。
[16]前記応用プログラム、前記セキュリティ担当動的ライブラリ、前記保護対象の動的ライブラリを必ず含み、偽装動的ライブラリを前記メインメモリにロードしたか否かに応じて、選択的に、前記偽装動的ライブラリを含む、前記応用プログラムの実行に必要なファイルに対してファイルハッシュを用いて無欠性を検証する無欠性検証部をさらに含むことを特徴とする[12]に記載の動的ライブラリ保護装置。
[17]前記無欠性検証部は、
前記応用プログラムの実行に必要なファイルに対するファイルごとのハッシュコードを含むハッシュレジストリを保存しているハッシュレジストリ保存部と、
前記応用プログラムの実行に必要なファイルに対するファイルごとのハッシュコードを抽出するファイルハッシュ抽出部と、
前記抽出されたハッシュコードが前記ハッシュレジストリのハッシュコードのいずれか一つと一致するか否かを判断して、一致するハッシュコードがないと判断された場合は、前記応用プログラムの実行を中断するファイル変形判断部とを含むことを特徴とする[16]に記載の動的ライブラリ保護装置。
図1は、動的ライブラリを含むプログラムを実行するコンピュータ装置の例示図である。 図2は、動的ライブラリを保護するための方法の例示図である。 図3aは、本実施例に係る応用プログラムとセキュリティ担当動的ライブラリがメインメモリにロードされた状態の例示図である。 図3bは、本実施例に係る応用プログラム、セキュリティ担当動的ライブラリと保護対象の動的ライブラリがメインメモリにロードされた状態の例示図である。 図4は、本実施例に係る応用プログラムと動的ライブラリとの間の連結関係の例示図である。 図5は、本実施例に係る応用プログラム、セキュリティ担当動的ライブラリ、保護対象の動的ライブラリ、偽装動的ライブラリとハッシュレジストリがメインメモリにロードされた状態の例示図である。 図6は、本実施例に係る応用プログラムから保護対象の動的ライブラリ内の特定のモジュールを呼び出す過程のフローチャートである。 図7は、本実施例に係る静的分析ツールから動的ライブラリを保護するためのセキュリティを提供する過程の例示図である。 図8は、本実施例に係る静的分析ツールから動的ライブラリを保護するための装置の構成図である。

Claims (17)

  1. 動的ライブラリ(Dynamic Library)を保護するための方法において、
    前記動的ライブラリを使用する応用プログラムをメインメモリにロードする過程と、
    セキュリティ担当動的ライブラリを前記メインメモリにロードする過程と、
    前記セキュリティ担当動的ライブラリに保管された暗号化された動的ライブラリを復号化して、保護対象の動的ライブラリを生成する過程と、
    前記応用プログラムから前記保護対象の動的ライブラリの内部に含まれている特定のモジュールを呼び出す過程とを含むことを特徴とする動的ライブラリを保護するための方法。
  2. 前記保護対象の動的ライブラリ生成過程は、前記保護対象の動的ライブラリを保存装置にファイルとして保存する過程と、前記保護対象の動的ライブラリを前記メインメモリにロードする過程とをさらに含むことを特徴とする請求項1に記載の動的ライブラリを保護するための方法。
  3. 前記セキュリティ担当動的ライブラリは、セキュリティ強化静的(static)ライブラリと動的にリンク(dynamic link)され、前記保護対象の動的ライブラリは、前記セキュリティ強化静的ライブラリと静的にリンク(static link)されることを特徴とする請求項1に記載の動的ライブラリを保護するための方法。
  4. 前記セキュリティ強化静的ライブラリは、前記セキュリティ担当動的ライブラリ内の少なくとも一つ以上のモジュールを呼び出すことを特徴とする請求項3に記載の動的ライブラリを保護するための方法。
  5. 前記保護対象の動的ライブラリは、前記セキュリティ強化静的ライブラリ内の少なくとも一つ以上のモジュールを呼び出すことを特徴とする請求項3に記載の動的ライブラリを保護するための方法。
  6. 前記セキュリティ強化静的ライブラリのコード(code)が難読化(Obfuscation)されていることを特徴とする請求項3に記載の動的ライブラリを保護するための方法。
  7. 前記セキュリティ担当動的ライブラリは、アンチデバッグ(anti-debugging)またはアンチダンプ(anti-dump)を含み、前記応用プログラムまたは前記保護対象の動的ライブラリへの攻撃を検知するか、あるいは攻撃することができないように環境を設定するセキュリティロジックを含むことを特徴とする請求項1に記載の動的ライブラリを保護するための方法。
  8. 前記応用プログラムは、前記保護対象の動的ライブラリと同じファイル名の偽装動的ライブラリを含むことを特徴とする請求項1に記載の動的ライブラリを保護するための方法。
  9. 前記応用プログラム、前記セキュリティ担当動的ライブラリ、前記保護対象の動的ライブラリを必ず含み、偽装動的ライブラリを前記メインメモリにロードしたか否かに応じて、選択的に、前記偽装動的ライブラリを含む、前記応用プログラムの実行に必要なファイルに対するファイルごとのハッシュコードを含むハッシュレジストリを生成することを特徴とする請求項1に記載の動的ライブラリを保護するための方法。
  10. 前記応用プログラムの実行に必要なファイルに対するファイルごとのハッシュコードを利用して前記応用プログラムの実行に必要なファイルのいずれかの無欠性を検証する無欠性検証過程と、
    前記無欠性検証過程でいずれか一つ以上のファイルが変形されたと判断された場合、前記応用プログラムの実行を中断する過程をさらに含むことを特徴とする請求項9に記載の動的ライブラリを保護するための方法。
  11. 前記無欠性検証過程は、前記セキュリティ担当動的ライブラリで実行することを特徴とする請求項10に記載の動的ライブラリを保護するための方法。
  12. 動的ライブラリ(Dynamic Library)を保護するための装置において、
    応用プログラム、および前記動的ライブラリを保存するための補助記憶装置と、
    前記補助記憶装置と連結されて、前記応用プログラムと前記動的ライブラリがロードされるメインメモリと、
    前記メインメモリにロードされたセキュリティ担当動的ライブラリの内部に保管された暗号化された動的ライブラリを復号化して、保護が必要な保護対象の動的ライブラリを生成する動的ライブラリ生成部と、
    前記応用プログラムから前記保護対象の動的ライブラリの内部に含まれている特定のモジュールを呼び出す動的ライブラリ呼び出し部とを含むことを特徴とする動的ライブラリ保護装置。
  13. 前記動的ライブラリ生成部は、前記保護対象の動的ライブラリを保存する動的ライブラリ保存部をさらに含むことを特徴とする請求項12に記載の動的ライブラリ保護装置。
  14. 前記セキュリティ担当動的ライブラリとセキュリティ強化静的(static)ライブラリとを動的にリンク(dynamic link)させて、前記保護対象の動的ライブラリと前記セキュリティ強化静的ライブラリとを静的にリンク(static link)させるセキュリティ強化部をさらに含むことを特徴とする請求項12に記載の動的ライブラリ保護装置。
  15. 前記応用プログラムは、
    前記保護対象の動的ライブラリと同じ名称の偽装動的ライブラリを含むことを特徴とする請求項12に記載の動的ライブラリ保護装置。
  16. 前記応用プログラム、前記セキュリティ担当動的ライブラリ、前記保護対象の動的ライブラリを必ず含み、偽装動的ライブラリを前記メインメモリにロードしたか否かに応じて、選択的に、前記偽装動的ライブラリを含む、前記応用プログラムの実行に必要なファイルに対してファイルハッシュを用いて無欠性を検証する無欠性検証部をさらに含むことを特徴とする請求項12に記載の動的ライブラリ保護装置。
  17. 前記無欠性検証部は、
    前記応用プログラムの実行に必要なファイルに対するファイルごとのハッシュコードを含むハッシュレジストリを保存しているハッシュレジストリ保存部と、
    前記応用プログラムの実行に必要なファイルに対するファイルごとのハッシュコードを抽出するファイルハッシュ抽出部と、
    前記抽出されたハッシュコードが前記ハッシュレジストリのハッシュコードのいずれか一つと一致するか否かを判断して、一致するハッシュコードがないと判断された場合は、前記応用プログラムの実行を中断するファイル変形判断部とを含むことを特徴とする請求項16に記載の動的ライブラリ保護装置。
JP2016521281A 2013-10-10 2014-10-02 動的ライブラリを保護する方法及び装置 Active JP6227772B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR20130120845A KR101503785B1 (ko) 2013-10-10 2013-10-10 동적 라이브러리를 보호하는 방법 및 장치
KR10-2013-0120845 2013-10-10
PCT/KR2014/009307 WO2015053509A1 (ko) 2013-10-10 2014-10-02 동적 라이브러리를 보호하는 방법 및 장치

Publications (2)

Publication Number Publication Date
JP2016540282A JP2016540282A (ja) 2016-12-22
JP6227772B2 true JP6227772B2 (ja) 2017-11-08

Family

ID=52813287

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016521281A Active JP6227772B2 (ja) 2013-10-10 2014-10-02 動的ライブラリを保護する方法及び装置

Country Status (5)

Country Link
US (1) US20160275019A1 (ja)
JP (1) JP6227772B2 (ja)
KR (1) KR101503785B1 (ja)
CN (1) CN105683990B (ja)
WO (1) WO2015053509A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106845169B (zh) * 2016-12-26 2023-04-07 北京握奇智能科技有限公司 一种Jar包加固方法及系统
KR20180079852A (ko) * 2017-01-03 2018-07-11 삼성에스디에스 주식회사 애플리케이션 변환 장치 및 방법
CN108418776B (zh) * 2017-02-09 2021-08-20 上海诺基亚贝尔股份有限公司 用于提供安全业务的方法和设备
CN107196907B (zh) * 2017-03-31 2018-08-03 武汉斗鱼网络科技有限公司 一种安卓so文件的保护方法及装置
KR102488149B1 (ko) 2018-01-08 2023-01-16 삼성전자주식회사 디스플레이장치 및 그 제어방법
CN108446552A (zh) * 2018-03-13 2018-08-24 山东超越数控电子股份有限公司 一种国产操作系统平台下的软件安全性的实现方法
WO2019235663A1 (ko) * 2018-06-08 2019-12-12 라인플러스 주식회사 네이티브 라이브러리를 보호하는 방법 및 시스템
CN109635522A (zh) * 2018-11-13 2019-04-16 许继集团有限公司 一种动态库的防篡改方法及装置
CN112214250B (zh) * 2019-06-24 2024-05-17 北京京东尚科信息技术有限公司 一种应用程序组件的加载方法和装置
CN110673850A (zh) * 2019-08-28 2020-01-10 五八有限公司 一种获取静态库的大小的方法及装置
WO2021044578A1 (ja) * 2019-09-05 2021-03-11 三菱電機株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
CN111046377B (zh) * 2019-12-25 2023-11-14 五八同城信息技术有限公司 加载动态链接库的方法、装置、电子设备及存储介质
CN112486496A (zh) * 2020-11-25 2021-03-12 上海连尚网络科技有限公司 一种用于生成和运行so文件的方法与设备
CN112380503B (zh) * 2021-01-14 2021-04-30 北京东方通软件有限公司 一种保护核心程序及内存的方法
CN113177222A (zh) * 2021-05-28 2021-07-27 沈阳美行科技有限公司 一种动态库处理方法、装置、电子设备及存储介质
CN113535278A (zh) * 2021-06-15 2021-10-22 深圳市元征未来汽车技术有限公司 动态库调用方法、装置、电子设备及存储介质
CN113742659A (zh) * 2021-08-09 2021-12-03 航天信息股份有限公司 一种应用程序防护方法、装置、电子设备和存储介质
US20230102514A1 (en) * 2021-09-24 2023-03-30 Sap Se Container plugin for legacy on-premise application

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051200B1 (en) * 2000-06-27 2006-05-23 Microsoft Corporation System and method for interfacing a software process to secure repositories
US7539875B1 (en) * 2000-06-27 2009-05-26 Microsoft Corporation Secure repository with layers of tamper resistance and system and method for providing same
US20020066022A1 (en) * 2000-11-29 2002-05-30 Brad Calder System and method for securing an application for execution on a computer
US7515717B2 (en) * 2003-07-31 2009-04-07 International Business Machines Corporation Security containers for document components
US20050160414A1 (en) * 2004-01-21 2005-07-21 Nokia Corporation System and method for dynamically adding features to software applications
US7631360B2 (en) * 2004-06-12 2009-12-08 Microsoft Corporation Hardware protection
KR101203245B1 (ko) * 2004-06-12 2012-11-20 마이크로소프트 코포레이션 소프트웨어 보안
KR20070057968A (ko) * 2004-09-20 2007-06-07 코닌클리케 필립스 일렉트로닉스 엔.브이. 랜덤 함수를 이용한 비밀 공유
US7730472B2 (en) * 2004-09-24 2010-06-01 Hewlett-Packard Development Company, L.P. Dynamic linking of modules in a pre-operating system environment
US7814471B2 (en) * 2004-12-16 2010-10-12 Microsoft Corporation Method and apparatus for providing DLL compatibility
JP2007164595A (ja) * 2005-12-15 2007-06-28 Toshiba Corp コンピュータシステムの関数呼び出し方法、コンピュータシステムおよびライブラリ
US7913092B1 (en) * 2005-12-29 2011-03-22 At&T Intellectual Property Ii, L.P. System and method for enforcing application security policies using authenticated system calls
US8495383B2 (en) * 2006-12-14 2013-07-23 Nokia Corporation Method for the secure storing of program state data in an electronic device
US8719807B2 (en) * 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
JP2008234248A (ja) * 2007-03-20 2008-10-02 Mitsubishi Electric Corp プログラム実行装置及びプログラム実行方法
KR20090040684A (ko) * 2007-10-22 2009-04-27 삼성전자주식회사 동적 링크 라이브러리 파일 및 그 사용방법
US8312249B1 (en) * 2008-10-10 2012-11-13 Apple Inc. Dynamic trampoline and structured code generation in a signed code environment
KR20110064458A (ko) * 2009-12-08 2011-06-15 한국전자통신연구원 암호화된 동적 라이브러리를 이용한 안전한 응용 프로그램 실행 장치 및 방법
KR20120014673A (ko) * 2010-08-10 2012-02-20 주식회사 잉카인터넷 위장 동적연결라이브러리 삽입에 의한 프로세스 변조 검출방법
EP2477110A1 (en) * 2011-01-14 2012-07-18 Wibu-Systems AG Method for protecting an application program against reverse engineering and related computer program product
JP2012185535A (ja) * 2011-03-03 2012-09-27 Mitsubishi Electric Corp コンピュータシステム
CN103827880B (zh) * 2011-03-31 2017-06-16 爱迪德技术有限公司 保护非本机代码安全的方法
US8516273B2 (en) * 2011-05-31 2013-08-20 Asobe Systems Incorporated Porting digital rights management service to multiple computing platforms
CN102360412B (zh) * 2011-09-26 2014-07-02 飞天诚信科技股份有限公司 Java源代码的保护方法和系统
RU2514141C1 (ru) * 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции

Also Published As

Publication number Publication date
JP2016540282A (ja) 2016-12-22
KR101503785B1 (ko) 2015-03-18
CN105683990B (zh) 2018-11-09
US20160275019A1 (en) 2016-09-22
CN105683990A (zh) 2016-06-15
WO2015053509A1 (ko) 2015-04-16

Similar Documents

Publication Publication Date Title
JP6227772B2 (ja) 動的ライブラリを保護する方法及び装置
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
RU2439669C2 (ru) Способ предотвращения обратного инжиниринга программного обеспечения, неавторизованной модификации и перехвата данных во время выполнения
EP2795829B1 (en) Cryptographic system and methodology for securing software cryptography
US20170116410A1 (en) Software protection
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
CN107077540B (zh) 用于提供基于云的应用安全服务的方法和系统
CN107430650B (zh) 保护计算机程序以抵御逆向工程
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
US20160004859A1 (en) Method and system for platform and user application security on a device
CN108595950A (zh) 一种结合远程认证的sgx安全增强方法
JP5575950B2 (ja) 無線端末装置およびシステム保護方法
KR101859823B1 (ko) 키 백업을 사용한 랜섬웨어 방지 시스템 및 방법
CN104504310A (zh) 基于壳技术的软件保护方法和装置
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
CN116910712A (zh) 代码保护方法、系统、电子设备及存储介质
EP2674892A1 (en) A method, a device and a computer program support for execution of encrypted computer code
CN111046440B (zh) 一种安全区域内容的篡改验证方法及系统
DONG et al. Sesoa: Security enhancement system with online authentication for android apk
JP6215468B2 (ja) プログラム保護装置
Kumbhar et al. Hybrid Encryption for Securing SharedPreferences of Android Applications
JP6297149B2 (ja) モバイル機器及び該モバイル機器の動作方法
Jeong et al. Preventing execution of unauthorized applications using dynamic loading and integrity check on android smartphones
Sonnleitner et al. Indirect Data Representation Via Offset Vectoring: A Code-integrity-driven In-memory Data Regeneration Scheme.
Kim et al. Self‐Controllable Mobile App Protection Scheme Based on Binary Code Splitting

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170704

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170831

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171011

R150 Certificate of patent or registration of utility model

Ref document number: 6227772

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250