JP2021197180A - クラス分散およびシーケンシャルメモリ格納を利用したファイル保護方法およびシステム - Google Patents
クラス分散およびシーケンシャルメモリ格納を利用したファイル保護方法およびシステム Download PDFInfo
- Publication number
- JP2021197180A JP2021197180A JP2021097609A JP2021097609A JP2021197180A JP 2021197180 A JP2021197180 A JP 2021197180A JP 2021097609 A JP2021097609 A JP 2021097609A JP 2021097609 A JP2021097609 A JP 2021097609A JP 2021197180 A JP2021197180 A JP 2021197180A
- Authority
- JP
- Japan
- Prior art keywords
- class
- code
- file
- class group
- group
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000005055 memory storage Effects 0.000 title abstract description 3
- 239000006185 dispersion Substances 0.000 title abstract 2
- 230000006870 function Effects 0.000 claims description 17
- 238000012795 verification Methods 0.000 claims description 16
- 238000001514 detection method Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 230000004075 alteration Effects 0.000 claims description 5
- 239000000284 extract Substances 0.000 claims description 5
- 230000001172 regenerating effect Effects 0.000 claims description 5
- 230000003068 static effect Effects 0.000 claims description 4
- 230000006399 behavior Effects 0.000 claims 3
- 230000009466 transformation Effects 0.000 claims 1
- 238000004891 communication Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000001010 compromised effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/565—Static detection by checking file integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Databases & Information Systems (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
【課題】 クラス分散およびシーケンシャルメモリ格納を利用したファイル保護方法およびシステムを提供する。【解決手段】 パッケージファイルに含まれる原本実行ファイルのクラスを分散して複数のクラスグループを生成し、原本実行ファイルの実行が要求される時点に複数のクラスグループが任意の順序でメモリに格納されながら、複数のクラスグループのうちの少なくとも1つのクラスグループが現在のクラスグループおよび/または現在のクラスグループを呼び出したクラスグループの完全性を検証するようにすることにより、実行ファイルに対する保護コードの迂回を防ぐことができる、ファイル保護方法およびシステムを提供する。【選択図】図3
Description
以下の説明は、クラス分散およびシーケンシャルメモリ格納を利用したファイル保護方法およびシステムに関する。
任意のプログラム(バイナリあるいはソースコード)が与えられたときに、このプログラムの動作方式を分析して理解することを「リバースエンジニアリング(Reverse Engineering)」と呼ぶ。完成した製品(バイナリ)を販売する企業の立場では、製品には企業の技術がそのまま含まれていることから、製品のリバースエンジニアリングが簡単になされないことを願う。リバースエンジニアリングを困難にするための一例として、プログラムのコードを多様に難読化する技法が存在する。一例として、プログラムのソースコードレベルで無意味なロジックやコードをソースコードに追加するとか、ソースコードに含まれる文字列のようなデータを暗号化またはエンコードする方式による難読化が挙げられる。他の例として、最終的にビルドが完了した実行ファイルに対するコード領域の解釈を困難にするために、実行ファイルの形式またはアセンブリコードを修正する方式によって難読化が行われる場合もある。特許文献1は、アプリケーションコード難読化装置およびその方法に関するものであって、Java仮想マシンで動作するアプリケーションを対象に、アプリケーションを構成するコード構造を変更することによって難読化を適用することを開示している。言い換えれば、上述した従来技術は、ビルドが完了したアプリケーションのアセンブリコードを修正する方式によって難読化が行われる例について開示している。
このとき、従来技術では、パッケージファイルの内部で保護するクラス(一例として、アンドロイドOS(オペレーティングシステム)環境におけるAPK(Android Application Package)のJavaクラス)を1つの実行ファイル(一例で、dexファイル)の形態で生成し、このような実行ファイルの少なくとも一部(一例として、保護するクラス)を認識することができない形態に暗号化(または、難読化)し、暗号化した少なくとも一部を復元および保護することができる保護コードを追加して記録しておく。この後、実行ファイルの実行時点に保護コードが実行され、実行ファイルの暗号化された少なくとも一部のコードを復元して臨時ファイルに記録しておき、これをメモリに格納する方式によってパッケージファイルの内部に存在していたクラスを保護する。
しかし、保護された実行ファイルは、任意の時点には復元された状態で存在しなければならないため、復元された状態のクラスを抽出して露出している保護コードを取り除いてから交換すれば、実行ファイルに対する保護コードを容易に迂回して本来のクラスだけで作動するようにさせることができるという問題を抱えている。
パッケージファイルに含まれる原本実行ファイルのクラスを分散して複数のクラスグループを生成し、原本実行ファイルの実行が要求される時点に複数のクラスグループが任意の順序でメモリに格納されながら、複数のクラスグループのうちの少なくとも1つのクラスグループが現在のクラスグループおよび/または現在のクラスグループを呼び出したクラスグループの完全性を検証するようにすることにより、実行ファイルに対する保護コードの迂回を防ぐことができる、ファイル保護方法およびシステムを提供する。
少なくとも1つのプロセッサを含むコンピュータ装置のファイル保護方法であって、前記少なくとも1つのプロセッサが、パッケージファイルの実行ファイルからクラスを抽出する段階、前記少なくとも1つのプロセッサが、前記抽出されたクラスを複数のクラスグループに分類する段階、前記少なくとも1つのプロセッサが、前記パッケージファイルの実行時に前記複数のクラスグループが任意の順でメモリに格納されるように、前記複数のクラスグループのうちの少なくとも1つの第1クラスグループに格納コードを追加する段階、前記少なくとも1つのプロセッサが、前記複数のクラスグループのうちの少なくとも1つの第2クラスグループに、自身のクラスグループおよび前記格納コードを利用して自身のクラスグループを呼び出した以前のクラスグループのうちの少なくとも1つの完全性を検証する完全性コードを追加する段階、および前記少なくとも1つのプロセッサが、前記格納コードおよび前記完全性コードが追加された複数のクラスグループを利用して前記パッケージファイルを再生成する段階を含む、ファイル保護方法を提供する。
一側によると、前記分類する段階は、前記抽出されたクラスそれぞれを保護クラスまたは非保護クラスとして指定し、前記抽出されたクラスを前記保護クラスのクラスグループおよび前記非保護クラスのクラスグループに分類することを特徴としてよい。
他の側面によると、前記分類する段階は、前記保護クラスのクラスグループを2つ以上のクラスグループにさらに分類することを特徴としてよい。
また他の側面によると、前記分類する段階は、前記保護クラスまたは前記保護クラスのクラスグループを暗号化することを特徴としてよい。
また他の側面によると、前記格納コードを追加する段階は、前記第1クラスグループに含まれる任意のクラスの静的初期化関数に前記格納コードを追加することを特徴としてよい。
また他の側面によると、前記完全性コードを追加する段階は、前記第2クラスグループに、前記パッケージファイルを再生成する場合に変形する完全性探知コード、および前記完全性探知コードの変形に基づいて前記完全性探知コードを含むクラスグループの変造を判断するための完全性検証コードを追加することを特徴としてよい。
また他の側面によると、前記完全性探知コードは、異常終了するようにバイトコードが修正された関数、および可用な範囲を超過するレジストリサイズを使用するようにバイトコードが修正された関数のうちの少なくとも1つの関数を含み、実際に呼び出されない別のクラスを含むことを特徴としてよい。
また他の側面によると、前記完全性コードを追加する段階は、外部システムに存在する前記第2クラスグループに対する完全性情報にアクセスするようにパッケージファイルをインストールして実行するコンピュータ装置を制御し、前記完全性情報を利用して該当する第2クラスグループの変造を判断するための完全性検証コードを前記第2クラスグループに追加することを特徴としてよい。
また他の側面によると、前記完全性コードを追加する段階は、前記第2クラスグループに保護コードをさらに追加することを特徴としてよい。
また他の側面によると、前記保護コードを追加する段階は、アンチ−逆アセンブラ(anti−disassembler)の動作、アンチ−逆コンパイラ(anti−decompiler)の動作、およびアンチ−デバッガ(anti−debugger)の動作のうちの少なくとも1つの動作を実行するコードを、保護クラスまたは前記保護クラスのクラスグループに含まれる任意の関数またはクラスに、前記保護コードとして追加することを特徴としてよい。
さらに他の側面によると、前記完全性コードを追加する段階は、前記完全性コードおよび前記保護コードを含む保護クラスを前記第2クラスグループに追加することを特徴としてよい。
少なくとも1つのプロセッサを含むコンピュータ装置のファイル保護方法であって、前記少なくとも1つのプロセッサが、パッケージファイルに含まれる複数のクラスグループのうちの第1クラスグループをメモリに格納する段階、前記少なくとも1つのプロセッサが、前記第1クラスグループに含まれる格納コードにしたがい、前記複数のクラスグループのうちの暗号化された第2クラスグループをメモリ上に復元する段階、前記少なくとも1つのプロセッサが、前記第1クラスグループに含まれる格納コードにしたがい、前記メモリ上に復元された前記第2クラスグループに関する実行ファイル情報を前記コンピュータ装置に含まれるシステムのクラスローダが認識できるように指定する段階、前記少なくとも1つのプロセッサが、前記復元された第2クラスグループに含まれる格納コードにしたがい、前記複数のクラスグループのうちの暗号化された第3クラスグループをメモリ上に復元する段階、および前記少なくとも1つのプロセッサが、前記第2クラスグループに含まれる格納コードにしたがい、前記メモリ上に復元された前記第3クラスグループに関する実行ファイル情報を前記コンピュータ装置に含まれるシステムのクラスローダが認識できるように指定する段階を含む、ファイル保護方法を提供する。
前記方法をコンピュータ装置に実行させるコンピュータプログラムを提供する。
前記方法をコンピュータ装置に実行させるためのプログラムが記録されている、コンピュータ読み取り可能な記録媒体を提供する。
コンピュータ読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサが、パッケージファイルの実行ファイルからクラスを抽出し、前記抽出されたクラスを複数のクラスグループに分類し、前記パッケージファイルの実行時に前記複数のクラスグループが任意の順にしたがってメモリに格納されるように、前記複数のクラスグループのうちの少なくとも1つの第1クラスグループに格納コードを追加し、前記複数のクラスグループのうちの少なくとも1つの第2クラスグループに、自身のクラスグループおよび前記格納コードを利用して自身のクラスグループを呼び出した以前のクラスグループのうちの少なくとも1つの完全性を検証する完全性コードを追加し、前記格納コードおよび前記完全性コードが追加された複数のクラスグループを利用して前記パッケージファイルを再生成することを特徴とする、コンピュータ装置を提供する。
パッケージファイルに含まれる原本実行ファイルのクラスを分散して複数のクラスグループを生成し、原本実行ファイルの実行が要求される時点に、複数のクラスグループが任意の順序でメモリに格納されながら、複数のクラスグループのうちの少なくとも1つのクラスグループが現在のクラスグループおよび/または現在のクラスグループを呼び出したクラスグループの完全性を検証するようにすることにより、実行ファイルに対する保護コードの迂回を防ぐことができる。
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
本発明の実施形態に係るファイル保護システムは、少なくとも1つのコンピュータ装置によって実現されてよく、本発明の実施形態に係るファイル保護方法は、ファイル保護システムに含まれる少なくとも1つのコンピュータ装置によって実行されてよい。コンピュータ装置においては、本発明の一実施形態に係るコンピュータプログラムがインストールされて実行されてよく、コンピュータ装置は、実行するコンピュータプログラムの制御にしたがって本発明の実施形態に係るファイル保護方法を実行してよい。上述したコンピュータプログラムは、コンピュータ装置と結合してファイル保護方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録されてよい。
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような図1は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が図1のように限定されることはない。また、図1のネットワーク環境は、本実施形態に適用可能な環境のうちの一例を説明したものに過ぎず、本実施形態に適用可能な環境が図1のネットワーク環境に限定されることはない。
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定端末や移動端末であってよい。複数の電子機器110、120、130、140の例としては、スマートフォン、携帯電話、ナビゲーション、PC(personal computer)、ノート型PC、デジタル放送用端末、PDA(Personal Digital Assistant)、PMP(Portable Multimedia Player)、タブレットなどがある。一例として、図1では、電子機器110の例としてスマートフォンを示しているが、本発明の実施形態において、電子機器110は、実質的に無線または有線通信方式を利用し、ネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信することのできる多様な物理的なコンピュータ装置のうちの1つを意味してよい。
通信方式が限定されることはなく、ネットワーク170が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を利用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク170は、PAN(personal area network)、LAN(local area network)、CAN(campus area network)、MAN(metropolitan area network)、WAN(wide area network)、BBN(broadband network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでよい。さらに、ネットワーク170は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター−バスネットワーク、ツリーまたは階層的ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これらに限定されることはない。
サーバ150、160それぞれは、複数の電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供する1つ以上のコンピュータ装置によって実現されてよい。例えば、サーバ150は、ネットワーク170を介して接続した複数の電子機器110、120、130、140にサービス(一例として、ファイル配布サービス、地図サービス、コンテンツ提供サービス、グループ通話サービス(または、音声会議サービス)、メッセージングサービス、メールサービス、ソーシャルネットワークサービス、翻訳サービス、金融サービス、決済サービス、検索サービスなど)を提供するシステムであってよい。
図2は、本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。上述した複数の電子機器110、120、130、140それぞれやサーバ150、160それぞれは、図2に示したコンピュータ装置200によって実現されてよい。
このようなコンピュータ装置200は、図2に示すように、メモリ210、プロセッサ220、通信インタフェース230、および入力/出力インタフェース240を含んでよい。メモリ210は、コンピュータ読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、およびディスクドライブのような永続的大容量記録装置を含んでよい。ここで、ROMやディスクドライブのような永続的大容量記録装置は、メモリ210とは区分される別の永続的記録装置としてコンピュータ装置200に含まれてもよい。また、メモリ210には、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリ210とは別のコンピュータ読み取り可能な記録媒体からメモリ210にロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピードライブ、ディスク、テープ、DVD/CD−ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信インタフェース230を通じてメモリ210にロードされてもよい。例えば、ソフトウェア構成要素は、ネットワーク170を介して受信されるファイルによってインストールされるコンピュータプログラムに基づいてコンピュータ装置200のメモリ210にロードされてよい。
プロセッサ220は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ210または通信インタフェース230によって、プロセッサ220に提供されてよい。例えば、プロセッサ220は、メモリ210のような記録装置に記録されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
通信モジュール230は、ネットワーク170を介してコンピュータ装置200が他の装置(一例として、上述した記録装置)と互いに通信するための機能を提供してよい。一例として、コンピュータ装置200のプロセッサ220がメモリ210のような記録装置に記録されたプログラムコードにしたがって生成した要求や命令、データ、ファイルなどが、通信インタフェース230の制御にしたがってネットワーク170を介して他の装置に伝達されてよい。これとは逆に、他の装置からの信号や命令、データ、ファイルなどが、ネットワーク170を経てコンピュータ装置200の通信インタフェース230を通じてコンピュータ装置200に受信されてよい。通信モジュール230を通じて受信された信号や命令、データなどは、プロセッサ220やメモリ210に伝達されてよく、ファイルなどは、コンピュータ装置200がさらに含むことのできる記録媒体(上述した永続的記録装置)に記録されてよい。
入力/出力インタフェース240は、入力/出力装置250とのインタフェースのための手段であってよい。例えば、入力装置は、マイク、キーボード、またはマウスなどの装置を、出力装置は、ディスプレイ、スピーカのような装置を含んでよい。他の例として、入力/出力インタフェース240は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。入力/出力装置250は、コンピュータ装置200と1つの装置で構成されてもよい。
また、他の実施形態において、コンピュータ装置200は、図2の構成要素よりも少ないか多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、コンピュータ装置200は、上述した入力/出力装置250のうちの少なくとも一部を含むように実現されてもよいし、トランシーバやデータベースなどのような他の構成要素をさらに含んでもよい。
図3は、本発明の一実施形態における、ファイル保護方法の例を示したフローチャートである。本実施形態に係るファイル保護方法は、パッケージファイルをユーザに提供しようとする側(一例として、アプリケーションの配布者)のシステムを実現するコンピュータ装置200によって実行されてよい。このとき、コンピュータ装置200のプロセッサ220は、メモリ210に含まれるオペレーティングシステムのコードと、少なくとも1つのコンピュータプログラムのコードとによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が図3の方法に含まれる段階310〜350を実行するようにコンピュータ装置200を制御してよい。
段階310で、コンピュータ装置200は、パッケージファイルの実行ファイルからクラスを抽出してよい。一実施形態として、パッケージファイルは、アンドロイドOS(オペレーティングシステム)環境におけるAPK(Android Application Package)ファイルを含んでよく、実行ファイルはdexファイルを含んでよく、クラスはJavaクラスを含んでよいが、これに限定されてはならない。
段階320で、コンピュータ装置200は、抽出されたクラスを複数のクラスグループに分類してよい。一例として、コンピュータ装置200は、抽出されたクラスそれぞれを保護クラスまたは非保護クラスとして指定し、抽出されたクラスを保護クラスのクラスグループおよび非保護クラスのクラスグループに分類してよい。実施形態によって、コンピュータ装置200は、保護クラスのクラスグループを2つ以上のクラスグループにさらに分類してもよい。例えば、コンピュータ装置200は、任意の保護クラス内の内部クラス(Inner class)を別のクラスグループに分離するか、および/または任意の保護クラス内の匿名クラス(Anonymous class)を別のクラスグループに分離して保護クラスのためのクラスを2つ以上のクラスグループにさらに分類してよい。他の例として、コンピュータ装置200は、特定のパッケージ単位に含まれている下位のクラスを任意の順序で分類してもよい。例えば、パッケージファイルを開発するときに、互いに関連するクラスを特定のパッケージ単位で束ね、その中に関連するコードをともに維持して開発してよい。この場合、特定のパッケージ単位の内部にあるクラスを分散させれば、関連するロジックをより安全に保護することが可能となる。
実行ファイルのクラスは、1つの非保護クラスグループと1つ以上の保護クラスグループに分類されてよい。また、コンピュータ装置200は、保護クラスまたは保護クラスのクラスグループを暗号化してよい。
段階330で、コンピュータ装置200は、パッケージファイルの実行時に複数のクラスグループが任意の順でメモリに格納されるように、複数のクラスグループのうちの少なくとも1つの第1クラスグループに格納コードを追加してよい。ここで、第1クラスグループは、複数のクラスグループのうちの最後に格納されるクラスグループを除いた残りのクラスグループであってよい。
一方、メモリは、パッケージファイルが実行される物理的な装置に含まれるメモリであってよい。上述した物理的な装置は、本実施形態に係るコンピュータ装置200であってもよいが、コンピュータ装置200が配布するパッケージファイルをインストールして実行する別の装置であってもよい。
このとき、コンピュータ装置200は、分類された複数のグループのための格納順を任意に設定した後、パッケージファイルが実行される場合に、このような格納順にしたがって複数のグループがメモリ上に順に格納されるように第1クラスグループに格納コードを追加してよい。例えば、パッケージファイルが実行される場合、非保護クラスのクラスグループ1を含む実行ファイルが先にメモリ上に格納されてよく、格納されたクラスグループ1に追加された格納コードにしたがって次の順のクラスグループ2がメモリ上に格納されてよい。次の順のクラスグループ2は、その次の順のクラスグループ3をメモリ上に格納してよく、すべてのクラスグループがメモリ上に格納されるまでクラスグループの格納が順に繰り返されてよい。最後の順のクラスファイルは、追加で格納するクラスファイルがないため、格納コードを含む必要はない。
一方、保護クラスまたは保護クラスのクラスグループは暗号化されるため、格納コードは、次に暗号化されたクラスグループを復元してメモリ上に格納するためのコードを含んでよい。
また、コンピュータ装置200は、第1クラスグループに含まれる任意のクラスの静的初期化関数に格納コードを追加してよい。
段階340で、コンピュータ装置200は、複数のクラスグループのうちの少なくとも1つの第2クラスグループに、自身のクラスグループおよび格納コードによって自身のクラスグループを呼び出した以前のクラスグループのうちの少なくとも1つの完全性を検証する完全性コードを追加してよい。例えば、上述したクラスグループ3に、クラスグループ3およびクラスグループ3を呼び出した以前のクラスグループであるクラスグループ2のうちの少なくとも1つの完全性を検証する完全性コードが追加されてよい。
段階340で、コンピュータ装置200は、第2クラスグループに、パッケージファイルを再生成する場合に変形する完全性探知コード、および完全性探知コードの変形に基づいて完全性探知コードを含むクラスグループの変造を判断するための完全性検証コードを追加してよい。ここで、完全性探知コードは、異常終了するようにバイトコードが修正された関数、および可用な範囲を超過するレジストリサイズを使用するようにバイトコードが修正された関数のうちの少なくとも1つの関数を含み、完全性が補正される間には、実際には呼び出されない別のクラスを含んでよい。完全性が毀損する場合、完全性探知コードは、上述したクラスを実行して異常終了するか可用な範囲を超過するレジストリサイズを使用することによって正常に作動しないように動作してよい。しかし、これは一例に過ぎず、完全性が毀損するときに実行コードが正常に作動しないようにするためのすべての種類のバイトコードの修正などに拡大可能であることは言うまでもない。
一実施形態として、クラスグループ3に含まれる完全性検証コードは、クラスグループ2および/またはクラスグループ3に含まれる完全性探知コードに基づいてクラスグループ2および/またはクラスグループ3の変造を判断してよい。他の実施形態として、段階340で、コンピュータ装置200は、外部システムに存在する第2クラスグループに対する完全性情報にアクセスするようにパッケージファイルをインストールして実行するコンピュータ装置を制御し、完全性情報を利用して該当の第2クラスグループの変造を判断するための完全性検証コードを第2クラスグループに追加してよい。ここでのコンピュータ装置は、本実施形態のコンピュータ装置200とは異なり、パッケージファイルをインストールして実行する側の物理的な装置を意味してよい。
一方、実施形態によって、コンピュータ装置200は、第2クラスグループに保護コードをさらに追加してよい。例えば、コンピュータ装置200は、アンチ−逆アセンブラ(anti−disassembler)の動作、アンチ−逆コンパイラ(anti−decompiler)の動作、およびアンチ−デバッガ(anti−debugger)の動作のうちの少なくとも1つの動作を実行するコードを、保護クラスまたは保護クラスのクラスグループに含まれる任意の関数またはクラスに、保護コードとして追加してよい。
このとき、実施形態によって、コンピュータ装置200は、完全性コードと保護コードを含む保護クラスを第2クラスグループに追加してもよい。言い換えれば、完全性コードに含まれる完全性検証コードと上述した保護コードが1つの保護クラスに含まれてよく、このような保護クラスが第2クラスグループに追加されてよい。実施形態によって、完全性検証コードや保護クラス内部の完全性検証コードを呼び出す呼出コードが任意のクラスに追加されてもよい。例えば、コンピュータ装置200は、任意の非保護クラスに完全性検証コードや完全性検証コードの呼出コードを追加してよい。他の例として、コンピュータ装置200は、分類されたクラスグループそれぞれの任意のクラスまたは分類されたクラスグループのうちの一部のクラスグループそれぞれの任意のクラスに、完全性検証コードや完全性検証コードの呼出コードを追加してよい。このとき、完全性検証コードや完全性検証コードの呼出コードは、該当の任意のクラスの静的初期化関数に追加されてよい。
第2クラスグループに追加される保護クラスの保護コードは、保護クラスごとに同じコードであってもよいし、少なくとも2つ以上の保護クラスに対して互いに異なるコードであってもよいし、すべての保護クラスそれぞれに対して互いに異なるコードであってもよい。
段階350で、コンピュータ装置200は、格納コードおよび完全性コードが追加された複数のクラスグループを利用してパッケージファイルを再生成してよい。再生成されたパッケージファイルは、該当のパッケージファイルをインストールして実行するコンピュータ装置に配布されてよい。該当のコンピュータ装置それぞれでパッケージファイルを実行する場合、格納コードに基づいてクラスグループが任意の順序で該当のコンピュータ装置のメモリに格納されてよく、完全性コードを利用することで自身と被呼者に対する完全性が検証されるため、ユーザが保護コードを迂回できないように防ぐことが可能となる。
図4は、本発明の一実施形態における、パッケージファイルを再生成する過程の例を示した図である。図4は、パッケージファイル410に含まれる実行ファイル411から複数のクラス420が抽出される例を示している。抽出された複数のクラス420は複数のクラスグループに分類されてよく、少なくとも一部のクラスグループは暗号化されてよい。ここで、暗号化されるクラスグループは、保護クラスのクラスグループであってよい。また、図4は、クラスグループがそれぞれ別の実行ファイル(実行ファイル1(431)、暗号化された実行ファイル2(432)、および暗号化された実行ファイル3(433))で構成される例を示している。図4の実施形態では、実行ファイル1(431)、暗号化された実行ファイル2(432)、および暗号化された実行ファイル3(433)それぞれに保護コード1(442)が追加され、実行ファイル1(431)には格納コード1(441)が、暗号化された実行ファイル3(433)には格納コード2(443)が追加された例を示している。本実施形態において、保護コード1(442)は、図3を参照しながら説明した保護コードと完全性コードを含んでよい。この場合、実行ファイルの格納順は、実行ファイル1(431)、暗号化された実行ファイル3(433)、および暗号化された実行ファイル2(432)となってよい。例えば、実行ファイル1(431)がメモリに格納された後、実行ファイル1(431)は、格納コード1(441)によって暗号化された実行ファイル3(433)を復元してメモリに格納してよい。また、暗号化された実行ファイル3(433)は、格納コード2(442)によって暗号化された実行ファイル2(432)を復元してメモリに格納してよい。
図5は、本発明の一実施形態における、ファイル保護方法の他の例を示したフローチャートである。本実施形態に係るファイル保護方法は、パッケージファイルをインストールして実行するコンピュータ装置200によって実行されてよい。このとき、コンピュータ装置200のプロセッサ220は、メモリ210に含まれるオペレーティングシステムのコードと、少なくとも1つのコンピュータプログラムのコードとによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が図5の方法に含まれる段階510〜550を実行するようにコンピュータ装置200を制御してよい。
段階510で、コンピュータ装置200は、パッケージファイルに含まれる複数のクラスグループのうちの第1クラスグループをメモリ210に格納してよい。一例として、非保護クラスのクラスグループが先にメモリ210上に格納されてよい。
段階520で、コンピュータ装置200は、第1クラスグループに含まれる格納コードにしたがい、複数のクラスグループのうちの暗号化された第2クラスグループをメモリ210上に復元してよい。例えば、第1クラスグループがメモリ210に格納されて実行されることによって格納コードが実行されるときに、コンピュータ装置200は、格納コードにしたがい、第2クラスグループをメモリ210上に復元して格納してよい。
段階530で、コンピュータ装置200は、第1クラスグループに含まれる格納コードにしたがい、メモリ上に復元された第2クラスグループに関する実行ファイル情報をコンピュータ装置200に含まれるシステムのクラスローダが認識できるように指定してよい。言い換えれば、コンピュータ装置200は、メモリ210上に格納された第2クラスグループが実行ファイルであることをクラスローダが認識できるように、第2クラスグループに関する実行ファイル情報を指定してよい。
段階540で、コンピュータ装置200は、復元された第2クラスグループに含まれる格納コードにしたがい、複数のクラスグループのうちの暗号化された第3クラスグループをメモリ上に復元してよい。例えば、第2クラスグループがメモリ210に格納されて実行されることによって格納コードが実行されるときに、コンピュータ装置200は、格納コードにしたがい、第3クラスグループをメモリ210上に復元して格納してよい。
段階550で、コンピュータ装置200は、第2クラスグループに含まれる格納コードにしたがい、メモリ210上に復元された第3クラスグループに関する実行ファイル情報をコンピュータ装置に含まれるシステムのクラスローダが認識できるように指定してよい。
このように、コンピュータ装置200パッケージファイルのすべてのクラスグループを任意の順序にしたがってメモリ210に格納してよい。
段階560で、コンピュータ装置200は、第2クラスグループおよび第3クラスグループのうちの少なくとも1つに含まれる完全性コードにしたがい、第1クラスグループ、第2クラスグループ、および第3クラスグループのうちの少なくとも1つのクラスグループの完全性を検証してよい。例えば、第2クラスグループが第1クラスグループおよび/または第2クラスグループの完全性を検証するための完全性コードを含む場合や、第3クラスグループが第2クラスグループおよび/または第3クラスグループの完全性を検証するための完全性コードを含む場合が考えられる。
このように、任意のユーザが保護コードを迂回してメモリ上に格納された復元されたクラスを取得したとしても、復元されたクラスグループで自身および/または自分を呼び出したクラスグループの完全性を検証するため、保護コードを迂回してパッケージファイルを実行することができなくなる。
一方、暗号化されたファイルを復元して臨時ファイルとして格納した後、復元された臨時ファイルをメモリに格納することもできるが、オペレーティングシステムが提供する機能を利用して暗号化されたファイルを復元して直ぐにメモリ上に格納することもできる。
図6は、本発明の一実施形態における、実行コードをメモリに格納する過程の例を示した図である。図6は、図4を参照しながら説明した、保護されたパッケージファイル430を実行する場合の実行ファイル(実行ファイル1(431)、暗号化された実行ファイル2(432)、および暗号化された実行ファイル3(433))をメモリ610に格納する過程を示している。先ず、実行ファイル1(431)がメモリ610に格納された後、実行ファイル1(431)は保護コード1(442)によって保護されてよく、格納コード1(441)によって暗号化された実行ファイル3(433)を復元してメモリ610に格納してよい。このとき、暗号化された実行ファイル3(433)は保護コード1(442)によって保護されてよく、格納コード2(443)によって暗号化された実行ファイル2(432)を復元してメモリ610に格納してよい。暗号化された実行ファイル2(432)も、保護コード1(442)によって保護されてよい。上述したように、任意のユーザが保護コードを迂回してメモリ上に格納された復元されたクラスを取得したとしても、復元されたクラスグループで自身および/または自身を呼び出したクラスグループの完全性を検証するため、保護コードを迂回してパッケージファイルを実行することができなくなる。
このように、本発明の実施形態によると、パッケージファイルに含まれる原本実行ファイルのクラスを分散して複数のクラスグループを生成し、原本実行ファイルの実行が要求される時点に複数のクラスグループが任意の順序でメモリに格納されながら、複数のクラスグループのうちの少なくとも1つのクラスグループが現在のクラスグループおよび/または現在のクラスグループを呼び出したクラスグループの完全性を検証するようにすることにより、実行ファイルに対する保護コードの迂回を防ぐことができる。
上述したシステムまたは装置は、ハードウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)および前記OS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを格納、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置、コンピュータ格納媒体または装置に具現化されてもよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で格納されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に格納されてよい。
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。前記コンピュータ読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含んでよい。媒体は、コンピュータ実行可能なプログラムを継続して記録するものであっても、実行またはダウンロードのために一時記録するものであってもよい。また、媒体は、単一または複数のハードウェアが結合した形態の多様な記録手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されることはなく、ネットワーク上に分散して存在するものであってもよい。媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD−ROMおよびDVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどを含み、プログラム命令が記録されるように構成されたものであってよい。また、媒体の他の例として、アプリケーションを配布するアプリケーションストアやその他の多様なソフトウェアを供給または配布するサイト、サーバなどで管理する記録媒体または格納媒体が挙げられる。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
以上のように、実施形態を、限定された実施形態および図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
410:パッケージファイル
420:クラス
430:保護されたパッケージファイル
420:クラス
430:保護されたパッケージファイル
Claims (16)
- 少なくとも1つのプロセッサを含むコンピュータ装置のファイル保護方法であって、
前記少なくとも1つのプロセッサが、パッケージファイルの実行ファイルからクラスを抽出する段階、
前記少なくとも1つのプロセッサが、前記抽出されたクラスを複数のクラスグループに分類する段階、
前記少なくとも1つのプロセッサが、前記パッケージファイルの実行時に前記複数のクラスグループが任意の順でメモリに格納されるように、前記複数のクラスグループのうちの少なくとも1つの第1クラスグループに格納コードを追加する段階、
前記少なくとも1つのプロセッサが、前記複数のクラスグループのうちの少なくとも1つの第2クラスグループに、自身のクラスグループおよび前記格納コードによって自身のクラスグループを呼び出した以前のクラスグループのうちの少なくとも1つの完全性を検証する完全性コードを追加する段階、および
前記少なくとも1つのプロセッサが、前記格納コードおよび前記完全性コードが追加された複数のクラスグループを利用して前記パッケージファイルを再生成する段階
を含む、ファイル保護方法。 - 前記分類する段階は、
前記抽出されたクラスそれぞれを保護クラスまたは非保護クラスとして指定し、前記抽出されたクラスを前記保護クラスのクラスグループおよび前記非保護クラスのクラスグループに分類することを特徴とする、請求項1に記載のファイル保護方法。 - 前記分類する段階は、
前記保護クラスのクラスグループを2つ以上のクラスグループにさらに分類することを特徴とする、請求項2に記載のファイル保護方法。 - 前記分類する段階は、
前記保護クラスまたは前記保護クラスのクラスグループを暗号化することを特徴とする、請求項2または3に記載のファイル保護方法。 - 前記格納コードを追加する段階は、
前記第1クラスグループに含まれる任意のクラスの静的初期化関数に前記格納コードを追加することを特徴とする、請求項1〜4のうちのいずれか一項に記載のファイル保護方法。 - 前記完全性コードを追加する段階は、
前記第2クラスグループに、前記パッケージファイルを再生成する場合に変形する完全性探知コード、および前記完全性探知コードの変形に基づいて前記完全性探知コードを含むクラスグループの変造を判断するための完全性検証コードを追加することを特徴とする、請求項1〜5のうちのいずれか一項に記載のファイル保護方法。 - 前記完全性探知コードは、異常終了するようにバイトコードが修正された関数、および可用な範囲を超過するレジストリサイズを使用するようにバイトコードが修正された関数のうちの少なくとも1つの関数を含み、実際に呼び出されない別のクラスを含むことを特徴とする、請求項6に記載のファイル保護方法。
- 前記完全性コードを追加する段階は、
外部システムに存在する前記第2クラスグループに対する完全性情報にアクセスするようにパッケージファイルをインストールして実行するコンピュータ装置を制御し、前記完全性情報を利用して該当する第2クラスグループの変造を判断するための完全性検証コードを前記第2クラスグループに追加することを特徴とする、請求項1〜5のうちのいずれか一項に記載のファイル保護方法。 - 前記完全性コードを追加する段階は、
前記第2クラスグループに保護コードをさらに追加すること
を特徴とする、請求項1〜8のうちのいずれか一項に記載のファイル保護方法。 - 前記保護コードを追加する段階は、
アンチ逆アセンブラの動作、アンチ逆コンパイラの動作、およびアンチ−デバッガの動作のうちの少なくとも1つの動作を実行するコードを、保護クラスまたは前記保護クラスのクラスグループに含まれる任意の関数またはクラスに、前記保護コードとして追加することを特徴とする、請求項9に記載のファイル保護方法。 - 前記完全性コードを追加する段階は、
前記完全性コードおよび前記保護コードを含む保護クラスを前記第2クラスグループに追加することを特徴とする、請求項9に記載のファイル保護方法。 - 少なくとも1つのプロセッサを含むコンピュータ装置のファイル保護方法であって、
前記少なくとも1つのプロセッサが、パッケージファイルに含まれる複数のクラスグループのうちの第1クラスグループをメモリに格納する段階、
前記少なくとも1つのプロセッサが、前記第1クラスグループに含まれる格納コードにしたがい、前記複数のクラスグループのうちの暗号化された第2クラスグループをメモリ上に復元する段階、
前記少なくとも1つのプロセッサが、前記第1クラスグループに含まれる格納コードにしたがい、前記メモリ上に復元された前記第2クラスグループに関する実行ファイル情報を前記コンピュータ装置に含まれるシステムのクラスローダが認識できるように指定する段階、
前記少なくとも1つのプロセッサが、前記復元された第2クラスグループに含まれる格納コードにしたがい、前記複数のクラスグループのうちの暗号化された第3クラスグループをメモリ上に復元する段階、および
前記少なくとも1つのプロセッサが、前記第2クラスグループに含まれる格納コードにしたがい、前記メモリ上に復元された前記第3クラスグループに関する実行ファイル情報を前記コンピュータ装置に含まれるシステムのクラスローダが認識できるように指定する段階
を含む、ファイル保護方法。 - 前記少なくとも1つのプロセッサが、前記第2クラスグループおよび前記第3クラスグループのうちの少なくとも1つに含まれる完全性コードにしたがい、前記第1クラスグループ、前記第2クラスグループ、および前記第3クラスグループのうちの少なくとも1つのクラスグループの完全性を検証する段階
をさらに含む、請求項12に記載のファイル保護方法。 - 請求項1〜13のうちのいずれか一項に記載の方法をコンピュータ装置に実行させるコンピュータプログラム。
- 請求項1〜13のうちのいずれか一項に記載の方法をコンピュータ装置に実行させるためのコンピュータプログラムが記録されている、コンピュータ読み取り可能な記録媒体。
- コンピュータ読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサ
を含み、
前記少なくとも1つのプロセッサが、
パッケージファイルの実行ファイルからクラスを抽出し、
前記抽出されたクラスを複数のクラスグループに分類し、
前記パッケージファイルの実行時に前記複数のクラスグループが任意の順でメモリに格納されるように、前記複数のクラスグループのうちの少なくとも1つの第1クラスグループに格納コードを追加し、
前記複数のクラスグループのうちの少なくとも1つの第2クラスグループに、自身のクラスグループおよび前記格納コードによって自身のクラスグループを呼び出した以前のクラスグループのうちの少なくとも1つの完全性を検証する完全性コードを追加し、
前記格納コードおよび前記完全性コードが追加された複数のクラスグループを利用して前記パッケージファイルを再生成すること
を特徴とする、コンピュータ装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200071105A KR20210154017A (ko) | 2020-06-11 | 2020-06-11 | 클래스 분산 및 순차적 메모리 적재를 이용한 파일 보호 방법 및 시스템 |
KR10-2020-0071105 | 2020-06-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021197180A true JP2021197180A (ja) | 2021-12-27 |
Family
ID=78825515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021097609A Pending JP2021197180A (ja) | 2020-06-11 | 2021-06-10 | クラス分散およびシーケンシャルメモリ格納を利用したファイル保護方法およびシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11921874B2 (ja) |
JP (1) | JP2021197180A (ja) |
KR (1) | KR20210154017A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114722359B (zh) * | 2022-04-08 | 2024-05-10 | 北京航天长城卫星导航科技有限公司 | 一种基于自定义类加载器的Java源码保护方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2305078A1 (en) * | 2000-04-12 | 2001-10-12 | Cloakware Corporation | Tamper resistant software - mass data encoding |
US8752032B2 (en) * | 2007-02-23 | 2014-06-10 | Irdeto Canada Corporation | System and method of interlocking to protect software-mediated program and device behaviours |
KR101328012B1 (ko) * | 2013-08-12 | 2013-11-13 | 숭실대학교산학협력단 | 애플리케이션 코드 난독화 장치 및 그 방법 |
KR101350390B1 (ko) * | 2013-08-14 | 2014-01-16 | 숭실대학교산학협력단 | 코드 난독화 장치 및 그 방법 |
KR101490047B1 (ko) * | 2013-09-27 | 2015-02-04 | 숭실대학교산학협력단 | 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법 |
US9514309B1 (en) * | 2014-04-30 | 2016-12-06 | Symantec Corporation | Systems and methods for protecting files from malicious encryption attempts |
KR101814897B1 (ko) * | 2016-02-11 | 2018-01-04 | 라인 가부시키가이샤 | 파일 보호 방법 및 시스템 |
-
2020
- 2020-06-11 KR KR1020200071105A patent/KR20210154017A/ko active Search and Examination
-
2021
- 2021-05-28 US US17/333,575 patent/US11921874B2/en active Active
- 2021-06-10 JP JP2021097609A patent/JP2021197180A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210390198A1 (en) | 2021-12-16 |
US11921874B2 (en) | 2024-03-05 |
KR20210154017A (ko) | 2021-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105103127B (zh) | 用于基于编译器的混淆的方法和计算设备 | |
JP7231681B2 (ja) | パッケージファイルに対する機能拡張方法およびシステム | |
WO2015058620A1 (en) | Method and apparatus for generating installation package corresponding to an application and executing application | |
US10936747B2 (en) | Privacy annotation from differential analysis of snapshots | |
WO2022078366A1 (zh) | 应用保护方法、装置、设备及介质 | |
JP6935617B2 (ja) | 中間言語ファイルのロード速度改善のための方法およびシステム | |
JP2021197180A (ja) | クラス分散およびシーケンシャルメモリ格納を利用したファイル保護方法およびシステム | |
JP2017142792A (ja) | ファイル保護方法 | |
JP6917150B2 (ja) | コード保護方法およびコンピュータプログラム | |
US11074324B2 (en) | Preventing software application tampering | |
CN106922191B (zh) | 生成和执行受保护的软件项目 | |
JP2021005375A (ja) | 難読化解除方法および装置 | |
CN116249980A (zh) | 通过异构加密的软件访问 | |
JP7076014B2 (ja) | プログラム保護のためのJavaデバッガ遮断方法およびシステム | |
JP7320071B2 (ja) | ヒープメモリを利用して実行可能ファイルを保護する方法およびシステム | |
KR20190112491A (ko) | 애플리케이션 변환 장치 및 방법 | |
CN108427559A (zh) | 一种脚本文件生成和调用方法以及装置 | |
JP7348701B2 (ja) | メモリ上に実行可能イメージをロードする方法およびシステム | |
KR20230119821A (ko) | 코드 난독화 및 성능 개선을 위한 자동화된 패키지 재구성 방법 및 시스템 | |
KR20210008469A (ko) | 네이티브 라이브러리를 보호하는 방법 및 시스템 | |
CN114238871A (zh) | So中类成员函数保护方法、存储介质、电子设备及系统 | |
CN117235711A (zh) | 一种用于隐私保护的数据处理方法和模型训练设备 | |
CN114547559A (zh) | 符号混淆方法、装置、介质和计算设备 | |
CN110659488A (zh) | 基于shell脚本文件完整性保护方法以及装置 |