JP6917150B2 - コード保護方法およびコンピュータプログラム - Google Patents
コード保護方法およびコンピュータプログラム Download PDFInfo
- Publication number
- JP6917150B2 JP6917150B2 JP2017016730A JP2017016730A JP6917150B2 JP 6917150 B2 JP6917150 B2 JP 6917150B2 JP 2017016730 A JP2017016730 A JP 2017016730A JP 2017016730 A JP2017016730 A JP 2017016730A JP 6917150 B2 JP6917150 B2 JP 6917150B2
- Authority
- JP
- Japan
- Prior art keywords
- file
- code
- protection module
- function
- instruction
- 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
Links
- 238000000034 method Methods 0.000 title claims description 240
- 238000004590 computer program Methods 0.000 title claims description 12
- 230000006870 function Effects 0.000 claims description 150
- 230000015654 memory Effects 0.000 claims description 65
- 230000008569 process Effects 0.000 claims description 41
- 238000012545 processing Methods 0.000 claims description 36
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 230000001131 transforming effect Effects 0.000 claims description 10
- 230000003362 replicative effect Effects 0.000 claims description 5
- 230000001681 protective effect Effects 0.000 claims 6
- 230000001172 regenerating effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 22
- 230000006854 communication Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 17
- 238000004458 analytical method Methods 0.000 description 9
- 230000010076 replication Effects 0.000 description 8
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 230000004075 alteration Effects 0.000 description 6
- 238000012856 packing Methods 0.000 description 6
- 238000009434 installation Methods 0.000 description 4
- 238000010295 mobile communication Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 210000003813 thumb Anatomy 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000005389 magnetism Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
Images
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
Description
150、160: サーバ
170: ネットワーク
Claims (20)
- コンピュータによって実行されるコード保護方法であって、
前記コンピュータのプロセッサで、前記コンピュータの格納装置にアプリケーションのためのファイルが含まれたパッケージファイルを格納する段階、
前記プロセッサで、前記ファイルのうち実行コードが含まれたファイルで選別される保護対象メソッドまたは関数を変形するか、または前記ファイルのうちライブラリファイルを変換または除去する段階、
前記変形された保護対象メソッドまたは関数を復元するための第1保護モジュールファイルまたは前記ライブラリファイルを復元するための第2保護モジュールファイルを前記パッケージファイルに追加して前記パッケージファイルを再生成する段階、および
前記再生成されたパッケージファイルをネットワークを介して提供する段階を含み、前記第2保護モジュールファイルは、前記パッケージファイルを通じて前記アプリケーションがインストールされた電子機器で前記変換または除去されたライブラリファイルに対する制御命令をインターセプトし、前記第2保護モジュールファイルに含まれた暗号化されたライブラリファイルを利用して前記インターセプトされた制御命令を処理するモジュールを含む、コード保護方法。 - 前記プロセッサで、前記ファイルのうち実行コードが含まれたファイルで選別される保護対象メソッドまたは関数を変形する段階は、
前記ファイルのうち実行コードが含まれたファイルから保護対象メソッドまたは関数を選別して前記第1保護モジュールファイルに複製する段階、
前記選別された保護対象メソッドまたは関数が含むコードを前記実行コードで変形させる段階、および
前記第1保護モジュールファイルに複製された保護対象メソッドまたは関数を見つけ出すための検索コードを前記実行コードに追加する段階
を含む、請求項1に記載のコード保護方法。 - 前記保護対象メソッドまたは関数を選別して前記第1保護モジュールファイルに複製する段階は、
前記実行コードの全体メソッドまたは関数のうち予め設定された機能のメソッドまたは関数を前記保護対象メソッドまたは関数として選別するか、または前記アプリケーションの開発者によって入力された情報に対応するメソッドまたは関数を前記保護対象メソッドまたは関数として選別する、請求項2に記載のコード保護方法。 - 前記選別された保護対象メソッドまたは関数が含むコードを前記実行コードで変形させる段階は、
前記コードのインストラクションを、認識が不可能なアンノウンインストラクション(unknown instruction)または任意のランダムなアドレスにジャンプ(jump)するインストラクションに変形する、請求項2又は3に記載のコード保護方法。 - 前記第1保護モジュールファイルに複製された保護対象メソッドまたは関数を見つけ出すための検索コードを前記実行コードに追加する段階は、
前記選別された保護対象メソッドまたは関数にゲートウェイを呼び出すための第1コードを追加し、前記実行コードに前記ゲートウェイとして前記第1保護モジュールファイルに複製された保護対象メソッドまたは関数のメモリアドレスを得るための第2コードを追加する、請求項2−4のうちの何れか1項に記載のコード保護方法。 - 前記メモリアドレスは、前記アプリケーションがインストールされて実行される電子機器でのプログラムカウンタ(Program Counter:PC)と前記第1保護モジュールファイルによって提供される相手アドレス値を因子とし、前記第2コードにしたがって計算される、請求項5に記載のコード保護方法。
- 前記プロセッサで、前記ファイルのうち実行コードが含まれたファイルで選別される保護対象メソッドまたは関数を変形する段階は、
前記第1保護モジュールファイルに複製された保護対象メソッドまたは関数のインストラクションを第1キーまたは第1暗号化アルゴリズムによって暗号化する段階、および
前記第1保護モジュールファイルに複製された保護対象メソッドまたは関数に前記暗号化されたインストラクションを復号化するための復号化コードを追加する段階
をさらに含む、請求項2−6のうちの何れか1項に記載のコード保護方法。 - 前記第1保護モジュールファイルは、前記アプリケーションがインストールされた電子機器で前記アプリケーションが実行され、前記第1保護モジュールファイルに複製された保護対象メソッドまたは関数のインストラクションが前記復号化コードによって復号化される場合、所定の条件にしたがって前記インストラクションを第2キーまたは第2暗号化アルゴリズムによって再暗号化する機能を含む、請求項7に記載のコード保護方法。
- 前記プロセッサで、前記ファイルのうちライブラリファイルを変換または除去する段階は、
前記ライブラリファイルを暗号化して暗号化されたライブラリファイルを生成することにより前記ライブラリファイルを変換するか、または前記パッケージファイルから除去する段階、および
前記暗号化されたライブラリファイルを前記第2保護モジュールファイルに追加する段階
を含む、請求項2−8のうちの何れか1項に記載のコード保護方法。 - 前記電子機器で前記アプリケーションの実行時、前記電子機器のメモリにロードされた前記第2保護モジュールファイルに対するオープン命令にしたがって迂回リンカ(detour linker)が生成され、前記迂回リンカの制御にしたがって前記電子機器で前記ライブラリファイルに対する制御命令がインターセプトされる、請求項9に記載のコード保護方法。
- 前記変換または除去されたライブラリファイルに対する制御命令は、前記ライブラリファイルに対するオープン命令を含み、
前記第2保護モジュールファイルでインターセプトされた前記オープン命令にしたがって前記暗号化されたライブラリファイルを復号化した後、前記復号化されたライブラリファイルの内容が格納されたバッファを指示するフェイクハンドル(fake handle)パラメータを生成して返す、請求項9又は10に記載のコード保護方法。 - 前記変換または除去されたライブラリファイルに対する制御命令は、前記ライブラリファイルに対する読み取り命令、書き込み命令、および検索命令のうちの少なくとも1つの命令をさらに含み、
前記第2保護モジュールファイルで前記インターセプトされた前記少なくとも1つの命令にしたがって前記フェイクハンドルパラメータに基づいて前記復号化されたライブラリファイルの内容が格納されたバッファにアクセスして前記少なくとも1つの命令を処理する、請求項11に記載のコード保護方法。 - 前記第2保護モジュールファイルで前記読み取り命令にしたがって前記バッファで前記読み取り命令に対応する内容を複写して返すか、前記書き込み命令にしたがって前記バッファに前記書き込み命令に対応する内容を書き込むか、または前記検索命令にしたがって前記バッファで前記検索命令に対応するファイルポインタの位置を返す、請求項12に記載のコード保護方法。
- コンピュータを有する電子機器にコード保護方法を実行させるために記録媒体に格納されたコンピュータプログラムであって、
前記コード保護方法は、
前記電子機器のプロセッサが、前記電子機器の格納装置に、アプリケーションのためのファイルが含まれたパッケージファイルを格納させる段階であって、前記パッケージファイルは、変形された保護対象メソッドまたは関数を復元するための第1保護モジュールファイルまたはライブラリファイルを復元するための第2保護モジュールファイルを含み、前記ファイルのうち実行コードが含まれたファイルで選別される保護対象メソッドまたは関数が変形されているか、または前記ファイルのうち前記ライブラリファイルが変換または除去されている、段階、および
前記電子機器のプロセッサが、前記アプリケーションの実行にしたがって前記変形された保護対象メソッドまたは関数を前記第1保護モジュールファイルを通じて復元して前記実行コードを実行するか、または前記アプリケーションの実行時、前記変換または除去されたライブラリファイルを前記第2保護モジュールファイルを通じて復元して前記変換または除去されたライブラリファイルに対する制御命令を処理する段階
を含み、前記第2保護モジュールファイルは、前記パッケージファイルを通じて前記アプリケーションがインストールされた電子機器で前記変換または除去されたライブラリファイルに対する制御命令をインターセプトし、前記第2保護モジュールファイルに含まれた暗号化されたライブラリファイルを利用して前記インターセプトされた制御命令を処理するモジュールを含む、コンピュータプログラム。 - 前記第1保護モジュールファイルには、前記実行コードで選別された保護対象メソッドまたは関数が複製され、
前記実行コードには、前記第1保護モジュールファイルに複製された保護対象メソッドまたは関数を見つけ出すための検索コードが追加され、
前記電子機器のプロセッサで、前記アプリケーションの実行にしたがって前記変形された保護対象メソッドまたは関数を前記第1保護モジュールファイルを通じて復元して前記実行コードを実行する段階は、
前記選別された保護対象メソッドまたは関数に対し、前記検索コードを利用して前記第1保護モジュールファイルから前記複製された保護対象メソッドまたは関数を見つけ出して前記実行コードを実行する、請求項14に記載のコンピュータプログラム。 - 前記選別された保護対象メソッドまたは関数に含まれたコードのインストラクションが、認識が不可能なアンノウンインストラクション(unknown instruction)または任意のランダムなアドレスにジャンプ(jump)するインストラクションに変形される、請求項14又は15に記載のコンピュータプログラム。
- 前記第2保護モジュールファイルには、前記ライブラリファイルが暗号化されて追加され、
前記電子機器のプロセッサで、前記アプリケーションの実行時、前記変換または除去されたライブラリファイルを前記第2保護モジュールファイルを通じて復元して前記変換または除去されたライブラリファイルに対する制御命令を処理する段階は、
前記アプリケーションの実行時、前記電子機器のメモリに前記第2保護モジュールファイルが含む保護モジュールをロードする段階、
前記ロードされた保護モジュールの制御にしたがって前記変換または除去されたライブラリファイルに対する制御命令をインターセプト(intercept)する段階、および
前記ロードされた保護モジュールの制御にしたがって前記第2保護モジュールファイルに追加された暗号化されたライブラリファイルを利用して前記インターセプトされた制御命令を処理する段階
を含む、請求項14−16のうちの何れか1項に記載のコンピュータプログラム。 - コンピュータによって実現される電子機器のコード保護方法であって、
前記電子機器のプロセッサで、前記電子機器の格納装置にアプリケーションのためのファイルが含まれたパッケージファイルを格納する段階(前記パッケージファイルは、変形された保護対象メソッドまたは関数を復元するための第1保護モジュールファイルまたはライブラリファイルを復元するための第2保護モジュールファイルを含み、前記ファイルのうち実行コードが含まれたファイルで選別される保護対象メソッドまたは関数が変形されているか、または前記ファイルのうち前記ライブラリファイルが変換または除去されている)、および
前記電子機器のプロセッサで、前記アプリケーションの実行にしたがって前記変形された保護対象メソッドまたは関数を前記第1保護モジュールファイルを通じて復元して前記実行コードを実行するか、または前記アプリケーションの実行時、前記変換または除去されたライブラリファイルを前記第2保護モジュールファイルを通じて復元して前記変換または除去されたライブラリファイルに対する制御命令を処理する段階
を含み、前記第2保護モジュールファイルは、前記パッケージファイルを通じて前記アプリケーションがインストールされた電子機器で前記変換または除去されたライブラリファイルに対する制御命令をインターセプトし、前記第2保護モジュールファイルに含まれた暗号化されたライブラリファイルを利用して前記インターセプトされた制御命令を処理するモジュールを含む、コード保護方法。 - 前記第1保護モジュールファイルには、前記実行コードから選別された保護対象メソッドまたは関数が複製され、
前記実行コードには、前記第1保護モジュールファイルに複製された保護対象メソッドまたは関数を見つけ出すための検索コードが追加され、
前記電子機器のプロセッサで、前記アプリケーションの実行にしたがって前記変形された保護対象メソッドまたは関数を前記第1保護モジュールファイルを通じて復元して前記実行コードを実行する段階は、
前記選別された保護対象メソッドまたは関数に対し、前記検索コードを利用して前記第1保護モジュールファイルから前記複製された保護対象メソッドまたは関数を見つけ出して前記実行コードを実行する、請求項18に記載のコード保護方法。 - 前記第2保護モジュールファイルには、前記ライブラリファイルが暗号化されて追加され、
前記電子機器のプロセッサで、前記アプリケーションの実行時、前記変換または除去されたライブラリファイルを前記第2保護モジュールファイルを通じて復元して前記変換または除去されたライブラリファイルに対する制御命令を処理する段階は、
前記アプリケーションの実行時、前記電子機器のメモリに前記第2保護モジュールファイルが含む保護モジュールをロードする段階、
前記ロードされた保護モジュールの制御にしたがって前記変換または除去されたライブラリファイルに対する制御命令をインターセプト(intercept)する段階、および
前記ロードされた保護モジュールの制御にしたがって前記第2保護モジュールファイルに追加された暗号化されたライブラリファイルを利用して前記インターセプトされた制御命令を処理する段階
を含む、請求項18又は19に記載のコード保護方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2016-0015910 | 2016-02-11 | ||
KR1020160015910A KR101823226B1 (ko) | 2016-02-11 | 2016-02-11 | 코드 보호 방법 및 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017142791A JP2017142791A (ja) | 2017-08-17 |
JP6917150B2 true JP6917150B2 (ja) | 2021-08-11 |
Family
ID=59628580
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017016730A Active JP6917150B2 (ja) | 2016-02-11 | 2017-02-01 | コード保護方法およびコンピュータプログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6917150B2 (ja) |
KR (1) | KR101823226B1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102018960B1 (ko) * | 2017-12-19 | 2019-09-05 | 유재욱 | 이중 패킹을 이용한 코드 난독화 |
CN108133147B (zh) * | 2017-12-20 | 2023-12-22 | 中兴通讯股份有限公司 | 可执行代码的保护方法、设备及可读存储介质 |
KR102326100B1 (ko) * | 2020-01-06 | 2021-11-17 | 한국전자통신연구원 | 안전한 안드로이드 앱 생성 및 안드로이드 플랫폼에서의 앱 설치/실행을 위한 시스템 및 방법 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1593015B1 (en) * | 2003-02-03 | 2018-05-30 | Nokia Technologies Oy | Architecture for encrypted application installation |
WO2013101034A1 (en) * | 2011-12-29 | 2013-07-04 | Intel Corporation | Software modification for partial secure memory processing |
JP6343869B2 (ja) * | 2013-02-20 | 2018-06-20 | 凸版印刷株式会社 | 携帯端末装置及び復号処理プログラム |
KR101471589B1 (ko) * | 2013-08-22 | 2014-12-10 | (주)잉카엔트웍스 | 공통중간언어 기반 프로그램을 위한 보안 제공 방법 |
-
2016
- 2016-02-11 KR KR1020160015910A patent/KR101823226B1/ko active IP Right Grant
-
2017
- 2017-02-01 JP JP2017016730A patent/JP6917150B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2017142791A (ja) | 2017-08-17 |
KR20170094737A (ko) | 2017-08-21 |
KR101823226B1 (ko) | 2018-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10255443B2 (en) | Method, apparatus, system and non-transitory computer readable medium for code protection | |
JP6815385B2 (ja) | アプリケーションのコード難読化のためのシステムおよび方法 | |
US11093601B2 (en) | Dynamic switching between pointer authentication regimes | |
CN105103127B (zh) | 用于基于编译器的混淆的方法和计算设备 | |
US9230113B2 (en) | Encrypting and decrypting a virtual disc | |
US6868495B1 (en) | One-time pad Encryption key Distribution | |
US20180260199A1 (en) | Method and apparatus for intermediate representation of applications | |
Quoc et al. | Securetf: A secure tensorflow framework | |
JP6936016B2 (ja) | パッケージファイルに対する機能拡張方法およびシステム | |
WO1998011690A9 (en) | Self-decrypting digital information system and method | |
WO1998011690A1 (en) | Self-decrypting digital information system and method | |
US20090187769A1 (en) | System and method for an autonomous software protection device | |
JP6917150B2 (ja) | コード保護方法およびコンピュータプログラム | |
JP6935617B2 (ja) | 中間言語ファイルのロード速度改善のための方法およびシステム | |
CN116249980A (zh) | 通过异构加密的软件访问 | |
KR101771348B1 (ko) | 패키지 파일에 대한 패킹 방법 및 시스템 | |
JP2021197180A (ja) | クラス分散およびシーケンシャルメモリ格納を利用したファイル保護方法およびシステム | |
JP7015120B2 (ja) | アプリケーションパッケージを提供する方法およびシステム、アプリケーションを実行する方法およびシステム | |
JP6698775B2 (ja) | 共有オブジェクトのコード保護のための保安提供装置と方法、及び保安実行装置と方法 | |
CN109492353B (zh) | 应用加固方法、装置、电子设备和存储介质 | |
JP7348701B2 (ja) | メモリ上に実行可能イメージをロードする方法およびシステム | |
KR102677540B1 (ko) | 네이티브 라이브러리를 보호하는 방법 및 시스템 | |
Novokmet | Monolith to serverless microservice application evolution | |
Nam et al. | Interface Module for Emulator-Based Web Application Execution Engine | |
CN115640571A (zh) | 用于可信执行环境TEE的库操作***LibOS的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200123 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20201125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20201215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210204 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20210414 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20210412 |
|
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: 20210706 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210719 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6917150 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |