JP6698707B2 - バイナリ併合装置、その方法及び該コンピュータプログラム - Google Patents

バイナリ併合装置、その方法及び該コンピュータプログラム Download PDF

Info

Publication number
JP6698707B2
JP6698707B2 JP2017563554A JP2017563554A JP6698707B2 JP 6698707 B2 JP6698707 B2 JP 6698707B2 JP 2017563554 A JP2017563554 A JP 2017563554A JP 2017563554 A JP2017563554 A JP 2017563554A JP 6698707 B2 JP6698707 B2 JP 6698707B2
Authority
JP
Japan
Prior art keywords
binary
programming interface
merging
address table
merging device
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
JP2017563554A
Other languages
English (en)
Other versions
JP2018521403A (ja
JP2018521403A5 (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.)
Line Corp
Original Assignee
Line Corp
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 Line Corp filed Critical Line Corp
Publication of JP2018521403A publication Critical patent/JP2018521403A/ja
Publication of JP2018521403A5 publication Critical patent/JP2018521403A5/ja
Application granted granted Critical
Publication of JP6698707B2 publication Critical patent/JP6698707B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/1008Correctness of operation, e.g. memory ordering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、バイナリ併合装置、その方法及び該コンピュータプログラムに係り、さらに具体的には、アプリケーションの原バイナリである第1バイナリと、アプリケーションに追加する第2バイナリとを、ソースコードの修正なしにバイナリ状態で併合させるバイナリ併合装置、その方法及び該コンピュータプログラムに関する。
現在、ほとんどのソフトウェア開発手続き及びその開発に使用されるツールを活用した開発作業において、開発者らは、要求提起者(ビジネス実務担当者)またはソフトウェア設計者の指示を受け、ビジネスロジックを具現するためのソースコーディング作業を遂行しなければならず、かようなビジネスロジック具現に必要な一体のデータベースI/O、ハードウェア制御、運用体制制御、保安管理などの機能を単位モジュールごとに一つ一つ作らねばならない。
本発明は、アプリケーションの原バイナリである第1バイナリと、アプリケーションに追加する第2バイナリとを、ソースコードの修正なしに、バイナリ状態で併合させるバイナリ併合装置、その方法及び該コンピュータプログラムを提供することを一目的とする。
本発明の実施形態による第1バイナリを保存するメモリと、制御部とを含むバイナリ併合装置がバイナリを併合する方法は、前記制御部が、前記第1バイナリに注入する第2バイナリを生成する段階と、前記制御部が第1プログラミングインターフェースを参照するアプリケーションの第1バイナリを難読化させる段階と、前記制御部が、前記第1バイナリに係わる第1プログラミングインターフェースを生成する段階と、前記制御部が、前記第2バイナリに係わる第2プログラミングインターフェースを生成する段階と、前記制御部が、前記第1プログラミングインターフェース及び前記第2プログラミングインターフェースを比較し、参照される関数が完全に同一であるか否かということを判断する段階と、前記判断結果、第2プログラミングインターフェース及び第1プログラミングインターフェースが完全に同一ではない場合、前記制御部が、前記第1プログラミングインターフェースと対応する第1アドレステーブルを、前記第2プログラミングインターフェースと対応する第2アドレステーブルに交替する段階と、及び前記制御部が、前記第1バイナリ及び前記第2バイナリを併合した最終バイナリを生成し、前記最終バイナリのエントリポイントが第2バイナリになるように設定する段階と、を含んでもよい。
前述のところ以外の他の側面、特徴、利点が、以下の図面、特許請求の範囲、及び発明の詳細な説明から明確になるであろう。
本発明によれば、アプリケーションの原バイナリである第1バイナリと、アプリケーションに追加する第2バイナリとをソースコードの修正なしにバイナリ状態で併合させることができる。
本発明の実施形態によるバイナリ配布システムを示す図面である。 本発明の実施形態によるバイナリ併合装置を示すブロック図である。 制御部の構造を示す図面である。 本発明の実施形態によるバイナリ併合方法を示すフローチャートである。 バイナリ併合装置によって生成されたバイナリが実行される方法を示すフローチャートである。 バイナリ併合装置と、第1ユーザ端末機、第2ユーザ端末機とのデータ送受信及び動作を示す図面である。 バイナリ併合装置と、第1ユーザ端末機、第2ユーザ端末機とのデータ送受信及び動作を示す図面である。 ユーザ端末機の構造を示す図面である。 バイナリの構造を説明するための図面であり、(a)は、バイナリを併合する前の第1バイナリの構造を示す図面であり、(b)は、第1バイナリ及び第2バイナリを併合した最終バイナリの構造を示す図面である。 バイナリのコード領域と、アドレステーブルとの連結関係を示す図面である。
<発明の概要>
本発明の実施形態による第1バイナリを保存するメモリと、制御部とを含むバイナリ併合装置がバイナリを併合する方法は、前記制御部が、前記第1バイナリに注入する第2バイナリを生成する段階と、前記制御部が第1プログラミングインターフェースを参照するアプリケーションの第1バイナリを難読化させる段階と、前記制御部が、前記第1バイナリに係わる第1プログラミングインターフェースを生成する段階と、前記制御部が、前記第2バイナリに係わる第2プログラミングインターフェースを生成する段階と、前記制御部が、前記第1プログラミングインターフェース及び前記第2プログラミングインターフェースを比較し、参照される関数が完全に同一であるか否かということを判断する段階と、前記判断結果、第2プログラミングインターフェース及び第1プログラミングインターフェースが完全に同一ではない場合、前記制御部が、前記第1プログラミングインターフェースと対応する第1アドレステーブルを、前記第2プログラミングインターフェースと対応する第2アドレステーブルに交替する段階と、及び前記制御部が、前記第1バイナリ及び前記第2バイナリを併合した最終バイナリを生成し、前記最終バイナリのエントリポイントが第2バイナリになるように設定する段階と、を含んでもよい。
本実施形態において、前記第1バイナリまたは前記第2バイナリは、モバイル環境で実行されるバイナリでもある。
本実施形態において、前記第2バイナリは、前記第1バイナリを復号する関数を含むソースファイルから生成したバイナリでもある。
本実施形態において、前記第2バイナリは、アセンブリ語で具現されたバイナリでもある。
本実施形態において、前記第2バイナリは、前記第1バイナリのうち実行バイナリファイルに含まれるように生成されたバイナリでもある。
本実施形態において、前記第1アドレステーブルは、前記第1プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含み、前記第2アドレステーブルは、前記第2プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含んでもよい。
本発明の実施形態によるバイナリ併合装置は、第1プログラミングインターフェースを参照するアプリケーションの第1バイナリを難読化させる難読化部と、前記第1バイナリに注入する第2バイナリを生成するコード生成部と、前記第1バイナリに係わる第1プログラミングインターフェースを生成する第1参照分析部と、前記第2バイナリに係わる第2プログラミングインターフェースを生成する第2参照分析部と、前記第1プログラミングインターフェース及び前記第2プログラミングインターフェースを比較し、参照される関数が完全に同一であるか否かということを判断する判断部と、前記判断結果、第2プログラミングインターフェース及び第1プログラミングインターフェースが完全に同一ではない場合、前記第1プログラミングインターフェースと対応する第1アドレステーブルを、前記第2プログラミングインターフェースと対応する第2アドレステーブルに交替するテーブル処理部と、前記アプリケーションのエントリポイントが第2バイナリになるように設定する処理部と、を含んでもよい。
本発明の実施形態によるコンピュータプログラムは、コンピュータを利用して、本発明の実施形態によるバイナリを併合する方法のうちいずれか1つの方法を実行させるために媒体に保存される。
それ以外にも、本発明を具現するための他の方法、他のシステム、及び前記方法を実行するためのコンピュータプログラムを記録するコンピュータで読み取り可能な記録媒体がさらに提供される。
<発明の詳細>
本発明は、多様な変換を加えることができ、さまざまな実施形態を有することができるが、特定実施形態を図面に例示し、詳細な説明によって詳細に説明する。本発明の効果、特徴、及びそれらを達成する方法は、図面と共に詳細に説明する実施形態を参照すれば、明確になるであろう。しかし、本発明は、以下で開示される実施形態に限定されるのではなく、多様な形態に具現されるのである。
以下、添付された図面を参照し、本発明の実施形態について詳細に説明し、図面を参照して説明するとき、同一であるか、あるいは対応する構成要素は、同一図面符号を付し、それに係わる重複説明は省略する事にする。
以下の実施形態において、第1、第2のような用語は、限定的な意味ではなく、1つの構成要素を他の構成要素と区別する目的に使用されている。
以下の実施形態において、単数の表現は文脈上明白に違うように示されない限り、複数の表現を含む。
以下の実施形態において、「含む」または「有する」というような用語は、明細書上に記載された特徴または構成要素が存在するということを意味するものであり、1以上の他の特徴または構成要素が付加される可能性をあらかじめ排除するものではない。
ある実施形態が異なって具現可能な場合、特定の工程順序は、説明される順序と異なって遂行されもする。例えば、連続して説明される2つの工程が、実質的に同時に遂行されもし、説明される順序と反対の順序で進められもする。
以下の実施形態において、「回路」は、例えば、プログラム可能な回路によって実行されるインストラクションを保存するハードウェアド回路、プログラム可能な回路、状態マシン回路及び/またはファームウェアを、単独、または任意の組み合わせで含んでもよい。アプリケーションは、ホストプロセッサ、または他のプログラム可能な回路のようなプログラム可能な回路上で実行されるコードまたはインストラクションとして具現される。本願の任意の実施形態において使用されるようなモジュールは、回路としても具現される。該回路は、集積回路チップのような集積回路としても具現される。
以下の実施形態において、ある部分がある構成要素を「含む」とするとき、それは、特別に反対となる記載がない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、明細書に記載された「…部」、「…器」、「モジュール」のような用語は、少なくとも1つの機能や動作を処理する単位を意味し、それは、ハードウェアやソフトウェア、またはハードウェア及びソフトウェアの結合によっても具現される。
図1は、本発明の実施形態によるバイナリ配布システム1を示す図面である。
図1を参照すれば、本発明の実施形態によるバイナリ配布システム1は、バイナリ併合装置100、ユーザ端末機200,400、通信網300を含んでもよい。
バイナリ併合装置100は、第1バイナリ及び第2バイナリを併合する機能を遂行する。バイナリ併合装置100は、第1バイナリの難読化のための第2バイナリを生成し、第1バイナリ及び第2バイナリを併合させた最終バイナリを生成することができる。バイナリ併合装置100によって生成されたアプリケーションの最終バイナリのエントリポイントは、第2バイナリになる。また、バイナリ併合装置100を介して、生成された第2バイナリは、第1バイナリを復号する機能を遂行し、第2バイナリのためのアドレステーブルから、第1バイナリのためのアドレステーブルに交替する機能を遂行する。
また、バイナリ併合装置100は、1以上のアプリケーションの原バイナリを管理者端末機200,400から受信し、原バイナリを難読化し、難読化されたバイナリ解読のための保安(又はセキュア)バイナリを生成し、最終的に、アプリケーションそれぞれの原バイナリに保安バイナリを併合した最終バイナリを生成する。ここで、管理者は、アプリケーションのバイナリを生成する者であるか、あるいはバイナリ併合装置100を管理する者でもある。
ユーザは、ユーザ端末機200,400を介して、アプリケーションのためのバイナリをダウンロードする。ユーザ端末機200,400は、ダウンロードされたバイナリを実行させる。
複数個のユーザ端末機200は、有無線通信環境でウェブサービスを利用することができる通信端末機を意味する。ここで、ユーザ端末機200は、ユーザのパソコン201でもあり、またはユーザの携帯用端末202でもある。図1においては、携帯用端末機202がスマートフォンとして図示されているが、本発明の思想は、それに制限されるものではなく、前述のように、ウェブブラウジングが可能なアプリケーションを搭載した端末であるならば、制限なしに使用される。
それについてさらに詳細に説明すれば、ユーザ端末機200は、コンピュータ(例えば、デスクトップ、ラップトップ、タブレットなど)、メディアコンピュータプラットフォーム(例えば、ケーブル、衛星セットトップボックス、デジタルビデオレコーダ)、ハンドヘルドコンピュータデバイス(例えば、PDA(personal digital assistant)、電子メールクライアントなど)、携帯電話の任意形態、または他種のコンピュータ、またはコミュニケーションプラットフォームの任意の形態を含んでもよいが、本発明は、それらに限定されるものではない。
一方、通信網300は、複数個のユーザ端末機200とバイナリ併合装置100とを連結する役割を行う。すなわち、通信網300は、ユーザ端末機200が、バイナリ併合装置100に接続した後、データを送受信することができるように、接続経路を提供する通信網を意味する。通信網300は、例えば、LANs(local area networks)、WANs(wide area networks)、MANs(metropolitan area networks)、ISDNs(integrated service digital networks)などの有線ネットワーク;無線LANs、CDMA(code division multiple access)、ブルートゥース(登録商標(Bluetooth))、衛星通信などの無線ネットワークを網羅することができるが、本発明の範囲は、それらに限定されるものではない。
図2は、本発明の実施形態によるバイナリ併合装置100を示すブロック図である。
図2を参照すれば、バイナリ併合装置100は、通信部110、データベース120、制御部130を含んでもよい。
通信部110は、バイナリ併合装置100と、少なくとも1つのユーザ端末機200との通信を可能にする1以上の構成要素を含んでもよい。例えば、通信部110は、ブルートゥース(Bluetooth)通信部、BLE(Bluetooth low energy)通信部、近距離無線通信部(near field communication unit)、WLAN(wireless local area network)(Wi−Fi(wireless fidelity))通信部、ジグビー(Zigbee)通信部、赤外線(IrDA:infra red data association)通信部、WFD(Wi−Fidirect)通信部、UWB(ultra wide band)通信部、Ant+通信部などを含むか、あるいは移動通信網上で、基地局、外部の端末、サーバのうち少なくとも一つと無線信号を送受信する通信部を含んでもよいが、それらに限定されるものではない。ここで、該無線信号は、音声コール信号、画像通話コール信号、または文字/マルチメディアメッセージ送受信による多様な形態のデータを含んでもよい。
データベース120は、バイナリ併合装置100が受信して伝送しなければならないバイナリ、及びバイナリ関連データを保存管理する機能を遂行する。図2には、データベース120が、バイナリ併合装置100の内部に具備されているように図示されているが、それは、説明の便宜のためのものであり、データベース120は、バイナリ併合装置100の外部装置にも具備される。データベース120は、フラッシュメモリタイプ、ハードディスクタイプ、マルチメディアカードマイクロタイプ、カードタイプのメモリ(例えば、SDメモリまたはXDメモリなど)、RAM(random access memory)、SRAM(static random access memory)、ROM(read-only memory)、EEPROM(electrically erasable programmable read-only memory)、PROM(programmable read-only memory)、磁気メモリ、磁気ディスク、光ディスクのうち少なくとも1つのタイプの記録媒体を含んでもよい。また、バイナリ併合装置100は、インターネット上において、データベース120の保存機能を遂行するウェブストレージまたはクラウドサーバを運用することもできる。
制御部130は、一般的に、バイナリ併合装置100の全般的な動作を制御する。例えば、制御部130は、データベース120に保存されたプログラムを実行することにより、通信部110、データベース120などを全般的に制御することができる。制御部130は、プロセッサのように、データを処理することができる全種の装置を含んでもよい。ここで、「プロセッサ」は、例えば、プログラム内に含まれたコードまたは命令によって表現された機能を遂行するために、物理的に構造化された回路を有する、ハードウェアに内蔵されたデータ処理装置を意味する。かように、ハードウェアに内蔵されたデータ処理装置の一例として、マイクロプロセッサ、中央処理装置(CPU:central processing unit)、プロセッサコア、マルチプロセッサ、ASIC(application-specific integrated circuit)、FPGA(field programmable gate array)などの処理装置を網羅することができるが、本発明の範囲は、それらに限定されるものではない。
制御部130の構造について詳細に説明した図3を参照すれば、制御部130は、アプリケーションの原バイナリである第1バイナリと、追加モジュールに係わる第2バイナリとを併合する機能を遂行するために、難読化部131、コード生成部132、第1参照分析部133、第2参照分析部134、判断部135、テーブル処理部136、処理部137を含んでもよい。ここで、併合される第1バイナリ及び第2バイナリは、モバイル環境、例えば、スマートフォン、携帯電話などで実行されるバイナリでもある。
コード生成部131は、アプリケーションの原バイナリである第1バイナリに注入する第2バイナリを生成する。ここで、該第2バイナリは、アプリケーションの原バイナリである第1バイナリを復号するためのソースファイルをビリングしたファイルであり、第1バイナリを復号する関数、第2バイナリのためのアドレステーブルを、第1バイナリのためのアドレステーブルに交替することができる関数を含んでも具現される。第2バイナリは、第1バイナリのためのプログラミングインターフェースと異なるプログラミングインターフェースを参照することができ、第2バイナリのプログラミングインターフェースの正しい参照のために、プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含むアドレステーブルを生成することができ、第1バイナリのためのアドレステーブルに復元する機能が具現される。また、第2バイナリは、アドレステーブルの交替及び復元に係わるコードを含んでもよい。さらに具体的には、第2バイナリは、アプリケーションの原バイナリである第1バイナリの実行前、第1バイナリと対応するアドレステーブルに復元するコードを含んでもよい。特に、第2バイナリは、コンピュータでの機能を遂行するプログラムを作成するために使用される記号体系によって作成され、アセンブリ語、Fortran、C、C++、JAVA(登録商標)などの言語でも具現されるが、それらに限定されるものではない。
難読化部132は、アプリケーションの原バイナリである第1バイナリを難読化させる。ここで、該難読化は、プログラム変換の一種であり、コードを読み難くすることにより、逆行分析(reverse engineering)を介した攻撃を防ぐための目的とする。難読化技術は、区画難読化(layout obfuscation)、データ難読化(data obfuscation)、集合難読化(aggregation obfuscation)、制御難読化(control obfuscation)がある。それぞれの難読化技術は、当該技術分野で当業者であるならば、一般的な事柄であり、対称キーを利用した難読化、非対称キーを利用した難読化のうち1つの方法によって遂行されるであろう。
第1参照分析部133は、前記第1バイナリに係わる第1プログラミングインターフェースを抽出する。第1バイナリのソースである第1ソースファイルに含まれた1以上の関数は、呼び出される位置と、定義される位置とが異なることがあるが、そのとき、呼び出されるファイル内に定義されていない第1関数実行のために、第1ソースファイルは、第1関数が定義されたファイルを参照しなければならない。第1関数実行のために、定義されたファイルを参照することをプログラミングインターフェースという。第1関数の参照関係を有する第1ソースファイルをビルド(コンパイル)した第1バイナリは、第1関数が定義されたファイルを迅速に呼び出すために、第1関数が定義された領域の位置を、アドレス値でテーブル(以下、アドレステーブル)にして含む。第1参照分析部133は、第1バイナリに含まれたアドレステーブルを活用し、第1バイナリに係わる第1プログラミングインターフェースを抽出する。
第2参照分析部134は、前記第2バイナリに係わる第2プログラミングインターフェースを抽出する。第2プログラミングインターフェースは、第2バイナリに含まれた1以上の第2関数が、外部のファイルから定義されることにより、第2関数が定義されたファイルを、第2関数が呼び出されるファイルが参照しなければならない参照関係をいう。第2参照分析部134は、第2バイナリに含まれたアドレステーブルを活用し、第2バイナリのプログラミングインターフェースを抽出することができる。ここで、該プログラミングインターフェースは、関数名、関数が定義された領域のアドレス値をマッチングさせて含んでおり、関数名及びアドレス値は、二進値からなる。
判断部135は、抽出した第1プログラミングインターフェースと第2プログラミングインターフェースとを比較し、第1プログラミングインターフェース及び第2プログラミングインターフェースが完全に同一であるか否かということを判断する。判断部135は、第1プログラミングインターフェースに含まれた関数名及びアドレス値を順次に抽出し、抽出された関数名及びアドレス値が、第2プログラミングインターフェースに含まれているか否かということを個別に比較することにより、第1プログラミングインターフェース及び第2プログラミングインターフェース間の同一いかんを判断することができる。
テーブル処理部136は、前記判断結果、第1プログラミングインターフェース及び第2プログラミングインターフェースが完全に同一ではない場合、前記第1プログラミングインターフェースと対応する第1アドレステーブルを、前記第2プログラミングインターフェースと対応する第2アドレステーブルに交替する。それを介して、本発明の実施形態によるバイナリ併合装置100は、ビルドされたバイナリのソースファイルなしに、追加するモジュールを追加することができ、追加されたモジュールのアドレステーブル及びバイナリを、原バイナリに併合することにより、原バイナリにモジュール追加が可能になる。特に、本発明の実施形態によるバイナリ併合装置100は、原バイナリに、バイナリの難読化及び復号のための追加モジュールのバイナリを併合することにより、アプリケーションが、ハッカの攻撃、ウイルスの攻撃などを受けることを防止することができる。また、本発明の実施形態によるバイナリ併合装置100は、技術流出、機密保護などの理由で、ソースファイルの公開が困難である状況で、アプリケーションのバイナリに対して、保安モジュールを追加することができる。
処理部137は、前記第1バイナリ及び前記第2バイナリを併合した最終バイナリを生成し、前記最終バイナリのエントリポイントが第2バイナリになるように設定する。
他の実施形態において、バイナリ併合装置100は、第1参照分析部133及び判断部135の実行なしに、アプリケーションのアドレステーブルを、第2バイナリと対応する第2プログラミングインターフェースと対応する第2アドレステーブルに交替することができる。それを介して、本発明の実施形態によるバイナリ併合装置100は、比較手続きなしに、バイナリ併合という本来の目的を追い求めることができる。
また、選択的実施形態において、バイナリ併合装置100は、1以上のアプリケーションのバイナリを保存管理し、ユーザ端末機200,400からのダウンロード要請と対応し、アプリケーションの最終バイナリを伝送するバイナリ送信部(図示せず)をさらに含んでもよい。また、バイナリ併合装置100は、1以上の管理者のユーザ端末機200,400から、アプリケーションの原バイナリを受信するバイナリ受信部(図示せず)をさらに含んでもよい。バイナリ併合装置100は、管理者のユーザ端末機200,400から受信したアプリケーションの原バイナリである第1バイナリに、保安関連モジュールである第2バイナリを併合し、前記アプリケーションに対するダウンロード要請を行ったユーザ端末機に、併合した最終バイナリを伝送することができる。
図4は、本発明の実施形態によるバイナリ併合方法を示すフローチャートである。
図4を参照すれば、本発明の実施形態によるバイナリ併合方法は、難読化段階(S110、バイナリ生成段階(S120)、第1プログラミングインターフェース生成段階(S130、第2プログラミングインターフェース生成段階(S140)、判断段階(S150)、テーブル処理部(S160)を含んでもよい。
S110においては、バイナリ併合装置100は、アプリケーションの原バイナリである第1バイナリに注入する第2バイナリを生成する。
S120においては、バイナリ併合装置100は、アプリケーションの原バイナリである第1バイナリを難読化させる。ここで、該難読化は、プログラム変換の一種でもってコードを読み難くすることにより、逆行分析を介した攻撃を防ぐことを目的とする。
S130においては、バイナリ併合装置100は、前記第1バイナリに係わる第1プログラミングインターフェースを抽出する。
S140においては、バイナリ併合装置100は、前記第2バイナリに係わる第2プログラミングインターフェースを抽出する。
S150においては、バイナリ併合装置100は、抽出した第1プログラミングインターフェースと、第2プログラミングインターフェースとを比較し、第1プログラミングインターフェース及び第2プログラミングインターフェースが完全に同一であるか否かということを判断する。
S160においては、バイナリ併合装置100は、前記判断結果、第1プログラミングインターフェース及び第2プログラミングインターフェースが完全に同一ではない場合、前記第1プログラミングインターフェースと対応する第1アドレステーブルを、前記第2プログラミングインターフェースと対応する第2アドレステーブルに交替する。
図5は、バイナリ併合装置100によって生成されたバイナリが実行される方法を示すフローチャートである。
バイナリ併合装置100によって生成されたバイナリは、ユーザ端末機200,400に伝送されて実行されるが、図5を参照すれば、バイナリが実行される方法は、第2バイナリ実行段階(S210)、第1バイナリ復号段階(S220)、アドレステーブル交替段階(S230)、第1バイナリ実行段階(S240)を含んでもよい。
S210段階に先立ち、ユーザ端末機200,400は、バイナリ併合装置100に、アプリケーションに対するバイナリダウンロード要請を伝送し、前記バイナリダウンロード要請の応答として、前記バイナリ併合装置100から、前記アプリケーションに係わるバイナリを受信する。
S210においては、ユーザ端末機200,400は、ユーザのアプリケーションに対する実行入力と対応し、前記アプリケーションのバイナリを実行させる。このとき、バイナリ併合装置100によって受信されたバイナリのコードによって、バイナリのエントリポイントである第2バイナリを実行させる。
S220においては、ユーザ端末機200,400の制御部は、第1バイナリを復号する。ここで、復号過程は、第1バイナリの難読化を解読する過程として、難読化の方法に係わる方法によって遂行される。例えば、対称キーを利用して、第1バイナリが難読化されるならば、対称キーを利用して第1バイナリが復号される過程が遂行され、非対称キーを利用して第1バイナリが難読化されるならば、難読化過程で利用された個人キーと対をなす公開キーを利用して第1バイナリが復号される。第2バイナリは、図3に図示されているように、第1バイナリを難読化させたアルゴリズムと対をなす復号アルゴリズムを含んでおり、第1バイナリの復号に利用される。復号ロジックは、特定暗号化アルゴリズムに限られるものではなく、本発明の実施形態によるバイナリ併合装置及びその方法は、復号時間を短縮させるために、エンコーディング技法を利用した難読化を行う。
S230においては、ユーザ端末機200,400の制御部は、バイナリに含まれたアドレステーブルを、第1バイナリと対応する第1アドレステーブルに交替する。第1アドレステーブルは、第1バイナリに含まれた1以上の関数の定義領域に係わる情報を含んでおり、関数名、関数が定義された領域のアドレス値を含んでもよい。
S240においては、ユーザ端末機200,400の制御部は、第1バイナリを実行する。
図6及び図7は、バイナリ併合装置100と、第1ユーザ端末機200、第2ユーザ端末機400とのデータ送受信及び動作を示す図面である。
図6に開示された実施形態によれば、バイナリ併合装置100は、アプリケーションの配布バイナリを保存管理する機能だけでなく、アプリケーションの配布バイナリを生成する機能を遂行する。
バイナリ併合装置100は、第1ユーザ端末機200から、第1アプリケーションに係わるバイナリアップロード信号を受信する(S310)。ここで、第1アプリケーションに係わるバイナリアップロード信号は、第1アプリケーションを配布するために、第1アプリケーションのバイナリをアップロードするための信号として、第1アプリケーションに係わる情報、第1アプリケーションのバイナリを含んでもよく、また、ユーザに提供する説明である第1アプリケーションの詳細説明、開発者、開発企業、用途、ユーザレビュ、評点、価格情報、関連コンテンツなどを含んでもよい。
バイナリ併合装置100は、バイナリアップロード信号と対応し、第1アプリケーションの原バイナリである第1バイナリに追加機能を有する第2バイナリを併合した最終バイナリを生成する(S320)。特に、第2バイナリは、保安関連機能を有することができる。それを介して、バイナリ併合装置100は、原バイナリのデコーディングなしに原バイナリを難読化し、復号することができる追加バイナリを併合させることができる。バイナリ併合装置100は、第1アプリケーションの最終バイナリを直接保存管理したり、第1アプリケーションの最終バイナリを、アプリケーションの配布バージョンを管理するバイナリ配布装置に伝送したりすることができる。
バイナリの配布過程について説明すれば、バイナリ併合装置100は、第2ユーザ端末機400から、第1アプリケーションに係わるダウンロード要請を受信し(S330)、前記ダウンロード要請と対応し、第2ユーザ端末機400に、第1アプリケーションの最終バイナリを伝送する(S340)。
受信した最終バイナリを受信した第2ユーザ端末機400は、第1アプリケーションに係わる最終バイナリを実行する(S350)。第2ユーザ端末機400は、最終バイナリに含まれた第2バイナリを実行し、最終バイナリのアドレステーブルを、第1バイナリのためのアドレステーブルに交替し(S360)、第1バイナリを実行する(S370)。
かように、本発明の実施形態によるバイナリ配布システム10は、開発者または管理者の端末機から受信した1以上のバイナリを、アプリケーション別に保存管理し、受信した1以上のバイナリの偽造・変造を防止するための保安関連モジュールである保安バイナリを併合することができる。併合された保安バイナリを介して、ユーザ端末機200,400にダウンロードされた最終バイナリは、暗号化された状態を維持し、リアルタイムで行われる悪性コードまたはウイルスの攻撃から保護される。
図7に開示された実施形態によれば、バイナリ併合装置100は、アプリケーションの配布バイナリを生成する機能を遂行し、別途のバイナリ配布装置が、アプリケーションの配布バイナリを配布する機能を遂行する。
バイナリ併合装置100は、第1ユーザ端末機200から、第2アプリケーションに係わるバイナリアップロード信号を受信する(S410)。
バイナリ併合装置100は、バイナリアップロード信号と対応し、第2アプリケーションの原バイナリである第1バイナリに追加機能を有する第2バイナリを併合した最終バイナリを生成する(S420)。
バイナリの配布過程について説明すれば、バイナリ併合装置100は、バイナリ配布サーバ101に、第2アプリケーションの最終バイナリを伝送する(S430)。バイナリ配布サーバ101は、第2ユーザ端末機400から、第2アプリケーションに対するダウンロード要請を受信し(S440)、前記ダウンロード要請と対応し、第2ユーザ端末機400に、第1アプリケーションの最終バイナリを伝送する(S450)。
受信した最終バイナリを受信した第2ユーザ端末機400は、第1アプリケーションに係わる最終バイナリを実行する(S460)。第2ユーザ端末機400は、最終バイナリに含まれた第2バイナリを実行し、最終バイナリのアドレステーブルを、第1バイナリのためのアドレステーブルに交替し(S470)、第1バイナリを実行する(S480)。ここで、第1ユーザ端末機及び第2ユーザ端末機は、ユーザ端末機が互いに区別される装置であるということを示すための意味であり、図6の第1ユーザ端末機及び第2ユーザ端末機と同一端末機を指すものではない。
図8は、ユーザ端末機の構造を示す図面である。
図8を参照すれば、本発明の一実施形態によるユーザ端末機200は、センシング部210、通信部220、出力部230及び制御部240、ユーザ入力部250、A/V(audio/video)入力部260、メモリ270を含んでもよい。
以下、前述の構成要素について順に説明する。
センシング部210は、ユーザ端末機200の位置情報を獲得する。センシング部210は、ユーザ端末機200が移動する場合、移動速度情報及び移動時間情報などを獲得し、変更されるユーザ端末機200の位置情報を決定することができる。
センシング部210は、地磁気センサ211、加速度センサ212、温度/湿度センサ213、赤外線センサ214、ジャイロスコープセンサ215、位置センサ(例えば、GPS(global position system))216、気圧センサ217、近接センサ218及びRGBセンサ(illuminance sensor)219のうち少なくとも一つを含んでもよいが、それらに限定されるものではない。各センサの機能は、その名称から、当業者が直観的に推論することができるので、具体的な説明は省略する。
センシング部210は、ユーザ端末機200の状態情報を獲得することができる。センシング部210は、ユーザ端末機200の勾配、ユーザ端末機200が位置した方向、及びユーザ端末機200の動きのうち少なくとも一つに係わる情報を獲得することができる。
また、センシング部210は、ユーザ入力を感知することができる。センシング部210は、感知されるユーザ入力の時間長、及びユーザ入力の類型のうち少なくとも一つに係わる情報を獲得することができる。
通信部220は、ユーザ端末機201と異なるユーザ端末機202との通信、またはユーザ端末機200とショッピングサービス提供装置100との通信を可能にする1以上の構成要素を含んでもよい。例えば、通信部220は、近距離通信部221、移動通信部222、放送受信部223を含んでもよい。
近距離通信部(short-range wireless communication unit)221は、ブルートゥース(Bluetooth)通信部、BLE通信部、近距離無線通信部、WLAN(Wi−Fi)通信部、ジグビー(ZigBee)通信部、赤外線(IrDA)通信部、WFD通信部、UWB通信部、Ant+通信部などを含んでもよいが、それらに限定されるものではない。
移動通信部222は、移動通信網上において、基地局、外部の端末、サーバのうち少なくとも一つと無線信号を送受信する。ここで、該無線信号は、音声コール信号、画像通話コール信号、または文字/マルチメディアメッセージ送受信による多様な形態のデータを含んでもよい。
放送受信部223は、放送チャンネルを介して、外部から放送信号及び/または放送に係わる情報を受信する。該放送チャンネルは、衛星チャネル、地上波チャネルを含んでもよい。一具現例によって、ユーザ端末機200が放送受信部223を含まないこともある。
出力部230には、ディスプレイ部231、音響出力部232、振動モータ233などが含まれてもよい。
ディスプレイ部231は、ユーザ端末機200で処理される情報を出力する。ディスプレイ部231を介して、ユーザは、ショッピングサービス提供装置100が提供する画面を見ることができる。
なお、ディスプレイ部231とタッチパッドとがレイヤ構造をなしてタッチスクリーンとして構成される場合、ディスプレイ部231は、出力装置以外に、入力装置としても使用される。ディスプレイ部231は、液晶ディスプレイ、薄膜トランジスタ液晶ディスプレイ、有機発光ダイオード、フレキシブルディスプレイ、三次元ディスプレイ(3D display)、電気泳動ディスプレイのうち少なくとも一つを含んでもよい。そして、ユーザ端末機200の具現形態により、ユーザ端末機200は、ディスプレイ部231を2個以上含んでもよい。そのとき、2個以上のディスプレイ部231は、ヒンジ(hinge)を利用して、対向するようにも配置される。
音響出力部232は、通信部220から受信されたり、メモリ270に保存されたりするオーディオデータを出力する。また、音響出力部232は、ユーザ端末機200で遂行される機能(例えば、ショッピングアプリケーションの実行時に出力される背景音、ショッピングアプリケーションで動作を遂行するたびに生じる効果音)に係わる音響信号を出力する。かような音響出力部232には、スピーカ、ブザーなどが含まれてもよい。
振動モータ233は、振動信号を出力することができる。例えば、振動モータ233は、オーディオデータまたはイメージデータ(例えば、ゲームアプリケーションで動作を遂行するたびに生じる効果音、ゲームアプリケーションで動作を遂行した結果、変更されるイメージ)の出力に対応する振動信号を出力することができる。また、振動モータ233は、タッチスクリーンにタッチが入力される場合、振動信号を出力することもできる。
制御部240は、一般的に、ユーザ端末機200の全般的な動作を制御する。例えば、制御部240は、メモリ270に保存されたプログラムを実行することにより、センシング部210、通信部220、出力部230、ユーザ入力部250、A/V入力部260、メモリ270などを全般的に制御することができる。
ユーザ入力部250は、ユーザが、ユーザ端末機200を制御するためのデータを入力する手段を意味する。例えば、ユーザ入力部250には、キーパッド、ドームスイッチ、タッチパッド(接触式静電容量方式、圧力式抵抗膜方式、赤外線感知方式、表面超音波伝導方式、積分式張力測定方式、ピエゾ効果方式など)、ジョグホイール、ジョグスイッチなどがあるが、それらに限定されるものではない。
A/V入力部260は、オーディオ信号またはビデオ信号入力のためのものであり、それには、カメラ261やマイクロフォン262などが含まれてもよい。カメラ261は、画像通話モードまたは撮影モードで、イメージセンサを介して、静止映像または動画などの画像フレームを得ることができる。イメージセンサを介してキャプチャされたイメージは、制御部240、または別途のイメージ処理部(図示せず)を介しても処理される。
カメラ261で処理された画像フレームは、メモリ270に保存されたり、通信部220を介して外部に伝送されたりする。カメラ261は、端末機の構成様態により、2個以上が具備されてもよい。
マイクロフォン262は、外部の音響信号を入力され、電気的な音声データに処理する。例えば、マイクロフォン262は、外部デバイスまたは話者から、音響信号を受信することができる。マイクロフォン262は、外部の音響信号を入力される過程で生じるノイズを除去するための多様なノイズ除去アルゴリズムを利用することができる。
メモリ270は、制御部240の処理及び制御のためのプログラムを保存することもでき、入出力されるデータ(例えば、複数のメニュー、複数のメニューそれぞれに対応する複数の第1階層サブメニュー、複数の第1階層サブメニューそれぞれに対応する複数の第2階層サブメニューなど)を保存することもできる。
メモリ270は、ショッピングアプリケーションに係わるメタデータをあらかじめ保存することができる。また、メモリ270は、獲得したユーザ入力の長さ及び類型についての情報を保存することができる。メモリ270は、ユーザ端末機200の状態情報を保存することもできる。
メモリ270は、フラッシュメモリタイプ、ハードディスクタイプ、マルチメディアカードマイクロタイプ、カードタイプのメモリ(例えば、SDメモリまたはXDメモリなど)、RAM、SRAM、ROM、EEPROM、PROM、磁気メモリ、磁気ディスク、光ディスクのうち少なくとも1つのタイプの記録媒体を含んでもよい。また、ユーザ端末機200は、インターネット上においてメモリ270の保存機能を遂行するウェブストレージまたはクラウドサーバを運用することもできる。
メモリ270に保存されたプログラムは、その機能によって、複数個のモジュールに分類することができるが、例えば、UI(user interface)モジュール271、タッチスクリーンモジュール272、お知らせモジュール273などに分類される。
UIモジュール271は、ゲームアプリケーション別に、ユーザ端末機200と連動される特化されたUI、GUI(graphic user interface)などを提供することができる。タッチスクリーンモジュール272は、ユーザのタッチスクリーン上のタッチジェスチャを感知し、タッチジェスチャに係わる情報を制御部240に伝達することができる。本発明の一実施形態によるタッチスクリーンモジュール272は、タッチコードを認識して分析することができる。タッチスクリーンモジュール272は、コントローラを含む別途のハードウェアでも構成される。
該タッチスクリーンのタッチまたは近接タッチを感知するために、該タッチスクリーンの内部または近傍に多様なセンサが具備される。タッチスクリーンのタッチを感知するためのセンサの一例として、触覚センサがある。該触覚センサは、人が感じるほど、またはそれ以上に特定物体の接触を感知するセンサをいう。該触覚センサは、接触面の粗度、接触物体の硬度、接触地点の温度などの多様な情報を感知することができる。また、タッチスクリーンのタッチを感知するためのセンサの一例として、近接センサがある。該近接センサは、所定検出面に接近する物体、あるいは近傍に存在する物体の有無を電子系の力、または赤外線を利用して、機械的接触なしに検出するセンサをいう。近接センサの例としては、透過型光電センサ、直接反射型光電センサ、ミラー反射型光電センサ、高周波発振型近接センサ、静電容量型近接センサ、磁気型近接センサ、赤外線近接センサなどがある。ユーザのタッチジェスチャには、タップ、タッチ&ホールド、ダブルタップ、ドラッグ、パンニング、フリック、ドラッグアンドドロップ、スワイプなどがある。
お知らせモジュール273は、ユーザ端末機200のイベント発生を知らせるための信号を発することができる。お知らせモジュール273は、ディスプレイ部231を介して、ビデオ信号形態でお知らせ信号を出力することもでき、音響出力部232を介して、オーディオ信号形態でお知らせ信号を出力することもでき、振動モータ233を介して、振動信号形態でお知らせ信号を出力することもできる。
図9は、バイナリの構造を説明するための図面であり、(a)は、バイナリを併合する前の第1バイナリの構造を示す図面であり、(b)は、第1バイナリ及び第2バイナリを併合した最終バイナリの構造を示す図面である。
図9(a)に図示されているように、本発明の実施形態によるアプリケーションのバイナリは、Elfのフォーマットによっても具現される。Elfフォーマットの場合、アプリケーションのバイナリは、Elf header、Program header table、.text、.rodata、.data、Import table、Export table、injected code、section header tableを含んでもよい。
(1)Elf header:オフセット(offset)、フィールド値(field)、サイズ(size)の3種領域に区分される。
(2)Program header table:実行可能または共有可能な目的ファイル(オブジェクトファイル(object file))のプログラムヘッダをいう。
(3).text:プログラムのテキストまたは実行可能な命令語を含む領域をいう。
(4)。rodata:プロセスのイメージにおいて、書き込み不可能なセグメントに典型的に使用される読み取り専用データを含む領域をいう。
(5).data:プログラムメモリ領域に提供される初期化されたデータを含む領域をいう。
(6)section header table:バイナリのセクション集合をリストとして含む領域をいう。
Import table:バイナリが使用している外部関数の位置及び名称を保存している領域をいう。
Export table:バイナリで使用することができるライブラリ関数の位置及び名称を保存している領域をいう。
図10は、バイナリのコード領域と、アドレステーブルとの連結関係を示す図面である。
本発明の実施形態によるバイナリ併合装置は、併合されたバイナリの正常な動作のために、併合されたバイナリと対応するアドレステーブル902に交替していて、さらに原バイナリのアドレステーブル901に復元させる過程を遂行することができる。このとき、アドレステーブル902は、ライブラリに定義された領域のアドレス値を介して、関数の定義を呼び出すことができる。
前述の本発明による実施形態は、コンピュータ上で多様な構成要素を介して実行されるコンピュータプログラムの形態に具現され、かようなコンピュータプログラムは、コンピュータで読み取り可能な媒体にも記録される。このとき、該媒体は、ハードディスク、フロッピィーディスク及び磁気テープのような磁気媒体;CD−ROM(compact disc read only memory)及びDVD(digital versatile disc)のような光記録媒体;フロプティカルディスク(floptical disk)のような磁気・光媒体(magneto-optical medium);及びROM(read-only memory)、RAM(random access memory)、フラッシュメモリのような、プログラム命令語を保存して実行するように特別に構成されたハードウェア装置を含んでもよい。さらに、該媒体は、ネットワーク上で伝送可能な形態に具現される無形の媒体を含んでもよく、例えば、ソフトウェア形態またはアプリケーション形態に具現され、ネットワークを介して、伝送及び流通が可能な形態の媒体でもある。
なお、前記コンピュータプログラムは、本発明のために特別に設計されて構成されたものでもあり、コンピュータソフトウェア分野の当業者に公知されて使用可能なものでもある。該コンピュータプログラムの例としては、コンパイラによって作われるような機械語コードだけではなく、インタープリタなどを使用して、コンピュータによって実行される高級言語コードも含まれる。
本発明で説明する特定実行は、一実施形態であり、いかなる方法によっても、本発明の範囲を限定するものではない。明細書の簡潔さのために、従来の電子的な構成、制御システム、ソフトウェア、前記システムの他の機能的な側面の記載は省略される。また、図面に図示された構成要素間の線の連結または連結部材は、機能的な連結、及び/または物理的または回路的な連結を例示的に示したものであり、実際の装置では、代替体可能であったり追加されたりする多様な機能的な連結、物理的な連結または回路連結としても示される。また、「必須な」、「重要に」のような具体的な言及がなければ、本発明の適用のために、必ずしも必要な構成要素ではないこともある。
本発明の明細書(特に、特許請求の範囲)において、「前記」の用語、及びそれと類似した指示用語の使用は、単数及び複数のいずれにも該当する。また、本発明において、範囲を記載した場合、前記範囲に属する個別的な値を適用した発明を含み(それに反する記載がなければ)、発明の詳細な説明において、前記範囲を構成する各個別的な値を記載した通りである。最後に、本発明による方法を構成する段階について、明白に順序を記載したり、それに反したりする記載がなければ、前記段階は、適切な順序で行われる。必ずしも前記段階の記載順序によって、本発明が限定されるものではない。本発明において、全ての例または例示的な用語(例えば、など)の使用は、単に本発明について詳細に説明するためのものであり、特許請求の範囲によって限定されるものではない以上、前述の例または例示的な用語によって、本発明の範囲が限定されるものではない。また、当業者は、多様な修正、組み合わせ及び変更が付加された特許請求の範囲またはその均等物の範疇内で、設計条件及びファクタによっても構成されるということが分かるであろう。

Claims (13)

  1. 第1バイナリを保存するメモリと制御部とを含むバイナリ併合装置が、バイナリを併合する方法において、
    前記制御部が、前記第1バイナリに注入する第2バイナリを生成する工程と、
    前記制御部が、第1プログラミングインターフェースを参照するアプリケーションの第1バイナリを難読化させる工程と、
    前記制御部が、前記第1バイナリに係わる第1プログラミングインターフェースを生成する工程と、
    前記制御部が、前記第2バイナリに係わる第2プログラミングインターフェースを生成する工程と、
    前記制御部が、前記第1プログラミングインターフェース及び前記第2プログラミングインターフェースを比較し、参照される関数が一であるか否かということを判断する工程と、
    前記判断の結果、第2プログラミングインターフェース及び第1プログラミングインターフェースが一ではない場合、前記制御部が、前記第1プログラミングインターフェースと対応する第1アドレステーブルを、前記第2プログラミングインターフェースと対応する第2アドレステーブルに交替する工程と、
    前記制御部が、前記第1バイナリ及び前記第2バイナリを併合した最終バイナリを生成し、前記最終バイナリのエントリポイントが第2バイナリになるように設定する工程と、を含むバイナリ併合方法。
  2. 前記第1バイナリまたは前記第2バイナリは、モバイル環境で実行されるバイナリであることを特徴とする請求項1に記載のバイナリ併合方法。
  3. 前記第2バイナリは、
    前記第1バイナリを復号する関数を含むソースファイルから生成したバイナリであることを特徴とする請求項1に記載のバイナリ併合方法。
  4. 前記第2バイナリは、
    アセンブリ語で具現されたバイナリであることを特徴とする請求項1に記載のバイナリ併合方法。
  5. 前記第2バイナリは、
    前記第1バイナリのうち実行バイナリファイルに含まれるように生成されたバイナリであることを特徴とする請求項1に記載のバイナリ併合方法。
  6. 前記第1アドレステーブルは、
    前記第1プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含み、
    前記第2アドレステーブルは、
    前記第2プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含むことを特徴とする請求項1に記載のバイナリ併合方法。
  7. 第1プログラミングインターフェースを参照するアプリケーションの第1バイナリを難読化させる難読化手段と、
    前記第1バイナリに注入する第2バイナリを生成するコード生成手段と、
    前記第1バイナリに係わる第1プログラミングインターフェースを生成する第1参照分析手段と、
    前記第2バイナリに係わる第2プログラミングインターフェースを生成する第2参照分析手段と、
    前記第1プログラミングインターフェース及び前記第2プログラミングインターフェースを比較し、参照される関数が一であるか否かということを判断する判断手段と、
    前記判断の結果、第2プログラミングインターフェース及び第1プログラミングインターフェースが一ではない場合、前記第1プログラミングインターフェースと対応する第1アドレステーブルを、前記第2プログラミングインターフェースと対応する第2アドレステーブルに交替するテーブル処理手段と、
    前記アプリケーションのエントリポイントが第2バイナリになるように設定する処理手段と、を含むバイナリ併合装置。
  8. 前記第1バイナリまたは前記第2バイナリは、モバイル環境で実行されるバイナリであることを特徴とする請求項7に記載のバイナリ併合装置。
  9. 前記第2バイナリは、
    前記第1バイナリを復号する関数を含むソースファイルから生成したバイナリであることを特徴とする請求項7に記載のバイナリ併合装置。
  10. 前記第2バイナリは、
    アセンブリ語で具現されたバイナリであることを特徴とする請求項7に記載のバイナリ併合装置。
  11. 前記第2バイナリは、
    前記第1バイナリのうち実行バイナリファイルに含まれるように生成されたバイナリであることを特徴とする請求項7に記載のバイナリ併合装置。
  12. 前記第1アドレステーブルは、
    前記第1プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含み、
    前記第2アドレステーブルは、
    前記第2プログラミングインターフェースに含まれた関数が定義された領域のアドレス値を含むことを特徴とする請求項7に記載のバイナリ併合装置。
  13. コンピュータに、請求項1ないし6のうちいずれか1項に記載の方法を実行させる、コンピュータプログラム。
JP2017563554A 2015-06-11 2016-05-04 バイナリ併合装置、その方法及び該コンピュータプログラム Active JP6698707B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR10-2015-0082727 2015-06-11
KR1020150082727A KR101757407B1 (ko) 2015-06-11 2015-06-11 바이너리 병합 장치, 방법 및 컴퓨터 프로그램
PCT/KR2016/004716 WO2016200058A1 (ko) 2015-06-11 2016-05-04 바이너리 병합 장치, 방법 및 컴퓨터 프로그램

Publications (3)

Publication Number Publication Date
JP2018521403A JP2018521403A (ja) 2018-08-02
JP2018521403A5 JP2018521403A5 (ja) 2019-06-06
JP6698707B2 true JP6698707B2 (ja) 2020-05-27

Family

ID=57503537

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017563554A Active JP6698707B2 (ja) 2015-06-11 2016-05-04 バイナリ併合装置、その方法及び該コンピュータプログラム

Country Status (4)

Country Link
US (1) US10552132B2 (ja)
JP (1) JP6698707B2 (ja)
KR (1) KR101757407B1 (ja)
WO (1) WO2016200058A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452802B2 (en) * 2016-07-08 2019-10-22 efabless corporation Methods for engineering integrated circuit design and development
CN107239315B (zh) * 2017-04-11 2019-11-15 赛灵思公司 面向神经网络异构计算平台的编程模型
US11243748B2 (en) * 2018-11-08 2022-02-08 Appdome Ltd. Artificial intelligence mobile integration
US11831631B2 (en) 2018-11-08 2023-11-28 Appdome Ltd. Single sign-on for mobile applications using direct brokering for identity authentication
CN110032394B (zh) * 2019-04-12 2022-05-31 深圳市腾讯信息技术有限公司 一种无源码文件的分析方法、装置和存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226691B1 (en) * 1995-10-02 2001-05-01 International Business Machines Corporation System, method, and article of manufacture for adding object services to a binary class in an object oriented server
US6988271B2 (en) * 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US7039919B1 (en) * 1998-10-02 2006-05-02 Microsoft Corporation Tools and techniques for instrumenting interfaces of units of a software program
US8418122B2 (en) * 2006-10-13 2013-04-09 Oracle America, Inc. Incorporating functionality from an object file into an existing binary file
US20100088689A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Branding binary modules using resource patching
US20100088690A1 (en) * 2008-10-03 2010-04-08 Microsoft Corporation Replacing the identity of an activex control
KR101242479B1 (ko) 2011-07-01 2013-03-18 한국과학기술연구원 어플리케이션 배포 시스템 및 방법
US8959365B2 (en) * 2012-07-01 2015-02-17 Speedtrack, Inc. Methods of providing fast search, analysis, and data retrieval of encrypted data without decryption
US9087191B2 (en) * 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
US9116712B2 (en) 2013-02-28 2015-08-25 Microsoft Technology Licensing, Llc Compile based obfuscation
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
EP2869145B1 (de) * 2013-10-29 2016-04-27 dSPACE digital signal processing and control engineering GmbH Verfahren zur Beeinflussung eines Steuerprogramms eines Steuergerätes
US9213531B2 (en) * 2014-05-01 2015-12-15 Google Inc. Methods to eliminate extra memory loads while accessing global variables in position independent code
DK3202553T3 (da) 2016-02-02 2020-01-27 P K Jeppesen & Soen As Apparat til stripning af en ydre polymerbeklædning

Also Published As

Publication number Publication date
JP2018521403A (ja) 2018-08-02
KR20160146093A (ko) 2016-12-21
WO2016200058A1 (ko) 2016-12-15
US10552132B2 (en) 2020-02-04
KR101757407B1 (ko) 2017-07-12
US20180121181A1 (en) 2018-05-03

Similar Documents

Publication Publication Date Title
US11328079B2 (en) System and method of encrypting folder in device
JP6698707B2 (ja) バイナリ併合装置、その方法及び該コンピュータプログラム
CN108595970B (zh) 处理组件的配置方法、装置、终端及存储介质
US10255453B2 (en) Controlling privacy in a face recognition application
EP2937802B1 (en) Mobile device and method of sharing content
US9652610B1 (en) Hierarchical data security measures for a mobile device
JP6640869B2 (ja) スマートイメージを使用したフィッシング対策のための方法およびシステム
US9911009B2 (en) Device and method for providing safety of data by using multiple modes in device
US11120160B2 (en) Distributed personal data storage and encrypted personal data service based on secure computation
CN112287376B (zh) 一种隐私数据的处理方法及装置
WO2014073214A1 (ja) パーソナル情報を分析する情報処理システム及びパーソナル情報分析方法
EP3284001B1 (en) Device and method of requesting external device to execute task
KR20140105681A (ko) 보안 모드에서 데이터 암호화 장치 및 방법
KR102368208B1 (ko) 보안 기능을 지원하는 파일 시스템 및 공통적 파일 액세스 인터페이스에 기초한 파일 유출 방지
JP7398600B2 (ja) インターネット上の分散型デジタルシネマパッケージ(dcp)
US10027661B2 (en) Biometric virtual machine image administration
KR101825487B1 (ko) Drm 서비스를 제공하는 전자액자 서비스 시스템
KR101511451B1 (ko) 키보드 입력 정보 암호화 방법
CN111382131B (zh) 数据处理方法、装置及存储介质
KR102072668B1 (ko) 클라이언트-서버 환경을 이용한 호출 서비스 방법 및 그 시스템
KR20200058147A (ko) 전자 장치 및 그의 제어 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190423

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190423

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200312

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

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

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

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

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