JP2013045277A - Program obfuscation method and remote debug system - Google Patents
Program obfuscation method and remote debug system Download PDFInfo
- Publication number
- JP2013045277A JP2013045277A JP2011182504A JP2011182504A JP2013045277A JP 2013045277 A JP2013045277 A JP 2013045277A JP 2011182504 A JP2011182504 A JP 2011182504A JP 2011182504 A JP2011182504 A JP 2011182504A JP 2013045277 A JP2013045277 A JP 2013045277A
- Authority
- JP
- Japan
- Prior art keywords
- debug
- program
- information
- encrypted
- obfuscation
- 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.)
- Withdrawn
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Description
本発明は、プログラム難読化方法およびリモートデバッグシステムに係り、特に、デバッグ対象のソフトウェアプログラム(以下、デバッグ対象プログラム)をリバースエンジニアリングから保護するための技術、およびデバッグ対象プログラムを遠隔からデバッグするための技術に関する。 The present invention relates to a program obfuscation method and a remote debugging system, and in particular, a technique for protecting a software program to be debugged (hereinafter referred to as a debugging target program) from reverse engineering, and a debugging target program remotely. Regarding technology.
近年、仮想マシン(Virtual Machine)を搭載した機器の普及が進んでいる。仮想マシンでは、Pentium(登録商標)、PowerPC等のCPUがプログラムを直接実行するのでなく、仮想的な計算機をソフトウェア的に用意し、プログラムがそれによって実行されるようにする。 In recent years, devices equipped with virtual machines have been widely used. In the virtual machine, a CPU such as Pentium (registered trademark) or PowerPC does not directly execute the program, but a virtual computer is prepared in software so that the program is executed by the software.
例えば、Java仮想マシン(JavaはJavaTMの略称であり、Oracle Corporation及びその子会社、関連会社の米国及びその他の国における登録商標である)を搭載した機器の普及が進んでいる。Java仮想マシンはCPUやOSの違いを吸収し、中間コードで構成されるJavaプログラムを様々な機器で実行可能にする。多様な機器が存在する携帯電話の多くはJava仮想マシンを搭載し、近年登場したAndroid(AndroidはAndroidTMの略称であり、米国Google社の商標または登録商標である)もJavaの技術を採用している。また、Javaプログラムを機器に配信し、実行開始や実行停止といったプログラムのライフサイクルを管理するための基盤としてOSGi(OSGiはOSGiTMの略称であり、また、米国OSGi Allianceの登録商標である)と呼ばれる技術が注目されている。こうしたAndroidやOSGiといった実行基盤を利用し、様々な機器で動作するプログラムの配信・販売を複数のソフトウェアベンダが開始しつつある。 For example, a device equipped with a Java virtual machine (Java is an abbreviation for Java ™ and is a registered trademark of Oracle Corporation and its subsidiaries and affiliates in the United States and other countries) is becoming popular. The Java virtual machine absorbs differences between CPUs and OSs and enables Java programs composed of intermediate code to be executed on various devices. Many mobile phones with a variety of devices are equipped with Java virtual machines, and Android (Android is an abbreviation for Android TM , which is a trademark or registered trademark of Google Inc. in the United States) has recently adopted Java technology. ing. In addition, OSGi (OSGi is an abbreviation for OSGi TM and is a registered trademark of the US OSGi Alliance) is a platform for distributing Java programs to devices and managing the life cycle of programs such as starting and stopping execution. The so-called technology is drawing attention. Several software vendors are starting to distribute and sell programs that run on various devices using execution platforms such as Android and OSGi.
一方、様々なベンダが開発した様々なJavaプログラムをAndroidやOSGi搭載機器にインストールし、同時実行させることにより、プログラムの障害発生要因が複雑化している。CPUリソース、メモリリソースの競合、ストレージ容量、画面表示領域の競合など、その要因は多岐に渡る。プログラム開発者は他にどのようなプログラムが同時実行されるかを事前に予測することができないため、リソース競合に起因するプログラムの誤動作を事前テストによって検査することは困難である。また、プログラムの配布後に誤動作を検出した際も、誤動作発生環境を再現するには他ベンダの開発したプログラムを全て入手しなければならないため、再現環境における事後テストも困難な状況にある。そこで、誤動作が発生した実機環境を用いた遠隔からのプログラムデバッグ(以下、リモートデバッグ)を可能にする技術が求められる。Oracle社が提供するJava標準のデバッガであるJDBは、そのためのリモートデバッグ機能を備えている。 On the other hand, various Java programs developed by various vendors are installed on Android and OSGi-equipped devices and run simultaneously, complicating the causes of program failures. There are various factors such as contention for CPU resources, memory resources, storage capacity, and screen display area. Since the program developer cannot predict in advance what other programs will be executed at the same time, it is difficult to inspect the malfunction of the program due to resource contention by the preliminary test. Even when a malfunction is detected after the program is distributed, all the programs developed by other vendors must be obtained in order to reproduce the malfunction occurrence environment. Therefore, there is a need for a technique that enables remote program debugging (hereinafter referred to as remote debugging) using an actual machine environment in which a malfunction has occurred. JDB, a Java standard debugger provided by Oracle, has a remote debugging function.
しかし、JDB等のデバッガを用いたリモートデバッグを可能にするためには、デバッグに利用される情報(以下、デバッグ情報)をJavaプログラムファイル(以下、クラスファイル)内に含めなければならない。このデバッグ情報の中にはソースコードの行番号やローカル変数名などが格納されるため、悪意のあるユーザがプログラムを解析し、セキュリティ機能を解除するといった、いわゆる「リバースエンジニアリング」が容易になるという課題がある。元々、Javaプログラムはバイトコードと呼ばれる中間コードで構成されており、また、シンボル参照解決による動的リンクを前提としているため、リバースエンジニアリングに弱いという特徴を持つ。これに加え、Javaプログラムにデバッグ情報を含めることにより、悪意のあるユーザはほぼ完全なソースコードを再構築(デコンパイル)できてしまう。代表的なデコンパイルツールとして、JADやJODE、SourceAgainなどが知られている。 However, in order to enable remote debugging using a debugger such as JDB, information used for debugging (hereinafter referred to as debug information) must be included in a Java program file (hereinafter referred to as class file). This debug information stores source code line numbers, local variable names, etc., so that it is easy to perform so-called "reverse engineering" in which a malicious user analyzes a program and releases a security function. There are challenges. Originally, Java programs are composed of intermediate codes called bytecodes, and are premised on dynamic linking by means of symbol reference resolution, so they are vulnerable to reverse engineering. In addition, by including debug information in a Java program, a malicious user can reconstruct (decompile) almost complete source code. As representative decompile tools, JAD, JODE, SourceAgain, etc. are known.
こうしたリバースエンジニアリングを防ぐ技術として、プログラムの難読化技術がある。例えば特許文献1には、難読化前と同じ演算結果が得られるようなダミーコードを生成し、プログラムを難読化する方法が記載されている。また、特許文献2には、プログラムに暗号化を施し、プログラムの実行前に復号化する方法が記載されている。また、特許文献3には、ソースコードに含まれる連続した命令をブロック単位に切り出し、切り出したブロックの実行順序を制御するための制御変数を設定する難読化方法が記載されている。代表的なプログラム難読化ツールとして、DashOやProGuard、ZelixKlassMasterなどが知られている。Android向けの開発環境には、ProGuardが標準で組み込まれている。
As a technique for preventing such reverse engineering, there is a program obfuscation technique. For example,
仮想マシンを搭載した機器のリバースエンジニアリングからデバッグ対象プログラムを保護するために、特許文献1および特許文献3記載のように、プログラム全体を難読化する方法では、デバッグ対象プログラムからデバッグ情報が削除されるか、またはデバッグ情報が無意味な情報となるため、リモートデバッグが不可能になるという課題がある。
In order to protect the debug target program from reverse engineering of a device equipped with a virtual machine, as described in
また、リバースエンジニアリングからデバッグ対象プログラムを保護するために、特許文献2記載のようにプログラム全体を暗号化した場合、暗号化に利用した秘密鍵の管理や、復号処理コード自体の保護が必要になるという課題がある。さらに、暗号化されたプログラムを復号化しながら実行する場合は、パフォーマンスが劣化するという課題がある。 Further, in order to protect the debug target program from reverse engineering, when the entire program is encrypted as described in Patent Document 2, it is necessary to manage the secret key used for encryption and protect the decryption processing code itself. There is a problem. Furthermore, when the encrypted program is executed while being decrypted, there is a problem that the performance deteriorates.
このような従来技術の課題を解決し、リバースエンジニアリングからデバッグ対象プログラムを保護すると同時に、パフォーマンスを劣化させることなくリモートデバッグを可能にすることが本発明の目的である。 It is an object of the present invention to solve such problems of the prior art, protect a program to be debugged from reverse engineering, and at the same time enable remote debugging without degrading performance.
本発明の代表的なものの一例を示すと、次のとおりである。本発明のプログラム難読化方法は、デバッグ対象装置で実行するためのデバッグ対象プログラムを、プログラム難読化処理手段を備えた難読化装置において難読化する方法であって、前記デバッグ対象プログラムは、プログラムロジックを表すコード情報と、デバッグに必要な情報を表すデバッグ情報とを含んで構成され、前記プログラム難読化処理手段により、前記デバッグ対象プログラムの前記プログラムロジックを変更することなく、前記コード情報を、リバースエンジニアリングが困難な情報へと難読化し、前記デバッグ情報を、リバースエンジニアリングが不可能な情報へと暗号化することにより、前記デバッグ対象プログラムを難読化することを特徴とする。 An example of a representative one of the present invention is as follows. The program obfuscation method of the present invention is a method of obfuscating a debug target program to be executed on a debug target device in an obfuscation apparatus having program obfuscation processing means, wherein the debug target program includes program logic. And code information representing the information necessary for debugging. The program obfuscation processing means reverses the code information without changing the program logic of the program to be debugged. The debugging target program is obfuscated by obfuscating information that is difficult to engineer and encrypting the debug information into information that cannot be reverse engineered.
本発明によれば、デバッグ対象プログラムをリバースエンジニアリングから保護すると同時に、デバッグ対象プログラムのリモートデバッグを可能にする。 According to the present invention, the debug target program is protected from reverse engineering, and at the same time, the debug target program can be remotely debugged.
本発明の代表的な実施形態によれば、難読化装置において、仮想マシンを実行するデバッグ対象プログラムを難読化する。この難読化において、プログラムロジックを構成するJavaバイトコード等の情報(以下、コード情報)とデバッグ情報をそれぞれ別方式で変換する。コード情報は既存の難読化方式を用いて難読化し、デバッグ情報は既存の暗号化方式を用いて暗号化する。変換したコード情報およびデバッグ情報は従来のクラスファイルフォーマットと同一のフォーマットで、プログラムを実行する実機上のクラスファイル内に格納する。実機は、通常時は難読化されたコード情報を用いてプログラムロジックを実行し、誤動作発生時は、実機とは異なるデバッグ処理装置(保守センタ)が、暗号化されたデバッグ情報を用いてリモートデバッグを行う。暗号化されたデバッグ情報は実機上では復号化せず、デバッグを行うデバッグ処理装置側で復号化する。 According to the representative embodiment of the present invention, the obfuscation apparatus obfuscates the program to be debugged that executes the virtual machine. In this obfuscation, information such as Java bytecode (hereinafter referred to as code information) constituting the program logic and debug information are converted by different methods. Code information is obfuscated using an existing obfuscation method, and debug information is encrypted using an existing encryption method. The converted code information and debug information are stored in a class file on the actual machine that executes the program in the same format as the conventional class file format. The actual machine normally executes the program logic using the obfuscated code information, and when a malfunction occurs, a debug processing device (maintenance center) different from the actual machine performs remote debugging using the encrypted debug information. I do. The encrypted debug information is not decrypted on the actual machine, but is decrypted on the debug processing device side that performs debugging.
本実施形態を用いることにより、デバッグ対象装置のプログラムをリバースエンジニアリングから保護すると同時に、該プログラムのリモートデバッグを可能にする。プログラムのコード情報は暗号化しないため、デバッグ処理装置におけるプログラム実行時の復号処理によるパフォーマンスの劣化は起こらない。また、暗号化したデバッグ情報は実機上では復号化しないことから、実機における秘密鍵の管理は不要であり、かつ復号処理コードの保護も不要である。また、実機上ではコード情報の難読化、デバッグ情報の暗号化および復号化のいずれの処理も発生しないことから、プログラム実行環境のロジック改変は不要である。
さらに、本発明の他の実施形態によれば、デバッグ処理装置(保守センタ)側に復号処理を行う専用のプロキシサーバを用いることで、既存のデバッガをそのまま利用できる。
By using this embodiment, the program of the device to be debugged is protected from reverse engineering, and at the same time, the program can be remotely debugged. Since the code information of the program is not encrypted, performance degradation due to decryption processing during program execution in the debug processing device does not occur. In addition, since the encrypted debug information is not decrypted on the real machine, management of the secret key in the real machine is unnecessary, and protection of the decryption code is not necessary. In addition, since neither code information obfuscation nor debug information encryption or decryption processing occurs on the actual machine, logic modification of the program execution environment is unnecessary.
Furthermore, according to another embodiment of the present invention, an existing debugger can be used as it is by using a dedicated proxy server that performs decryption processing on the debug processing device (maintenance center) side.
以下、本発明の実施例を、図面を用いて詳細に説明する。 Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
図1は、本発明の実施例1になるリモートデバッグシステムの構成例を表す図である。リモートデバッグシステムは、1つの保守センタ(デバッグ処理装置)100と、ネットワーク106を介してこの保守センタ100に接続され各々デバッグ対象装置を具備する複 数のユーザの端末機器すなわち複数の実機105(105A〜105n)と、ネットワーク106に接続されたプログラム開発者提供の難読化装置107とで構成されている。なお、保守センタ100、各ユーザの端末機器105及びプログラム開発者提供の難読化装置107は、各々、コンピュータと、これらのコンピュータに各種の機能・手段を実現させるプログラムとを保有している。保守センタ100、ユーザの端末機器105、及び、難読化装置107は、記憶部にアプリケーションプログラム及びこのアプリケーションプログラムを実行可能なように処理する仮想マシンを記憶し、処理部が前記仮想マシンを実行するプログラム実行装置である。例えば、このリモートデバッグシステムを構成する各機器には、予め、専用のJava仮想マシン(JavaVM)がインストールされており、Javaプログラムの実行時にはJavaVMが起動され、同じJavaプログラムを共通に開発し、実行可能な環境にある。
FIG. 1 is a diagram illustrating a configuration example of a remote debug system according to the first embodiment of the present invention. The remote debugging system is connected to a maintenance center (debug processing device) 100 and a
コンピュータは、例えば、演算装置101、記憶部(主記憶装置102、外部記憶装置104)、及び、通信装置103を備えている。演算装置101は、主記憶装置102にロードされた命令を処理する中央演算装置である。主記憶装置102は、外部記憶装置104からロードされたプログラムデータを記憶する揮発メモリまたは不揮発メモリである。通信装置103は、外部のネットワーク106と接続し、ハードウェア上で動作するプログラムが必要とするデータを送受信するための装置である。外部記憶装置104は、プログラムデータを記憶する不揮発メモリである。ここで、外部記憶装置104は、ネットワークを経由した別のマシン上に存在する構成であってもよい。
The computer includes, for example, an
保守センタ100は、コンピュータ上で主記憶装置102に保持されたアプリケーションプログラムを実行することにより実現される機能・手段として、各実機のデバッグ情報の取得手段、及び、デバッグ情報の復号・処理手段を有している。さらに、この保守センタ100に接続された各端末機器のデバッグ対象のプログラムとそのプログラムを特定するID及びデバッグに関する情報を記録したユーザリスト(デバッグ対象プログラムテーブル)とを保持している。各端末機器105は、デバッグ対象プログラムを保持すると共に、コンピュータ上でアプリケーションプログラムを実行することにより実現される機能として、デバッグ対象プログラムの実行手段及び暗号化デバッグ情報の応答処理手段を保持している。プログラム開発者提供の難読化装置107は、デバッグ対象プログラムに対して難読化・暗号化の処理を行う、プログラム難読化処理手段を保有している。
The
Java言語のソースファイルがJava言語用のコンパイラで変換されて、実行用のクラスファイルに変換される。ソースファイルのソースコードは、クラスファイルのバイトコードに変換される。各端末機器105でクラスファイルが実行されるときは、JavaVMが起動され、JavaVMがクラスファイルのバイトコードを読み取って、機械語に翻訳を行いながら、処理を実行する。保守センタ装置201及びデバッグ対象装置202は、デバッグに利用されるソースコードの行番号やローカル変数名などのデバッグ情報をクラスファイル内に保持している。
A Java language source file is converted by a Java language compiler and converted into a class file for execution. The source code of the source file is converted into the byte code of the class file. When the class file is executed in each
本発明において述べる機器は、一般的に、図1に記載のハードウェア構成をとるが、この構成に限定するものではない。 The apparatus described in the present invention generally has the hardware configuration shown in FIG. 1, but is not limited to this configuration.
図2は、実施例1のリモートデバッグシステムにおける、保守センタ装置201とデバッグ対象装置202におけるソフトウェア構成例を表すものである。図2において、保守センタ装置201は、ユーザのデバッグ対象装置202に対して、実際にリモートデバッグ処理を行う個人または集団(以下、仮にサービス管理者と呼ぶ)が利用する装置である。サービス管理者はリモートデバッガ204を用いてデバッグ対象装置202のプログラムのデバッグ処理を行う。リモートデバッガ204は、サービス管理者にデバッグ処理のためのユーザインタフェースを提供するデバッグ要求処理部205と、暗号化されたデバッグ情報を復号化するデバッグ情報復号処理部206、及びユーザリスト(図示略)により構成される。
FIG. 2 illustrates a software configuration example in the
デバッグ対象装置202は、リモートデバッグの対象となるデバッグ対象プログラム207を実行する装置である。デバッグ対象装置202では、デバッグ対象プログラム207の実行環境であるプログラム実行環境208が動作する。プログラム実行環境208のデバッグ応答処理部209は、保守センタ装置201のデバッグ要求処理部205から送信されるデバッグ要求メッセージを受信し、当該メッセージの種類に応じてデバッグ対象プログラム207のデバッグ処理を行い、その結果をデバッグ要求処理部205に返す。
The
ネットワーク203は、保守センタ装置201とデバッグ対象装置202を繋ぐEthernet(登録商標)等の一般的なネットワークである。但し、保守センタ装置201とデバッグ対象装置202は同一のコンピュータシステム上で動作する装置(第1の機器)であっても良く、その場合、ネットワーク203は論理的な通信パイプを表す。あるいはまた、難読化装置と保守センタ装置とが同一のコンピュータシステム上で動作する装置(第2の機器)であっても良い。
The
本発明において述べるリモートデバッグシステムは、一般的に図2記載のソフトウェア構成をとるが、この構成に限定するものではない。 The remote debugging system described in the present invention generally has the software configuration shown in FIG. 2, but is not limited to this configuration.
図3は、本発明におけるプログラム難読化処理のフローチャートである。このプログラム難読化処理300は、ここでは、難読化装置107において、Javaプログラムの開発者が専用ツールを用いて行うことを想定する。各端末機器105に保持されるデバッグ対象プログラムは、予め、このプログラム難読化処理300が施されたプログラムである。
FIG. 3 is a flowchart of the program obfuscation process in the present invention. Here, it is assumed that the
難読化処理300では、まず、ステップ301でデバッグ対象プログラム207として動作させるプログラムデータを読み込む。読み込む手段としては例えば外部記憶装置104から読み込む手段が考えられるが、一般的に考えられる別の手段を用いても良い。例えば通信装置103を用いてネットワーク上に存在するプログラムデータをダウンロードしても良い。プログラムデータの例として、例えばJavaのクラスファイルやアーカイブファイル(JARファイル)などが挙げられる。アーカイブファイルは、変換された複数のJavaバイトコード及びそれが使用する画像などのリソースを、一つに纏め圧縮したファイルである。
In the
ステップ302は、ステップ301で読み込んだプログラムデータのコード情報を取得するステップである。例えばJavaのクラスファイルではCode属性と呼ばれる部分に、プログラミング言語と機械言語の中間の形式で記述された、Java仮想マシンが理解できる、バイトコードが格納される。
Step 302 is a step of acquiring code information of the program data read in
ステップ303は、ステップ302で取得したクラスファイルやアーカイブファイルのコード情報を難読化するステップである。難読化は、逆アセンブルや逆コンパイルされてもそのコードを無意味なものにし、出力されたソースコードの解析を意図的に分かり難くすることである。難読化手段の種類や構成に限定は無く、「オブファスケータ」と呼ばれる一般的な難読化ツールを用いることができる。代表的なオブファスケータとして、DashOやProGuardなどが挙げられるが、これらに限定するものではない。難読化後のコード情報は、難読化前のコード情報と同じロジックを表すが、人間にとっては解析が困難な情報となる。難読化前のプログラムデータと難読化後のプログラムデータに構造上の変更はない。
Step 303 is a step of obfuscating the code information of the class file and archive file acquired in
図4に、プログラムのコード情報の難読化の前(a)、及び、後(b)の例を示す。この例では、難読化前のコード情報の文字列String title=”a”が、難読化後はString abcde = ”a”に変換されている。コード部分は難読化されるものの暗号化はしないので、プログラムデータに構造上の変更はない。 FIG. 4 shows an example before (a) and after (b) obfuscation of the code information of the program. In this example, the character string String title = “a” before obfuscation is converted to String abcde = “a” after obfuscation. The code part is obfuscated but not encrypted, so there is no structural change in the program data.
ステップ304は、プログラムデータにステップ302で取得したコード情報に関連するデバッグ情報が存在するかどうかを判定するステップである。例えば、JavaではLineNumberTable属性と呼ばれる部分にソース行番号の情報が格納され、LocalVariableTable属性と呼ばれる部分にローカル変数名が格納される。ステップ304でデバッグ情報が存在すると判定されるとステップ305に進み、存在しないと判定されるとステップ308に進む。ここで、デバッグ情報が存在しないと判定されたプログラムコードはリモートデバッグの対象にはならないが、デバッグ情報を含むコードと含まないコードが一つのプログラムデータ内に混在する可能性は考えられる。
Step 304 is a step of determining whether or not there is debug information related to the code information acquired in
ステップ305は、ステップ304でデバッグ情報が存在すると判定された場合に遷移するステップであり、プログラムデータからデバッグ情報を取得する処理を行う。デバッグ情報の格納場所は、Javaにおいては前述の通りクラスファイル内のLineNumberTable属性やLocalVariableTable属性などであるが、これに限定するものではない。例えばデバッグ情報を別のファイルに出力するコンパイラなどが考えられるが、デバッグ情報の種類や格納場所については限定しない。
Step 305 is a step in which transition is made when it is determined in
ステップ306は、ステップ305で取得したクラスファイルのデバッグ情報を、ステップ303で難読化したコード情報に対応付ける形式に編集するステップである。例えば、ステップ303で複数の無意味なダミーコードを生成した場合、これらのダミーコード全体に同じソース行番号を対応付けるといった処理が考えられる。この対応付け手段は複数考えられるが、正常なリモートデバッグ処理が可能であればよく、特定の手段に限定するものではない。
Step 306 is a step of editing the debug information of the class file acquired in
ステップ307は、ステップ305で取得し、ステップ306で編集したデバッグ情報を暗号化するステップである。暗号化の手段としては、3DES等を利用した一般的な秘密鍵暗号方式であっても、RSA等を利用した一般的な公開鍵暗号方式であっても、それらを組み合わせた一般的な暗号方式であってもよい。また、元のデバッグ情報のデータ型と同一のデータ型に変換する独自の暗号化方式を利用することも考えられる。例えばソース行番号を表す整数値を、予め決められた数だけビットシフトさせることにより別の整数値に変換するといった手段が考えられる。データ型を変更しないことで、既存のリモートデバッグ向けインタフェースをそのまま利用できるという利点がある。このように暗号化の手段は特に限定しないが、暗号化されたデバッグ情報は元の格納場所に格納される。例えばJavaのLocalVariableTable属性の値を暗号化した場合、暗号化後の値もLocalVariableTable属性に格納される。
Step 307 is a step of encrypting the debug information acquired in
図4に、プログラムのデバッグ情報を記録した圧縮ファイルJAR (JavaARchive)の、暗号化の前(a)、及び、後(b)の例を示す。この例では、デバッグ情報の<Attribute>, line number=17, var name=readable が、<Attribute>, line number=XXXX, var name =XXXXに変換されている。クラスファイルのデバッグ情報は暗号化されるものの、暗号化後もデバッグ情報がバイナリに含まれる。 FIG. 4 shows an example of a compressed file JAR (JavaARchive) in which program debug information is recorded, before encryption (a) and after (b). In this example, <Attribute>, line number = 17, var name = readable in debug information is converted to <Attribute>, line number = XXXX, var name = XXXX. Although the debug information of the class file is encrypted, the debug information is included in the binary even after encryption.
ステップ308は、ステップ302で取得したコード情報と別のコード情報がプログラムに含まれているかどうかを判定するステップである。別のコード情報が存在する場合はステップ302に進み、存在しない場合は処理を終了する。処理を終了する場合、変換元のプログラムがアーカイブファイルであった場合は同様にアーカイブファイルとして出力するのが一般的である。こうして変換したプログラムがデバッグ対象プログラム207として本発明におけるリモートデバッグの対象となる。
Step 308 is a step of determining whether the code information different from the code information acquired in
なお、図3に記載のプログラム難読化処理は、専用ツールを用いてプログラム開発者が行うことを想定しているが、一般的に考えられる手段であれば、難読化方法および難読化のタイミングについては限定しない。例えば、デバッグ対象プログラムのインストール時にプログラム配信システムが自動で難読化する手段も考えられる。 The program obfuscation processing described in FIG. 3 is assumed to be performed by a program developer using a dedicated tool. However, as long as it is generally considered, the obfuscation method and the obfuscation timing will be described. Is not limited. For example, a means that the program distribution system automatically obfuscates when installing the program to be debugged can be considered.
図5は、保守センタ装置201とデバッグ対象装置202における、リモートデバッグ処理のシーケンスの一例を示す図である。
デバッグ開始処理401は、サービス管理者によってリモートデバッガ204が起動され、デバッグ対象プログラム207のデバッグ処理が開始されるシーケンスを表す。例えばEclipseなどの一般的な統合開発環境を起動し、デバッグ対象装置202上で動作するJavaプログラムのリモートデバッグを開始する手順がこれに該当する。
FIG. 5 is a diagram illustrating an example of a remote debugging process sequence in the
The debug start process 401 represents a sequence in which the
デバッグ情報取得要求402は、リモートデバッガ204のデバッグ要求処理部205が、ユーザリストの情報に基づき、ネットワーク203を介し、プログラム実行環境208のデバッグ応答処理部209に対し、デバッグ情報の取得要求メッセージを送信するシーケンスである。これは例えばJava標準デバッガであるJDBがネットワークを介してJava仮想マシンのJVMTI(Java Virtual Machine Tool Interface)と呼ばれるデバッグ向けインタフェースに対してメッセージを送信する処理に該当する。
The debug information acquisition request 402 is sent from the debug
デバッグ情報取得処理403は、デバッグ応答処理部209が受信したメッセージの種類に応じてデバッグ対象プログラム207から暗号化されたデバッグ情報を取得するシーケンスである。例えば一般的なJava仮想マシンでは、リモートからのデバッグ情報取得要求を受信してJVMTIを通じてデバッグ情報を取得する機能が提供されており、本シーケンスはこの処理に該当する。
The debug information acquisition process 403 is a sequence for acquiring encrypted debug information from the
デバッグ情報取得応答404は、デバッグ情報取得要求402に対する応答メッセージを送信するシーケンスである。本シーケンスでは、デバッグ情報取得処理403のシーケンスで取得した暗号化されたデバッグ情報をリモートデバッガ204のデバッグ要求処理部205に返信する。暗号化されたデバッグ情報はここでは復号化せず、そのまま返信する。
The debug information acquisition response 404 is a sequence for transmitting a response message to the debug information acquisition request 402. In this sequence, the encrypted debug information acquired in the sequence of the debug information acquisition process 403 is returned to the debug
デバッグ情報復号化処理405は、デバッグ情報取得応答404で返信された、暗号化されたデバッグ情報を、リモートデバッガ204のデバッグ情報復号処理部206が復号化するシーケンスである。本シーケンスは一般的なJavaデバッガが備える機能にはなく、独自に拡張が必要な部分である。デバッグ情報復号処理部206は、図3のステップ307で暗号化されたデバッグ情報の暗号化方式およびその秘密鍵を知っていることが前提となる。図3の処理を行う難読化手段(難読化ツール)と、デバッグ情報復号処理部206が秘密鍵を共有する手段については特に限定しない。例えば、ユーザにパスワード入力を求めることにより秘密鍵を共有する手段や、外部記憶装置104に格納される秘密鍵データを予め設定ファイル等により共有する手段などが一般的に考えられる。
The debug information decryption processing 405 is a sequence in which the debug information
デバッグ処理要求406は、一般的なデバッグ処理要求をプログラム実行環境208のデバッグ応答処理部209に送信するシーケンスである。これは例えばJava標準デバッガであるJDBを利用し、ブレークポイントを設定するといった一般的なデバッグ要求を表す。デバッグ処理応答407はその応答メッセージである。
The debug process request 406 is a sequence for transmitting a general debug process request to the debug
このようにして、通常時は難読化されたクラスファイルのコード情報を用いて各デバッグ対象装置202でプログラムロジックを実行する。そして、デバッグ対象装置202のプログラムに誤動作が発生した時には、暗号化されたデバッグ情報を用いてそのデバッグ対象装置202のプログラムに対してリモートデバッグを行うことができる。
In this way, the program logic is executed in each
図5では、保守センタ装置201からデバッグ対象装置202へのメッセージのみを記載しているが、非同期でデバッグ対象装置202から保守センタ装置201へメッセージが送信されることも考えられる。例えばJVMTIが発行するBreakpointイベントなどの送信が考えられる。
In FIG. 5, only the message from the
なお、図5は最も単純なシーケンスについて記載したものであり、メッセージの処理順序や回数、送受信の方向について限定するものではない。デバッグ情報復号化処理405を除き、標準のJavaのリモートデバッグシステムに準じた動作を想定したものである。 Note that FIG. 5 describes the simplest sequence, and does not limit the processing order and number of messages and the direction of transmission / reception. Except for the debug information decoding process 405, an operation conforming to a standard Java remote debug system is assumed.
図3に示す難読化方法により難読化されたプログラムを利用し、図5に示すようなシーケンスを繰り返すことにより、本発明が対象とする課題を解決したリモートデバッグシステムを実現できる。すなわち、本実施例によれば、デバッグ対象のプログラムをリバースエンジニアリングから保護すると同時に、プログラムのリモートデバッグを可能にする。デバッグ対象プログラムのコード情報は暗号化しないため、プログラム実行時の復号処理によるパフォーマンスの劣化は起こらない。また、暗号化したデバッグ情報は実機上では復号化しないことから、実機における秘密鍵の管理は不要であり、かつ復号処理コードの保護も不要である。また、実機上ではコード情報の難読化、デバッグ情報の暗号化および復号化のいずれの処理も発生しないことから、プログラム実行環境のロジック改変は不要である。 By using the program obfuscated by the obfuscation method shown in FIG. 3 and repeating the sequence as shown in FIG. 5, a remote debug system that solves the problem targeted by the present invention can be realized. That is, according to the present embodiment, the program to be debugged is protected from reverse engineering, and at the same time, the program can be remotely debugged. Since the code information of the program to be debugged is not encrypted, performance degradation due to decryption processing during program execution does not occur. In addition, since the encrypted debug information is not decrypted on the real machine, management of the secret key in the real machine is unnecessary, and protection of the decryption code is not necessary. In addition, since neither code information obfuscation nor debug information encryption or decryption processing occurs on the actual machine, logic modification of the program execution environment is unnecessary.
本実施例では、既存のリモートデバッガをそのまま利用可能なリモートデバッグシステムの例を説明する。本実施例のリモートデバッグシステムは、実施例1と同様の、ネットワークを介したデバッグ処理が可能なデバッガ、及びネットワークを介したデバッグ処理が可能なプログラム実行環境を備えている。さらに、ネットワークを介して送信されたデバッグ要求を別の装置にネットワークを介して転送可能なプロキシサーバであって、難読化装置で難読化されたプログラムの暗号化されたデバッグ情報を復号可能な、プロキシサーバを備えている。 In this embodiment, an example of a remote debugging system that can use an existing remote debugger as it is will be described. The remote debugging system according to the present embodiment includes a debugger capable of debugging via a network and a program execution environment capable of debugging via a network, similar to the first embodiment. Further, the proxy server can transfer the debug request transmitted via the network to another device via the network, and can decrypt the encrypted debug information of the program obfuscated by the obfuscation device. A proxy server is provided.
図6は、実施例2におけるソフトウェア構成を示す。
中継装置501はプロキシサーバにより構成され、保守センタ装置201とネットワーク203を介して接続している。また、中継装置501は、デバッグ対象装置202とネットワーク203を介して接続している。各機器間を繋ぐネットワーク203は同一ネットワークであってもよく、別のネットワークであってもよい。また、保守センタ装置201、中継装置501、デバッグ対象装置202は同一マシン上に存在していてもよく、その場合、ネットワーク203は論理的な通信パイプを表す。
FIG. 6 shows a software configuration in the second embodiment.
The
リモートデバッグプロキシ502は、中継装置501上で動作し、デバッグメッセージ転送部503およびデバッグ情報復号処理部206により構成される。デバッグメッセージ転送部503は、デバッグ要求処理部205から受信したメッセージをそのままデバッグ応答処理部209に転送する処理を行う。また、デバッグメッセージ転送部503は、デバッグ応答処理部から受信したメッセージの種類を識別し、暗号化されたデバッグ情報であればデバッグ情報復号処理部206を用いてデバッグ情報を復号化してデバッグ要求処理部205に復号化したメッセージを送信し、それ以外の場合はそのままメッセージをデバッグ要求処理部205に送信する。
The
保守センタ装置201の構成は実施例1記載の構成と同様であるが、唯一異なる点はデバッグ情報復号処理部206を備えない点である。デバッグ情報復号処理部206が行っていた処理を中継装置501に委譲することで、既存のリモートデバッガをそのまま利用することが可能となる。
The configuration of the
デバッグ対象装置202の構成は、実施例1と同じである。実施例1と異なる点は、接続元装置が保守センタ装置201ではなく、中継装置501であるという点のみである。
The configuration of the
図7は、実施例2におけるリモートデバッグ処理のシーケンスを表す。デバッグ開始処理401は実施例1記載の処理内容と同一であるが、リモートデバッガ204の接続先が中継装置501であるという点でのみ異なる。
FIG. 7 shows a sequence of remote debugging processing in the second embodiment. The debug start process 401 is the same as the process described in the first embodiment, but differs only in that the connection destination of the
中継装置501に送信されたデバッグ情報取得要求402は、そのままデバッグ対象装置202に転送される。デバッグ対象装置202は実施例1記載と同じデバッグ情報取得処理403を行い、実施例1記載と同じデバッグ情報取得応答404を中継装置501に返す。中継装置501はデバッグ情報取得応答404により受信した暗号化されたデバッグ情報を実施例1記載と同じデバッグ情報復号処理405により復号化し、復号化したデバッグ情報を用いてデバッグ情報取得応答404を保守センタ装置201に返す。このように、暗号化されたデバッグ情報を中継装置501が復号化することにより、保守センタ装置201上で既存のリモートデバッガ204を利用できる。既存のリモートデバッガ204とは、例えばJava標準のJDBや、リモートデバッグ機能を有するEclipse等の統合開発環境である。
The debug information acquisition request 402 transmitted to the
デバッグ処理要求406およびデバッグ処理応答407は、中継装置501がそのメッセージを中継するという点でのみ異なっており、処理内容は実施例1記載と同じである。
The debug processing request 406 and the debug processing response 407 are different only in that the
図7は最も単純なシーケンスについて記載したものであり、メッセージの処理順序や回数、送受信の方向について限定するものではない。中継装置501を介してメッセージを送受信する点を除き、標準のJavaのリモートデバッグシステムに準じた動作を想定したものである。
FIG. 7 describes the simplest sequence, and does not limit the processing order and number of messages and the direction of transmission / reception. Except for transmitting and receiving messages via the
図3に示す難読化方法により難読化されたプログラムを利用し、図7に示すようなシーケンスを繰り返すことにより、本発明が対象とする課題を解決し、かつ既存のリモートデバッガを利用可能なリモートデバッグシステムを実現できる。すなわち、実施例2によれば、実施例1の効果に加えて、さらに、保守センタ側に復号処理を行う専用のプロキシサーバを用いることで、既存のデバッガをそのまま利用できる、という効果がある。 The program obfuscated by the obfuscation method shown in FIG. 3 is used, and the sequence shown in FIG. 7 is repeated to solve the problem targeted by the present invention, and a remote that can use an existing remote debugger. A debugging system can be realized. That is, according to the second embodiment, in addition to the effects of the first embodiment, there is an effect that an existing debugger can be used as it is by using a dedicated proxy server that performs a decoding process on the maintenance center side.
実施例3は、本発明を自動車のナビケーションシステムに適用した例を示すものである。実施例2と異なり、保守センタ装置100がプロキシサーバを備えている。このナビケーションシステムには、専用JavaVMがインストールされており、Javaプログラムの実行時にはJavaVMが起動され、同じJavaプログラムを共通に開発し、実行可能な環境にある。実機105mは、デバッグ処理が可能なプログラム実行環境として、車載のCPUにJava仮想マシンを搭載し、アプリケーションとしてカーナビケーションシステムを備えている。保守センタ装置100と実機105mは、無線通信によるネットワークで接続されている。実機105mのデバッグ情報の取得にはJava標準API(JVMTI)を利用する。デバッグ情報は、実機105mでは復号化せず、保守センタ装置100のデバッガで復号化する。保守センタ装置100側には復号処理を行う復号プロシキを備えることで、Java標準のデバッガ(JDB)を利用することができる。
The third embodiment shows an example in which the present invention is applied to an automobile navigation system. Unlike the second embodiment, the
保守センタ装置100は、難読化装置で難読化されたデバッグ対象プログラムの暗号化されたデバッグ情報を復号可能で、かつ、ネットワークを介したデバッグ処理が可能なプログラム実行環境を有する。保守センタ装置100が、難読化されたプログラムのデバッグ情報を取得するためのデバッグ要求をカーナビケーションシステム105mのプログラム実行環境に送信し、このデバッグ要求を受けたプログラム実行環境は、難読化されたプログラムからデバッグ要求の求める暗号化されたデバッグ情報を取得し、暗号化されたデバッグ情報を保守センタ装置100に返信する。保守センタ装置100は、プログラム実行環境から受信した暗号化されたデバッグ情報を復号化する。
The
このようにして、リバースエンジニアリングからカーナビケーションシステムのプログラムを保護すると同時に、パフォーマンスを劣化させることなく、JDB対応の既存ツールでカーナビケーションシステムのリモートデバッグを行うことができる。 In this way, it is possible to protect the car navigation system program from reverse engineering, and at the same time perform remote debugging of the car navigation system with existing JDB-compatible tools without degrading performance.
また、本発明のリモートデバッグシステムを、Java仮想マシンを搭載した各家庭内のパソコン、ディジタル家電、電話機など各種の端末機器間をホームネットワークで繋いだ、ホーム・ゲートウエイに適用することもできる。このホーム・ゲートウエイには、専用JavaVMがインストールされており、Javaプログラムの実行時にはJavaVMが起動され、同じJavaプログラムを共通に開発し、実行可能な環境にある。本発明を適用することで、リバースエンジニアリングから各家庭内のホーム・ゲートウエイを構成するJava仮想マシン搭載機器のデバッグ対象プログラムを保護すると同時に、パフォーマンスを劣化させることなく各機器のリモートデバッグを可能にすることができる。 The remote debugging system of the present invention can also be applied to a home gateway in which various terminal devices such as personal computers, digital home appliances, and telephones installed in a Java virtual machine are connected via a home network. In this home gateway, a dedicated JavaVM is installed, and when the Java program is executed, the JavaVM is activated, and the same Java program is commonly developed and is in an executable environment. By applying the present invention, it is possible to protect a debug target program of a device equipped with a Java virtual machine constituting a home gateway in each home from reverse engineering, and at the same time enable remote debugging of each device without degrading performance. be able to.
あるいはまた本発明のリモートデバッグシステムを、電力の流れを供給側・需要側の両方から制御し、需要家と供給側との双方から電力のやりとりができるようにして最適化できる送電網を構築する、スマートグリッドに適用することもできる。このスマートグリッドシステムには、Java仮想マシンを搭載した専用の機器やソフトウェアが、送電網の一部に組み込まれている。本発明を適用することで、スマートグリッドの欠点であるセキュリティの脆弱性の克服に効果がある。例えば、リバースエンジニアリングから需要家のスマートグリッドシステムを構成するJava仮想マシン搭載機器のデバッグ対象プログラムを保護すると同時に、パフォーマンスを劣化させることなく各機器のリモートデバッグを可能にすることができる。 Alternatively, the remote debugging system of the present invention is configured to control the flow of power from both the supply side and the demand side, and to construct a power transmission network that can be optimized so that power can be exchanged from both the consumer and supply side. It can also be applied to smart grids. In this smart grid system, dedicated devices and software equipped with Java virtual machines are incorporated into a part of the power grid. By applying the present invention, it is effective in overcoming the security vulnerability that is a drawback of the smart grid. For example, it is possible to protect a debug target program of a device mounted with a Java virtual machine that constitutes a customer's smart grid system from reverse engineering, and simultaneously enable remote debugging of each device without degrading performance.
100 保守センタ
101 演算装置
102 主記憶装置
103 通信装置
104 外部記憶装置
105 ユーザの端末機器
106 ネットワーク
107 プログラム開発者提供の難読化装置
201 保守センタ装置
202 デバッグ対象装置
203 ネットワーク
204 リモートデバッガ
205 デバッグ要求処理部
206 デバッグ情報復号処理部
207 デバッグ対象プログラム
208 プログラム実行環境
209 デバッグ応答処理部
300 難読化処理
301 プログラム読み込み
302 コード情報取得
303 コード情報難読化
304 デバッグ情報有
305 デバッグ情報取得
306 デバッグ情報編集
307 デバッグ情報暗号化
308 コード情報有
401 デバッグ開始処理
402 デバッグ情報取得要求
403 デバッグ情報取得処理
404 デバッグ情報取得応答
405 デバッグ情報復号化処理
406 デバッグ処理要求
407 デバッグ処理応答
501 中継装置
502 リモートデバッグプロキシ
503 デバッグメッセージ転送部。
DESCRIPTION OF
Claims (12)
前記デバッグ対象プログラムは、プログラムロジックを表すコード情報と、デバッグに必要な情報を表すデバッグ情報とを含んで構成され、
前記プログラム難読化処理手段により、
前記デバッグ対象プログラムの前記プログラムロジックを変更することなく、前記コード情報を、リバースエンジニアリングが困難な情報へと難読化し、
前記デバッグ情報を、リバースエンジニアリングが不可能な情報へと暗号化することにより、前記デバッグ対象プログラムを難読化する
ことを特徴とするプログラム難読化方法。 A method for obfuscating a program to be debugged for execution on a device to be debugged in an obfuscation device having program obfuscation processing means,
The debug target program includes code information representing program logic and debug information representing information necessary for debugging,
By the program obfuscation processing means,
Without changing the program logic of the debug target program, the code information is obfuscated into information that is difficult to reverse engineer,
A program obfuscation method comprising obfuscating the debug target program by encrypting the debug information into information that cannot be reverse-engineered.
前記デバッグ対象プログラムは、前記デバッグ対象装置で仮想マシンを実行するアプリケーションプログラムである
ことを特徴とするプログラム難読化方法。 In claim 1,
The program obfuscation method, wherein the debug target program is an application program for executing a virtual machine on the debug target device.
前記デバッグ対象プログラムはJava言語で記述されたプログラムであり、
前記プログラムロジックを構成するクラスファイルの前記コード情報と前記デバッグ情報とをそれぞれ別方式で変換する
ことを特徴とするプログラム難読化方法。 In claim 2,
The debug target program is a program written in Java language,
A program obfuscation method, wherein the code information and the debug information of a class file constituting the program logic are converted by different methods.
前記プログラム難読化処理手段は、
前記クラスファイルのプログラムデータをその格納場所から読み込み、
該読み込んだプログラムデータのバイトコードから前記コード情報を取得し、
前記取得したクラスファイルのコード情報を、前記難読化手段を用いて、難読化前のコード情報と同じロジックを表すが、人間にとっては解析が困難な情報となるコード情報に変換し、
前記プログラムデータに前記取得したコード情報に関連するデバッグ情報が存在するかどうかを判定し、
前記デバッグ情報を含むコードと判定された場合に、前記プログラムデータから前記デバッグ情報を取得して所定の場所に格納し、
前記取得したクラスファイルのデバッグ情報を、前記難読化したコード情報に対応付ける形式に編集し、
該編集したデバッグ情報を暗号化し、該暗号化されたデバッグ情報を元の格納場所に格納する
ことを特徴とするプログラム難読化方法。 In claim 3,
The program obfuscation processing means includes:
Read the program data of the class file from its storage location,
The code information is obtained from the byte code of the read program data,
Using the obfuscation means, the obtained code information of the class file represents the same logic as the code information before obfuscation, but is converted into code information that is difficult for humans to analyze,
Determining whether there is debug information related to the acquired code information in the program data;
When it is determined that the code includes the debug information, the debug information is acquired from the program data and stored in a predetermined location.
Edit the acquired class file debug information into a format that corresponds to the obfuscated code information,
A program obfuscation method, comprising: encrypting the edited debug information; and storing the encrypted debug information in an original storage location.
前記難読化装置の前記プログラム難読化処理手段は、
前記デバッグ対象プログラムの前記プログラムロジックを変更することなく、前記コード情報を、リバースエンジニアリングが困難な情報へと難読化し、前記デバッグ情報を、リバースエンジニアリングが不可能な情報へと暗号化することにより、前記デバッグ対象プログラムを難読化し、
前記デバッグ対象装置は、
前記プログラム難読化処理手段により難読化されたデバッグ対象プログラムを保持すると共に、該デバッグ対象プログラムの実行環境、及び、デバッグ応答処理部を備え、
前記デバッグ処理装置は、
前記デバッグ対象装置の前記デバッグ対象プログラムに関するデバッグ情報の取得手段能、及び、前記デバッグ対象プログラムに関するデバッグ情報の復号・処理手段を有し、
前記ネットワークを介して前記デバッグ対象装置の難読化されたデバッグ対象プログラムのデバッグ処理を行う
ことを特徴とするリモートデバッグシステム。 A remote configured so that a debug target device that executes a debug target program, an obfuscation device that includes program obfuscation processing means, and a debug processing device that debugs the debug target program can be connected to each other via a network. A debugging system,
The program obfuscation processing means of the obfuscation apparatus comprises:
Without changing the program logic of the debug target program, the code information is obfuscated into information that is difficult to reverse engineer, and the debug information is encrypted into information that cannot be reverse engineered. Obfuscating the program to be debugged,
The debug target device is:
Holding the debug target program obfuscated by the program obfuscation processing means, and including an execution environment of the debug target program, and a debug response processing unit,
The debug processing device includes:
A debug information acquisition means function relating to the debug target program of the debug target device; and debug information decoding / processing means relating to the debug target program;
A remote debugging system for performing a debugging process of an obfuscated debugging target program of the debugging target device via the network.
前記デバッグ処理装置が、前記ネットワークを介して前記デバッグ対象装置に接続された保守センタであり、
該保守センタは、難読化された前記プログラムの暗号化されたデバッグ情報を復号化可能なデバッガと、前記ネットワークを介した前記デバッグ処理が可能なプログラム実行環境とを備え、
前記デバッガは、
前記デバッグ処理のためのユーザインタフェースを提供するデバッグ要求処理部と、
暗号化された前記デバッグ情報を復号化するデバッグ情報復号処理部により構成される
ことを特徴とするリモートデバッグシステム。 In claim 5,
The debug processing device is a maintenance center connected to the debug target device via the network;
The maintenance center includes a debugger capable of decrypting the encrypted debug information of the obfuscated program, and a program execution environment capable of the debug process via the network,
The debugger is
A debug request processing unit for providing a user interface for the debugging process;
A remote debug system comprising a debug information decryption processing unit for decrypting the encrypted debug information.
前記デバッグ対象装置は、記憶部と処理部を備え、
前記記憶部に前記プログラムとしてのアプリケーションプログラムおよび該アプリケーションプログラムを実行可能なように処理する仮想マシンを記憶し、前記処理部が前記仮想マシンを実行する環境を備え、
通常時は前記難読化された前記プログラムを実行する
ことを特徴とするリモートデバッグシステム。 In claim 6,
The debug target device includes a storage unit and a processing unit,
An application program as the program and a virtual machine that processes the application program so as to be executable are stored in the storage unit, and the processing unit includes an environment in which the virtual machine is executed,
A remote debugging system that executes the obfuscated program at normal times.
前記デバッグ応答処理は、前記デバッグ要求処理部から送信されるデバッグ要求メッセージを受信し、当該メッセージの種類に応じてデバッグ対象プログラムのデバッグ処理を行い、その結果を前記デバッグ要求処理部に返す
ことを特徴とするリモートデバッグシステム。 In claim 5,
The debug response processing receives a debug request message transmitted from the debug request processing unit, performs debug processing of the program to be debugged according to the type of the message, and returns the result to the debug request processing unit. A featured remote debugging system.
前記保守センタは、前記デバッグ対象装置の前記デバッグ対象プログラムに誤動作が発生した時、暗号化された前記デバッグ情報を復号化し、前記デバッグ対象装置のデバッグ対象プログラムに対するリモートデバッグを行う
ことを特徴とするリモートデバッグシステム。 In claim 6,
When the malfunction occurs in the debug target program of the debug target device, the maintenance center decrypts the encrypted debug information and performs remote debugging on the debug target program of the debug target device. Remote debugging system.
前記デバッガが、前記難読化された前記プログラムの前記デバッグ情報を取得するためのデバッグ要求を前記デバッグ対象装置の前記プログラム実行環境に送信した際、当該デバッグ要求を受けた該デバッグ対象装置の前記プログラム実行環境は前記難読化された前記プログラムから当該デバッグ要求の求める暗号化された前記デバッグ情報を取得し、
暗号化された当該デバッグ情報を前記デバッガに返信し、
前記デバッガは前記デバッグ対象装置の前記プログラム実行環境から受信した暗号化された当該デバッグ情報を復号化する
ことを特徴とするリモートデバッグシステム。 In claim 6,
When the debugger transmits a debug request for acquiring the debug information of the obfuscated program to the program execution environment of the debug target device, the program of the debug target device that has received the debug request The execution environment obtains the debug information encrypted that the debug request requests from the obfuscated program,
Return the encrypted debug information to the debugger,
The remote debugging system, wherein the debugger decrypts the encrypted debug information received from the program execution environment of the debug target device.
前記デバッグ処理装置が、前記ネットワークを介したデバッグ処理が可能なデバッガと、前記ネットワークを介して送信されたデバッグ要求を前記デバッグ対象装置に該ネットワークを介して転送可能なプロキシサーバとで構成され、
前記プロキシサーバは、前記難読化されたプログラムの暗号化されたデバッグ情報を復号可能で、かつ、ネットワークを介したデバッグ処理が可能なプログラム実行環境を有し、
前記デバッグ対象装置が、前記難読化されたプログラムを実行可能なプログラム実行環境を有し、
前記デバッガが、前記難読化された前記プログラムの前記デバッグ情報を取得するためのデバッグ要求を前記プロキシサーバに送信した際、前記プロキシサーバは当該デバッグ要求を前記デバッグ対象装置の前記プログラム実行環境に転送し、
当該デバッグ要求を受けた前記デバッグ対象装置の前記プログラム実行環境は、前記難読化された前記プログラムから当該デバッグ要求の求める暗号化された前記デバッグ情報を取得し、前記プログラム実行環境は暗号化された当該デバッグ情報を前記プロキシサーバに返信し、
前記プロキシサーバは、前記プログラム実行環境から受信した暗号化された当該デバッグ情報を復号化し、該復号化された当該デバッグ情報を前記デバッガに返信する
ことを特徴とするリモートデバッグシステム。 In claim 5,
The debug processing device is configured with a debugger capable of debugging processing via the network, and a proxy server capable of transferring a debug request transmitted via the network to the debug target device via the network,
The proxy server has a program execution environment capable of decrypting the encrypted debug information of the obfuscated program and capable of performing debug processing via a network;
The debug target device has a program execution environment capable of executing the obfuscated program;
When the debugger sends a debug request for acquiring the debug information of the obfuscated program to the proxy server, the proxy server transfers the debug request to the program execution environment of the debug target device. And
The program execution environment of the device to be debugged that has received the debug request acquires the encrypted debug information requested by the debug request from the obfuscated program, and the program execution environment is encrypted The debug information is returned to the proxy server,
The remote debug system, wherein the proxy server decrypts the encrypted debug information received from the program execution environment, and returns the decrypted debug information to the debugger.
前記デバッグ処理装置が、前記ネットワークを介したデバッグ処理が可能なデバッガと、前記デバッグ要求を前記デバッグ対象装置に前記ネットワークを介して転送可能なプロキシサーバとを備えた保守センタで構成され、
前記保守センタは、前記難読化されたプログラムの暗号化されたデバッグ情報を復号可能で、かつ、ネットワークを介したデバッグ処理が可能なプログラム実行環境を有し、
前記デバッグ対象装置が、前記難読化されたプログラムを実行可能なプログラム実行環境を有し、
前記保守センタが、前記難読化された前記プログラムの前記デバッグ情報を取得するためのデバッグ要求を前記デバッグ対象装置の前記プログラム実行環境に送信し、
当該デバッグ要求を受けた前記デバッグ対象装置の前記プログラム実行環境は、前記難読化された前記プログラムから当該デバッグ要求の求める暗号化された前記デバッグ情報を取得し、前記プログラム実行環境は暗号化された当該デバッグ情報を前記保守センタに返信し、
前記保守センタは、前記プログラム実行環境から受信した暗号化された当該デバッグ情報を復号化する
ことを特徴とするリモートデバッグシステム。 In claim 5,
The debug processing device is configured by a maintenance center including a debugger capable of performing debug processing via the network, and a proxy server capable of transferring the debug request to the debug target device via the network,
The maintenance center has a program execution environment capable of decrypting the encrypted debug information of the obfuscated program and capable of performing debug processing via a network;
The debug target device has a program execution environment capable of executing the obfuscated program;
The maintenance center sends a debug request for obtaining the debug information of the obfuscated program to the program execution environment of the debug target device;
The program execution environment of the device to be debugged that has received the debug request acquires the encrypted debug information requested by the debug request from the obfuscated program, and the program execution environment is encrypted Return the debug information to the maintenance center,
The remote maintenance system, wherein the maintenance center decrypts the encrypted debug information received from the program execution environment.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011182504A JP2013045277A (en) | 2011-08-24 | 2011-08-24 | Program obfuscation method and remote debug system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011182504A JP2013045277A (en) | 2011-08-24 | 2011-08-24 | Program obfuscation method and remote debug system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013045277A true JP2013045277A (en) | 2013-03-04 |
Family
ID=48009139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011182504A Withdrawn JP2013045277A (en) | 2011-08-24 | 2011-08-24 | Program obfuscation method and remote debug system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013045277A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015114964A (en) * | 2013-12-13 | 2015-06-22 | Kddi株式会社 | Pseudo-random number generation device and method, and program obfuscation device and method |
JP2017054222A (en) * | 2015-09-08 | 2017-03-16 | 富士ゼロックス株式会社 | Information processing apparatus, print system, and program |
WO2021245837A1 (en) * | 2020-06-03 | 2021-12-09 | 日本電気株式会社 | Backdoor test device, backdoor test method, and computer-readable medium |
DE112020000535B4 (en) | 2019-04-26 | 2024-05-16 | International Business Machines Corporation | Troubleshooting inside and outside your own premises |
-
2011
- 2011-08-24 JP JP2011182504A patent/JP2013045277A/en not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015114964A (en) * | 2013-12-13 | 2015-06-22 | Kddi株式会社 | Pseudo-random number generation device and method, and program obfuscation device and method |
JP2017054222A (en) * | 2015-09-08 | 2017-03-16 | 富士ゼロックス株式会社 | Information processing apparatus, print system, and program |
DE112020000535B4 (en) | 2019-04-26 | 2024-05-16 | International Business Machines Corporation | Troubleshooting inside and outside your own premises |
WO2021245837A1 (en) * | 2020-06-03 | 2021-12-09 | 日本電気株式会社 | Backdoor test device, backdoor test method, and computer-readable medium |
JP7448005B2 (en) | 2020-06-03 | 2024-03-12 | 日本電気株式会社 | Backdoor inspection device, backdoor inspection method, and program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8381307B2 (en) | Method for protecting a converted applet (CAP) file including encrypting the CAP file | |
US9135434B2 (en) | System and method for third party creation of applications for mobile appliances | |
US8959659B2 (en) | Software authorization system and method | |
CN104680039A (en) | Data protection method and device of application installation package | |
CN111656345B (en) | Software module enabling encryption in container files | |
CN109992987B (en) | Script file protection method and device based on Nginx and terminal equipment | |
CN109558739B (en) | Program running method and device, terminal and readable medium | |
CN101957903A (en) | Method and device for protecting class files | |
CN109284585B (en) | Script encryption method, script decryption operation method and related device | |
KR20120120686A (en) | Apparatus and method for processing application package in portable terminal | |
CN109768862B (en) | A kind of key management method, key call method and cipher machine | |
US20180067777A1 (en) | Application protection method, server, and terminal | |
CN101072097A (en) | System and method for trusted data processing | |
US20140281499A1 (en) | Method and system for enabling communications between unrelated applications | |
CN111274611A (en) | Data desensitization method, device and computer readable storage medium | |
CN114547558B (en) | Authorization method, authorization control device, equipment and medium | |
EP1785901B1 (en) | Secure License Key Method and System | |
CN107257282B (en) | Code full-package encryption method based on RC4 algorithm | |
JP2013045277A (en) | Program obfuscation method and remote debug system | |
CN112115430A (en) | Apk reinforcement method, electronic equipment and storage medium | |
CN103024734A (en) | Encrypting and decrypting method and encrypting and decrypting device for protecting Apk (android package) from being installed by non-authorized mobile phones | |
CN115168873A (en) | Software anti-cracking method based on C + + language | |
CN107403103B (en) | File decryption method and device | |
CN104486441A (en) | FTP-based remote control method | |
CN110737910B (en) | Android log decryption management method, device, equipment and medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20140908 |
|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20141104 |