JP2013045277A - Program obfuscation method and remote debug system - Google Patents

Program obfuscation method and remote debug system Download PDF

Info

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
Application number
JP2011182504A
Other languages
Japanese (ja)
Inventor
Daisuke Fukui
大輔 福井
Genta Koreki
玄太 是木
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.)
Hitachi Solutions Ltd
Original Assignee
Hitachi Solutions Ltd
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 Hitachi Solutions Ltd filed Critical Hitachi Solutions Ltd
Priority to JP2011182504A priority Critical patent/JP2013045277A/en
Publication of JP2013045277A publication Critical patent/JP2013045277A/en
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

PROBLEM TO BE SOLVED: To perform remote debug concurrently protecting a debug object program from a reverse engineering without deteriorating a performance.SOLUTION: Out of a debug object program, information representing a program logic and information necessary for debugging are converted by different systems. The information representing the program logic is obfuscated using an existing obfuscation system, while the information necessary for debugging is encrypted using an existing encryption system. The program logic is executed using the program that has been converted by the different system and, when occurring malfunction, remote debug is performed using the encrypted debug information. The encrypted debug information is decrypted on a maintenance center side for performing the debug.

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, Patent Document 1 describes a method for obfuscating a program by generating a dummy code that can obtain the same calculation result as before obfuscation. Patent Document 2 describes a method of encrypting a program and decrypting it before executing the program. Further, Patent Document 3 describes an obfuscation method in which continuous instructions included in source code are cut out in units of blocks, and control variables are set for controlling the execution order of the cut out blocks. DashO, ProGuard, ZelixKlassMaster, etc. are known as typical program obfuscation tools. ProGuard is built into the Android development environment as standard.

特開2011−018119号公報JP 2011-018119 A 特開2009−075720号公報JP 2009-075720 A 特開2008−090668号公報JP 2008-090668 A

仮想マシンを搭載した機器のリバースエンジニアリングからデバッグ対象プログラムを保護するために、特許文献1および特許文献3記載のように、プログラム全体を難読化する方法では、デバッグ対象プログラムからデバッグ情報が削除されるか、またはデバッグ情報が無意味な情報となるため、リモートデバッグが不可能になるという課題がある。   In order to protect the debug target program from reverse engineering of a device equipped with a virtual machine, as described in Patent Document 1 and Patent Document 3, the method of obfuscating the entire program deletes debug information from the debug target program. In addition, since debugging information becomes meaningless information, there is a problem that remote debugging becomes impossible.

また、リバースエンジニアリングからデバッグ対象プログラムを保護するために、特許文献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.

本発明の実施例1のシステム構成例の図。The figure of the system configuration example of Example 1 of this invention. 実施例1の、リモートデバッグに関係するソフトウェア構成例の図。FIG. 3 is a diagram of a software configuration example related to remote debugging according to the first embodiment. 実施例1の、難読化手順の一例を表すフローチャート。3 is a flowchart illustrating an example of an obfuscation procedure according to the first embodiment. 図3の難読化手順における、プログラムのデバッグ情報の暗号化の前後の例を示す図。The figure which shows the example before and behind encryption of the debug information of a program in the obfuscation procedure of FIG. 実施例1のリモートデバッグ手順を表すシーケンス図。FIG. 3 is a sequence diagram illustrating a remote debugging procedure according to the first embodiment. 本発明の実施例2の、リモートデバッグに関係するソフトウェア構成例の図。The figure of the software structural example relevant to remote debugging of Example 2 of this invention. 実施例2の、リモートデバッグ手順の一例を表すシーケンス図。FIG. 10 is a sequence diagram illustrating an example of a remote debugging procedure according to the second embodiment. 本発明の実施例3の、ハードウェア及びソフトウェアの構成例を示す図。The figure which shows the structural example of the hardware of the Example 3 of this invention, and software.

本発明の代表的な実施形態によれば、難読化装置において、仮想マシンを実行するデバッグ対象プログラムを難読化する。この難読化において、プログラムロジックを構成する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 maintenance center 100 via a network 106, and is connected to a plurality of user terminal devices each having a debug target device, that is, a plurality of actual devices 105 (105A). ˜105 n) and an obfuscation device 107 provided by the program developer connected to the network 106. The maintenance center 100, each user's terminal device 105, and the obfuscation device 107 provided by the program developer each have a computer and a program for causing the computer to realize various functions and means. The maintenance center 100, the user terminal device 105, and the obfuscation apparatus 107 store an application program and a virtual machine that processes the application program so that the application program can be executed in the storage unit, and the processing unit executes the virtual machine. A program execution device. For example, a dedicated Java virtual machine (JavaVM) is installed in advance in each device constituting this remote debugging system, and when executing a Java program, the JavaVM is started, and the same Java program is commonly developed and executed. It is in a possible environment.

コンピュータは、例えば、演算装置101、記憶部(主記憶装置102、外部記憶装置104)、及び、通信装置103を備えている。演算装置101は、主記憶装置102にロードされた命令を処理する中央演算装置である。主記憶装置102は、外部記憶装置104からロードされたプログラムデータを記憶する揮発メモリまたは不揮発メモリである。通信装置103は、外部のネットワーク106と接続し、ハードウェア上で動作するプログラムが必要とするデータを送受信するための装置である。外部記憶装置104は、プログラムデータを記憶する不揮発メモリである。ここで、外部記憶装置104は、ネットワークを経由した別のマシン上に存在する構成であってもよい。   The computer includes, for example, an arithmetic device 101, a storage unit (main storage device 102, external storage device 104), and a communication device 103. The arithmetic unit 101 is a central processing unit that processes instructions loaded in the main storage device 102. The main storage device 102 is a volatile memory or a non-volatile memory that stores program data loaded from the external storage device 104. The communication device 103 is a device for connecting to an external network 106 and transmitting / receiving data required by a program operating on hardware. The external storage device 104 is a nonvolatile memory that stores program data. Here, the external storage device 104 may be configured to exist on another machine via a network.

保守センタ100は、コンピュータ上で主記憶装置102に保持されたアプリケーションプログラムを実行することにより実現される機能・手段として、各実機のデバッグ情報の取得手段、及び、デバッグ情報の復号・処理手段を有している。さらに、この保守センタ100に接続された各端末機器のデバッグ対象のプログラムとそのプログラムを特定するID及びデバッグに関する情報を記録したユーザリスト(デバッグ対象プログラムテーブル)とを保持している。各端末機器105は、デバッグ対象プログラムを保持すると共に、コンピュータ上でアプリケーションプログラムを実行することにより実現される機能として、デバッグ対象プログラムの実行手段及び暗号化デバッグ情報の応答処理手段を保持している。プログラム開発者提供の難読化装置107は、デバッグ対象プログラムに対して難読化・暗号化の処理を行う、プログラム難読化処理手段を保有している。   The maintenance center 100 includes, as functions / means realized by executing an application program stored in the main storage device 102 on a computer, debug information acquisition means and debug information decoding / processing means for each real machine. Have. Furthermore, a debugging target program of each terminal device connected to the maintenance center 100, an ID for specifying the program, and a user list (information for debugging target program table) in which information related to debugging is recorded are held. Each terminal device 105 holds a debug target program and, as functions realized by executing an application program on a computer, a debug target program execution unit and encrypted debug information response processing unit. . The obfuscation device 107 provided by the program developer has program obfuscation processing means for performing obfuscation / encryption processing on the program to be debugged.

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 terminal device 105, the Java VM is activated, and the Java VM reads the byte code of the class file and executes the process while translating it into the machine language. The maintenance center device 201 and the debug target device 202 hold debug information such as a line number of a source code and a local variable name used for debugging in a class file.

本発明において述べる機器は、一般的に、図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 maintenance center apparatus 201 and the debug target apparatus 202 in the remote debugging system according to the first embodiment. In FIG. 2, a maintenance center apparatus 201 is an apparatus used by an individual or a group (hereinafter, referred to as a service manager temporarily) who actually performs remote debugging processing on a user's debug target apparatus 202. The service manager uses the remote debugger 204 to debug the program of the debug target device 202. The remote debugger 204 includes a debug request processing unit 205 that provides a service administrator with a user interface for debugging, a debug information decryption processing unit 206 that decrypts encrypted debug information, and a user list (not shown). Consists of.

デバッグ対象装置202は、リモートデバッグの対象となるデバッグ対象プログラム207を実行する装置である。デバッグ対象装置202では、デバッグ対象プログラム207の実行環境であるプログラム実行環境208が動作する。プログラム実行環境208のデバッグ応答処理部209は、保守センタ装置201のデバッグ要求処理部205から送信されるデバッグ要求メッセージを受信し、当該メッセージの種類に応じてデバッグ対象プログラム207のデバッグ処理を行い、その結果をデバッグ要求処理部205に返す。   The debug target device 202 is a device that executes a debug target program 207 that is a target of remote debugging. In the debug target device 202, a program execution environment 208 that is an execution environment of the debug target program 207 operates. The debug response processing unit 209 of the program execution environment 208 receives the debug request message transmitted from the debug request processing unit 205 of the maintenance center apparatus 201, performs debug processing of the debug target program 207 according to the type of the message, The result is returned to the debug request processing unit 205.

ネットワーク203は、保守センタ装置201とデバッグ対象装置202を繋ぐEthernet(登録商標)等の一般的なネットワークである。但し、保守センタ装置201とデバッグ対象装置202は同一のコンピュータシステム上で動作する装置(第1の機器)であっても良く、その場合、ネットワーク203は論理的な通信パイプを表す。あるいはまた、難読化装置と保守センタ装置とが同一のコンピュータシステム上で動作する装置(第2の機器)であっても良い。   The network 203 is a general network such as Ethernet (registered trademark) that connects the maintenance center device 201 and the debug target device 202. However, the maintenance center device 201 and the debug target device 202 may be devices (first devices) that operate on the same computer system. In this case, the network 203 represents a logical communication pipe. Alternatively, the obfuscation device and the maintenance center device may be a device (second device) that operates on the same computer system.

本発明において述べるリモートデバッグシステムは、一般的に図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 program obfuscation process 300 is performed by the Java program developer using the dedicated tool in the obfuscation apparatus 107. The program to be debugged held in each terminal device 105 is a program that has been subjected to the program obfuscation processing 300 in advance.

難読化処理300では、まず、ステップ301でデバッグ対象プログラム207として動作させるプログラムデータを読み込む。読み込む手段としては例えば外部記憶装置104から読み込む手段が考えられるが、一般的に考えられる別の手段を用いても良い。例えば通信装置103を用いてネットワーク上に存在するプログラムデータをダウンロードしても良い。プログラムデータの例として、例えばJavaのクラスファイルやアーカイブファイル(JARファイル)などが挙げられる。アーカイブファイルは、変換された複数のJavaバイトコード及びそれが使用する画像などのリソースを、一つに纏め圧縮したファイルである。   In the obfuscation process 300, first, in step 301, program data to be operated as the debug target program 207 is read. As a means for reading, for example, a means for reading from the external storage device 104 is conceivable, but another generally conceivable means may be used. For example, program data existing on the network may be downloaded using the communication device 103. Examples of program data include Java class files and archive files (JAR files). The archive file is a file obtained by compressing a plurality of converted Java bytecodes and resources such as images used by them together.

ステップ302は、ステップ301で読み込んだプログラムデータのコード情報を取得するステップである。例えばJavaのクラスファイルではCode属性と呼ばれる部分に、プログラミング言語と機械言語の中間の形式で記述された、Java仮想マシンが理解できる、バイトコードが格納される。   Step 302 is a step of acquiring code information of the program data read in Step 301. For example, in a Java class file, a byte code that can be understood by the Java virtual machine and is written in an intermediate format between a programming language and a machine language is stored in a part called a Code attribute.

ステップ303は、ステップ302で取得したクラスファイルやアーカイブファイルのコード情報を難読化するステップである。難読化は、逆アセンブルや逆コンパイルされてもそのコードを無意味なものにし、出力されたソースコードの解析を意図的に分かり難くすることである。難読化手段の種類や構成に限定は無く、「オブファスケータ」と呼ばれる一般的な難読化ツールを用いることができる。代表的なオブファスケータとして、DashOやProGuardなどが挙げられるが、これらに限定するものではない。難読化後のコード情報は、難読化前のコード情報と同じロジックを表すが、人間にとっては解析が困難な情報となる。難読化前のプログラムデータと難読化後のプログラムデータに構造上の変更はない。   Step 303 is a step of obfuscating the code information of the class file and archive file acquired in Step 302. Obfuscation means making the code meaningless even if it is disassembled or decompiled, and deliberately comprehending the analysis of the output source code. There is no limitation on the type and configuration of the obfuscation means, and a general obfuscation tool called an “obfuscator” can be used. DashO, ProGuard, etc. are listed as typical obscure, but it is not limited to these. Code information after obfuscation represents the same logic as code information before obfuscation, but is difficult for humans to analyze. There is no structural change in the program data before obfuscation and the program data after obfuscation.

図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 step 302 in the program data. For example, in Java, source line number information is stored in a part called LineNumberTable attribute, and a local variable name is stored in a part called LocalVariableTable attribute. If it is determined in step 304 that debug information exists, the process proceeds to step 305. If it is determined that no debug information exists, the process proceeds to step 308. Here, the program code determined to have no debug information is not a target of remote debugging, but it is possible that a code including debug information and a code not including the debug information are mixed in one program data.

ステップ305は、ステップ304でデバッグ情報が存在すると判定された場合に遷移するステップであり、プログラムデータからデバッグ情報を取得する処理を行う。デバッグ情報の格納場所は、Javaにおいては前述の通りクラスファイル内のLineNumberTable属性やLocalVariableTable属性などであるが、これに限定するものではない。例えばデバッグ情報を別のファイルに出力するコンパイラなどが考えられるが、デバッグ情報の種類や格納場所については限定しない。   Step 305 is a step in which transition is made when it is determined in step 304 that debug information exists, and processing for acquiring debug information from program data is performed. In Java, the storage location of debug information is the LineNumberTable attribute or LocalVariableTable attribute in the class file as described above, but it is not limited to this. For example, a compiler that outputs debug information to a separate file can be considered, but the type and location of debug information is not limited.

ステップ306は、ステップ305で取得したクラスファイルのデバッグ情報を、ステップ303で難読化したコード情報に対応付ける形式に編集するステップである。例えば、ステップ303で複数の無意味なダミーコードを生成した場合、これらのダミーコード全体に同じソース行番号を対応付けるといった処理が考えられる。この対応付け手段は複数考えられるが、正常なリモートデバッグ処理が可能であればよく、特定の手段に限定するものではない。   Step 306 is a step of editing the debug information of the class file acquired in step 305 into a format associated with the code information obfuscated in step 303. For example, when a plurality of meaningless dummy codes are generated in step 303, a process of associating the same source line number with all the dummy codes can be considered. There can be a plurality of association means, but it is not limited to a specific means as long as normal remote debugging processing is possible.

ステップ307は、ステップ305で取得し、ステップ306で編集したデバッグ情報を暗号化するステップである。暗号化の手段としては、3DES等を利用した一般的な秘密鍵暗号方式であっても、RSA等を利用した一般的な公開鍵暗号方式であっても、それらを組み合わせた一般的な暗号方式であってもよい。また、元のデバッグ情報のデータ型と同一のデータ型に変換する独自の暗号化方式を利用することも考えられる。例えばソース行番号を表す整数値を、予め決められた数だけビットシフトさせることにより別の整数値に変換するといった手段が考えられる。データ型を変更しないことで、既存のリモートデバッグ向けインタフェースをそのまま利用できるという利点がある。このように暗号化の手段は特に限定しないが、暗号化されたデバッグ情報は元の格納場所に格納される。例えばJavaのLocalVariableTable属性の値を暗号化した場合、暗号化後の値もLocalVariableTable属性に格納される。   Step 307 is a step of encrypting the debug information acquired in step 305 and edited in step 306. As a means of encryption, whether it is a general secret key cryptosystem using 3DES or a general public key cryptosystem using RSA or the like, a general cryptosystem combining them It may be. It is also conceivable to use a unique encryption method that converts the data type of the original debug information to the same data type. For example, a means of converting an integer value representing the source line number into another integer value by bit-shifting by a predetermined number is conceivable. By not changing the data type, there is an advantage that the existing remote debugging interface can be used as it is. Thus, the encryption means is not particularly limited, but the encrypted debug information is stored in the original storage location. For example, when the value of the Java LocalVariableTable attribute is encrypted, the encrypted value is also stored in the LocalVariableTable attribute.

図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 step 302 is included in the program. If another code information exists, the process proceeds to step 302, and if it does not exist, the process ends. When ending the process, if the conversion source program is an archive file, it is generally output as an archive file. The program converted in this way becomes the target of remote debugging in the present invention as the debug target program 207.

なお、図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 maintenance center apparatus 201 and the debug target apparatus 202.
The debug start process 401 represents a sequence in which the remote debugger 204 is activated by the service administrator and the debug process of the debug target program 207 is started. For example, a procedure for starting a general integrated development environment such as Eclipse and starting remote debugging of a Java program operating on the debug target device 202 corresponds to this.

デバッグ情報取得要求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 request processing unit 205 of the remote debugger 204 to the debug response processing unit 209 of the program execution environment 208 via the network 203 based on the user list information. It is a sequence to transmit. This corresponds to, for example, processing in which JDB, which is a Java standard debugger, transmits a message to a debugging interface called JVMTI (Java Virtual Machine Tool Interface) of a Java virtual machine via a network.

デバッグ情報取得処理403は、デバッグ応答処理部209が受信したメッセージの種類に応じてデバッグ対象プログラム207から暗号化されたデバッグ情報を取得するシーケンスである。例えば一般的なJava仮想マシンでは、リモートからのデバッグ情報取得要求を受信してJVMTIを通じてデバッグ情報を取得する機能が提供されており、本シーケンスはこの処理に該当する。   The debug information acquisition process 403 is a sequence for acquiring encrypted debug information from the debug target program 207 in accordance with the type of message received by the debug response processing unit 209. For example, in a general Java virtual machine, a function for receiving a debug information acquisition request from a remote and acquiring debug information through JVMTI is provided, and this sequence corresponds to this processing.

デバッグ情報取得応答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 request processing unit 205 of the remote debugger 204. The encrypted debug information is not decrypted here and is returned as it is.

デバッグ情報復号化処理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 decryption processing unit 206 of the remote debugger 204 decrypts the encrypted debug information returned by the debug information acquisition response 404. This sequence is not a function that a general Java debugger has, but is a part that needs to be extended independently. It is assumed that the debug information decryption processing unit 206 knows the encryption method of the debug information encrypted at step 307 in FIG. 3 and its secret key. The obfuscation means (obfuscation tool) that performs the processing of FIG. 3 and the means by which the debug information decryption processing unit 206 shares the secret key are not particularly limited. For example, a means for sharing a secret key by requesting a user to input a password, a means for sharing secret key data stored in the external storage device 104 in advance by a setting file, and the like are generally considered.

デバッグ処理要求406は、一般的なデバッグ処理要求をプログラム実行環境208のデバッグ応答処理部209に送信するシーケンスである。これは例えばJava標準デバッガであるJDBを利用し、ブレークポイントを設定するといった一般的なデバッグ要求を表す。デバッグ処理応答407はその応答メッセージである。   The debug process request 406 is a sequence for transmitting a general debug process request to the debug response processing unit 209 of the program execution environment 208. This represents a general debug request such as setting a breakpoint using JDB, which is a Java standard debugger. The debug process response 407 is the response message.

このようにして、通常時は難読化されたクラスファイルのコード情報を用いて各デバッグ対象装置202でプログラムロジックを実行する。そして、デバッグ対象装置202のプログラムに誤動作が発生した時には、暗号化されたデバッグ情報を用いてそのデバッグ対象装置202のプログラムに対してリモートデバッグを行うことができる。   In this way, the program logic is executed in each debug target device 202 by using the code information of the obfuscated class file in normal times. Then, when a malfunction occurs in the program of the debug target device 202, remote debugging can be performed on the program of the debug target device 202 using the encrypted debug information.

図5では、保守センタ装置201からデバッグ対象装置202へのメッセージのみを記載しているが、非同期でデバッグ対象装置202から保守センタ装置201へメッセージが送信されることも考えられる。例えばJVMTIが発行するBreakpointイベントなどの送信が考えられる。   In FIG. 5, only the message from the maintenance center device 201 to the debug target device 202 is described, but it is also conceivable that the message is asynchronously transmitted from the debug target device 202 to the maintenance center device 201. For example, transmission of a Breakpoint event issued by JVMTI can be considered.

なお、図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 relay device 501 includes a proxy server and is connected to the maintenance center device 201 via the network 203. The relay device 501 is connected to the debug target device 202 via the network 203. The network 203 connecting the devices may be the same network or different networks. In addition, the maintenance center device 201, the relay device 501, and the debug target device 202 may exist on the same machine. In this case, the network 203 represents a logical communication pipe.

リモートデバッグプロキシ502は、中継装置501上で動作し、デバッグメッセージ転送部503およびデバッグ情報復号処理部206により構成される。デバッグメッセージ転送部503は、デバッグ要求処理部205から受信したメッセージをそのままデバッグ応答処理部209に転送する処理を行う。また、デバッグメッセージ転送部503は、デバッグ応答処理部から受信したメッセージの種類を識別し、暗号化されたデバッグ情報であればデバッグ情報復号処理部206を用いてデバッグ情報を復号化してデバッグ要求処理部205に復号化したメッセージを送信し、それ以外の場合はそのままメッセージをデバッグ要求処理部205に送信する。   The remote debug proxy 502 operates on the relay device 501 and includes a debug message transfer unit 503 and a debug information decoding processing unit 206. The debug message transfer unit 503 performs processing for transferring the message received from the debug request processing unit 205 to the debug response processing unit 209 as it is. Also, the debug message transfer unit 503 identifies the type of message received from the debug response processing unit, and if it is encrypted debug information, the debug information decryption unit 206 is used to decrypt the debug information and debug request processing The decrypted message is transmitted to the unit 205. In other cases, the message is transmitted to the debug request processing unit 205 as it is.

保守センタ装置201の構成は実施例1記載の構成と同様であるが、唯一異なる点はデバッグ情報復号処理部206を備えない点である。デバッグ情報復号処理部206が行っていた処理を中継装置501に委譲することで、既存のリモートデバッガをそのまま利用することが可能となる。   The configuration of the maintenance center device 201 is the same as that described in the first embodiment, but the only difference is that the debug information decoding processing unit 206 is not provided. By delegating the processing performed by the debug information decoding processing unit 206 to the relay device 501, the existing remote debugger can be used as it is.

デバッグ対象装置202の構成は、実施例1と同じである。実施例1と異なる点は、接続元装置が保守センタ装置201ではなく、中継装置501であるという点のみである。   The configuration of the debug target device 202 is the same as that of the first embodiment. The difference from the first embodiment is only that the connection source device is not the maintenance center device 201 but the relay device 501.

図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 remote debugger 204 is the relay device 501.

中継装置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 relay device 501 is transferred to the debug target device 202 as it is. The debug target apparatus 202 performs the same debug information acquisition processing 403 as described in the first embodiment, and returns the same debug information acquisition response 404 as described in the first embodiment to the relay apparatus 501. The relay apparatus 501 decrypts the encrypted debug information received by the debug information acquisition response 404 by the same debug information decryption processing 405 as described in the first embodiment, and uses the decrypted debug information to send the debug information acquisition response 404 to the maintenance center. Return to device 201. As described above, the relay device 501 decrypts the encrypted debug information, so that the existing remote debugger 204 can be used on the maintenance center device 201. The existing remote debugger 204 is an integrated development environment such as Java standard JDB or Eclipse having a remote debugging function.

デバッグ処理要求406およびデバッグ処理応答407は、中継装置501がそのメッセージを中継するという点でのみ異なっており、処理内容は実施例1記載と同じである。   The debug processing request 406 and the debug processing response 407 are different only in that the relay device 501 relays the message, and the processing contents are the same as those described in the first embodiment.

図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 relay device 501, an operation according to the standard Java remote debugging system is assumed.

図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 maintenance center apparatus 100 includes a proxy server. In this navigation system, 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 executed. The actual machine 105m has a Java virtual machine mounted on an in-vehicle CPU as a program execution environment capable of debugging, and a car navigation system as an application. The maintenance center device 100 and the actual machine 105m are connected by a network by wireless communication. Java standard API (JVMTI) is used to acquire debug information of the actual machine 105m. The debug information is not decrypted by the actual machine 105m, but is decrypted by the debugger of the maintenance center apparatus 100. By providing the maintenance center apparatus 100 with a decryption proxy for performing decryption processing, a Java standard debugger (JDB) can be used.

保守センタ装置100は、難読化装置で難読化されたデバッグ対象プログラムの暗号化されたデバッグ情報を復号可能で、かつ、ネットワークを介したデバッグ処理が可能なプログラム実行環境を有する。保守センタ装置100が、難読化されたプログラムのデバッグ情報を取得するためのデバッグ要求をカーナビケーションシステム105mのプログラム実行環境に送信し、このデバッグ要求を受けたプログラム実行環境は、難読化されたプログラムからデバッグ要求の求める暗号化されたデバッグ情報を取得し、暗号化されたデバッグ情報を保守センタ装置100に返信する。保守センタ装置100は、プログラム実行環境から受信した暗号化されたデバッグ情報を復号化する。   The maintenance center device 100 has a program execution environment capable of decrypting the encrypted debug information of the debug target program obfuscated by the obfuscation device and capable of performing debug processing via the network. The maintenance center device 100 transmits a debug request for acquiring debug information of the obfuscated program to the program execution environment of the car navigation system 105m, and the program execution environment receiving the debug request is the obfuscated program. The encrypted debug information requested by the debug request is acquired from the server, and the encrypted debug information is returned to the maintenance center apparatus 100. The maintenance center device 100 decrypts the encrypted debug information received from the program execution environment.

このようにして、リバースエンジニアリングからカーナビケーションシステムのプログラムを保護すると同時に、パフォーマンスを劣化させることなく、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 SYMBOLS 100 Maintenance center 101 Arithmetic apparatus 102 Main storage apparatus 103 Communication apparatus 104 External storage apparatus 105 User terminal device 106 Network 107 Obfuscation apparatus 201 provided by program developer Maintenance center apparatus 202 Debug target apparatus 203 Network 204 Remote debugger 205 Debug request processing Unit 206 debug information decoding processing unit 207 debug target program 208 program execution environment 209 debug response processing unit 300 obfuscation processing 301 program read 302 code information acquisition 303 code information obfuscation 304 debug information present 305 debug information acquisition 306 debug information editing 307 debug Information encryption 308 Code information present 401 Debug start processing 402 Debug information acquisition request 403 Debug information acquisition processing 404 Debug information The resulting response 405 debug information decoding processing 406 debug processing request 407 debug processing response 501 relay apparatus 502 remote debugging proxy 503 debug message transfer part.

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.
請求項1において、
前記デバッグ対象プログラムは、前記デバッグ対象装置で仮想マシンを実行するアプリケーションプログラムである
ことを特徴とするプログラム難読化方法。
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.
請求項2において、
前記デバッグ対象プログラムは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.
請求項3において、
前記プログラム難読化処理手段は、
前記クラスファイルのプログラムデータをその格納場所から読み込み、
該読み込んだプログラムデータのバイトコードから前記コード情報を取得し、
前記取得したクラスファイルのコード情報を、前記難読化手段を用いて、難読化前のコード情報と同じロジックを表すが、人間にとっては解析が困難な情報となるコード情報に変換し、
前記プログラムデータに前記取得したコード情報に関連するデバッグ情報が存在するかどうかを判定し、
前記デバッグ情報を含むコードと判定された場合に、前記プログラムデータから前記デバッグ情報を取得して所定の場所に格納し、
前記取得したクラスファイルのデバッグ情報を、前記難読化したコード情報に対応付ける形式に編集し、
該編集したデバッグ情報を暗号化し、該暗号化されたデバッグ情報を元の格納場所に格納する
ことを特徴とするプログラム難読化方法。
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.
請求項5において、
前記デバッグ処理装置が、前記ネットワークを介して前記デバッグ対象装置に接続された保守センタであり、
該保守センタは、難読化された前記プログラムの暗号化されたデバッグ情報を復号化可能なデバッガと、前記ネットワークを介した前記デバッグ処理が可能なプログラム実行環境とを備え、
前記デバッガは、
前記デバッグ処理のためのユーザインタフェースを提供するデバッグ要求処理部と、
暗号化された前記デバッグ情報を復号化するデバッグ情報復号処理部により構成される
ことを特徴とするリモートデバッグシステム。
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.
請求項6において、
前記デバッグ対象装置は、記憶部と処理部を備え、
前記記憶部に前記プログラムとしてのアプリケーションプログラムおよび該アプリケーションプログラムを実行可能なように処理する仮想マシンを記憶し、前記処理部が前記仮想マシンを実行する環境を備え、
通常時は前記難読化された前記プログラムを実行する
ことを特徴とするリモートデバッグシステム。
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.
請求項5において、
前記デバッグ応答処理は、前記デバッグ要求処理部から送信されるデバッグ要求メッセージを受信し、当該メッセージの種類に応じてデバッグ対象プログラムのデバッグ処理を行い、その結果を前記デバッグ要求処理部に返す
ことを特徴とするリモートデバッグシステム。
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.
請求項6において、
前記保守センタは、前記デバッグ対象装置の前記デバッグ対象プログラムに誤動作が発生した時、暗号化された前記デバッグ情報を復号化し、前記デバッグ対象装置のデバッグ対象プログラムに対するリモートデバッグを行う
ことを特徴とするリモートデバッグシステム。
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.
請求項6において、
前記デバッガが、前記難読化された前記プログラムの前記デバッグ情報を取得するためのデバッグ要求を前記デバッグ対象装置の前記プログラム実行環境に送信した際、当該デバッグ要求を受けた該デバッグ対象装置の前記プログラム実行環境は前記難読化された前記プログラムから当該デバッグ要求の求める暗号化された前記デバッグ情報を取得し、
暗号化された当該デバッグ情報を前記デバッガに返信し、
前記デバッガは前記デバッグ対象装置の前記プログラム実行環境から受信した暗号化された当該デバッグ情報を復号化する
ことを特徴とするリモートデバッグシステム。
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.
請求項5において、
前記デバッグ処理装置が、前記ネットワークを介したデバッグ処理が可能なデバッガと、前記ネットワークを介して送信されたデバッグ要求を前記デバッグ対象装置に該ネットワークを介して転送可能なプロキシサーバとで構成され、
前記プロキシサーバは、前記難読化されたプログラムの暗号化されたデバッグ情報を復号可能で、かつ、ネットワークを介したデバッグ処理が可能なプログラム実行環境を有し、
前記デバッグ対象装置が、前記難読化されたプログラムを実行可能なプログラム実行環境を有し、
前記デバッガが、前記難読化された前記プログラムの前記デバッグ情報を取得するためのデバッグ要求を前記プロキシサーバに送信した際、前記プロキシサーバは当該デバッグ要求を前記デバッグ対象装置の前記プログラム実行環境に転送し、
当該デバッグ要求を受けた前記デバッグ対象装置の前記プログラム実行環境は、前記難読化された前記プログラムから当該デバッグ要求の求める暗号化された前記デバッグ情報を取得し、前記プログラム実行環境は暗号化された当該デバッグ情報を前記プロキシサーバに返信し、
前記プロキシサーバは、前記プログラム実行環境から受信した暗号化された当該デバッグ情報を復号化し、該復号化された当該デバッグ情報を前記デバッガに返信する
ことを特徴とするリモートデバッグシステム。
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.
請求項5において、
前記デバッグ処理装置が、前記ネットワークを介したデバッグ処理が可能なデバッガと、前記デバッグ要求を前記デバッグ対象装置に前記ネットワークを介して転送可能なプロキシサーバとを備えた保守センタで構成され、
前記保守センタは、前記難読化されたプログラムの暗号化されたデバッグ情報を復号可能で、かつ、ネットワークを介したデバッグ処理が可能なプログラム実行環境を有し、
前記デバッグ対象装置が、前記難読化されたプログラムを実行可能なプログラム実行環境を有し、
前記保守センタが、前記難読化された前記プログラムの前記デバッグ情報を取得するためのデバッグ要求を前記デバッグ対象装置の前記プログラム実行環境に送信し、
当該デバッグ要求を受けた前記デバッグ対象装置の前記プログラム実行環境は、前記難読化された前記プログラムから当該デバッグ要求の求める暗号化された前記デバッグ情報を取得し、前記プログラム実行環境は暗号化された当該デバッグ情報を前記保守センタに返信し、
前記保守センタは、前記プログラム実行環境から受信した暗号化された当該デバッグ情報を復号化する
ことを特徴とするリモートデバッグシステム。
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.
JP2011182504A 2011-08-24 2011-08-24 Program obfuscation method and remote debug system Withdrawn JP2013045277A (en)

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)

* Cited by examiner, † Cited by third party
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

Cited By (5)

* Cited by examiner, † Cited by third party
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