JP7348492B2 - 情報処理システム、情報処理装置、情報処理プログラム、および情報処理方法 - Google Patents

情報処理システム、情報処理装置、情報処理プログラム、および情報処理方法 Download PDF

Info

Publication number
JP7348492B2
JP7348492B2 JP2019157818A JP2019157818A JP7348492B2 JP 7348492 B2 JP7348492 B2 JP 7348492B2 JP 2019157818 A JP2019157818 A JP 2019157818A JP 2019157818 A JP2019157818 A JP 2019157818A JP 7348492 B2 JP7348492 B2 JP 7348492B2
Authority
JP
Japan
Prior art keywords
data
value
file
machine language
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019157818A
Other languages
English (en)
Other versions
JP2021036370A (ja
Inventor
良夫 大内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2019157818A priority Critical patent/JP7348492B2/ja
Priority to US17/003,300 priority patent/US11537308B2/en
Publication of JP2021036370A publication Critical patent/JP2021036370A/ja
Application granted granted Critical
Publication of JP7348492B2 publication Critical patent/JP7348492B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/77Software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、情報処理システム、情報処理装置、情報処理プログラム、および情報処理方法に関する。
コンピュータで文字を表示するための文字コードには、ASCII(American Standard Code for Information Interchange)やEUC(Extended UNIX(登録商標) Code)などさまざまな種類がある。コンピュータのプログラムを作成するプログラマは、いずれかの文字コードにより処理手順を高級言語で記述し、ソースファイルを作成する。コンピュータは、コンパイラを用い、ソースファイル内の高級言語の命令を解釈して、ソースプログラムを機械語のオブジェクトファイルに変換する。
多数のプログラマが参加した大規模なシステム開発の場合、プログラマは、作成したソースファイルやオブジェクトファイルを、自身の使用するコンピュータからサーバへアップロードする。ファイルのアップロードには、FTP(File Transfer Protocol)などのファイル転送技術が利用できる。ファイル転送方式には、バイナリデータとして転送する方式と文字コード変換を伴うテキストデータ用の転送方式とがある。バイナリデータとしてファイルを転送した場合、コンピュータは、元のファイル内のビット単位のデータを変更せずに、そのままのデータを送信する。それに対して、文字コードの変換を伴う転送方式を用いると、送信元のコンピュータは、送信するファイル内の文字コードを、転送先のコンピュータで用いている文字コードに変換して送信する。ソースファイルのように文字コードが記述されたファイルの場合、文字コードの変換を伴う方式でファイル転送を行うことで、送信先のコンピュータにおいて、記述された文字列を正しく表示することができる。
コンピュータ間のファイル転送に関する技術としては、例えばクライアントからサーバに依頼したファイルの転送をチェックするファイル転送システムが提案されている。また、送信先装置に届いたファイルに欠損があるか否かを認識できる、FTPでファイルを送信する送信元装置が提案されている。
特開2005-182335号公報 特開2007-272490号公報
オブジェクトファイルのような機械語のファイルはバイナリデータとして転送するのが原則であるが、誤って、文字コード変換を伴うファイル転送方式で転送される場合がある。この場合、ファイル内の機械語の一部のデータが変換される可能性がある。例えば機械語のバイナリデータの一部が、文字コード変換を伴うファイル転送において変換対象となる文字コードと同じビット列となっていた場合、ファイル転送を行うコンピュータにより、該当部分が変換対象の文字コードと誤認され、変換されてしまう。以下、ファイル転送時に機械語のデータが変換されることを、機械語の破壊と呼ぶ。
ファイル転送時に機械語が破壊されると、転送されたファイルに含まれるプログラムは正常に実行することができない。しかも、機械語の破壊が原因でプログラムの実行が異常終了したときに発生するエラーはさまざまであり、ファイル転送時に機械語が破壊されたことをエラー内容から把握することは困難である。このとき、プログラム作成時の間違いを疑って、ソースファイルの内容(高級言語の文字列)を確認しても、誤った記述は見つからない。そのため機械語のファイルの内容(機械語のコード)を確認することとなる。機械語のコードは、人間にとっては難解であり、機械語のコードの人手による確認には非常に時間がかかる。すなわち、ファイル転送時に機械語が破壊された場合、そのことを把握するのに膨大な時間と手間がかかっている。
1つの側面では、本発明は、ファイル転送時の機械語の破壊の自動検知を可能とすることを目的とする。
1つの案では、以下に示す送信装置と受信装置とを含む情報処理システムが提供される。
送信装置は、生成部と送信部とを有する。生成部は、機械語を含む第1のデータに、第1のデータの転送時に破壊される可能性のある第1の機械語のデータと、転送時に破壊されない第2の機械語のデータとを追加して第2のデータを生成する。送信部は、第2のデータを送信する。
受信装置は、受信部と判定部とを有する。受信部は、第2のデータを受信する。判定部は、受信した第2のデータに含まれる第1の機械語のデータと、第2の機械語のデータとの比較結果に基づいて、第1のデータが破壊されているか否かを判定する。
1態様によれば、ファイル転送時の機械語の破壊の自動検知が可能となる。
第1の実施の形態に係る情報処理システムによる情報処理方法の一例を示す図である。 第2の実施の形態に係るシステム構成例を示す図である。 開発用コンピュータのハードウェアの一構成例を示す図である。 ファイル転送時におけるコード変換の有無の検知機構を実現するための機能を示すブロック図である。 オブジェクトファイルの一例を示す図である。 ランタイムモジュールの一例を示す図である。 ファイル転送手順の一例を示すシーケンス図である。 コンパイル処理の手順の一例を示すフローチャートである。 オブジェクトファイルの一例を示す図である。 オブジェクトファイル実行処理の手順の一例を示す図である。 バイナリモードで転送された場合の破壊検知処理の一例を示す図である。 ASCIIモードで転送された場合の破壊検知処理の一例を示す図である。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず第1の実施の形態について説明する。第1の実施の形態は、ファイル転送時の機械語の破壊の自動検知が可能な情報処理システムである。
図1は、第1の実施の形態に係る情報処理システムによる情報処理方法の一例を示す図である。図1には、送信装置1から受信装置3へのファイル転送時の機械語の破壊の自動検知を行うための情報処理方法が示されている。送信装置1と受信装置3とは、例えば情報処理装置である。送信装置1と受信装置3とは、ネットワーク2を介して接続されている。
送信装置1と受信装置3とが所定の処理を実行することで、ファイル転送時の機械語の破壊の自動検知が可能となる。例えば送信装置1は、ファイル転送時の機械語の破壊の自動検知のために送信装置1が実行する処理の手順が記述された情報処理プログラムを実行する。同様に受信装置3は、ファイル転送時の機械語の破壊の自動検知のために受信装置3が実行する処理の手順が記述された情報処理プログラムを実行する。
送信装置1は、記憶部1a、生成部1b、および送信部1cを有する。記憶部1aは、例えば送信装置1が有するメモリ、またはストレージ装置である。生成部1bは、例えば送信装置1が有するプロセッサ、または演算回路である。送信部1cは、例えば送信装置1が有する通信インタフェースである。
記憶部1aは、例えば元データ4と、元データ4に基づいて、生成部1bによって生成された第2のデータ5を記憶する。元データ4は、例えば高級言語で記述されたプログラムである。
生成部1bは、元データ4に基づいて、第2のデータ5を生成する。生成部1bは、例えば元データ4に示されるプログラムの命令を機械語に変換することで、第1のデータ5cを生成する。第1のデータ5cは、機械語のプログラムである。そして生成部1bは、機械語を含む第1のデータ5cに、第1のデータ5cの転送時に破壊される可能性のある第1の機械語のデータ5aと、転送時に破壊されない第2の機械語のデータ5bとを追加して第2のデータ5を生成する。第1の機械語のデータ5aは、例えば復帰コード「0x0a」を含むデータである。第2の機械語のデータ5bは、例えば複数のデータを含む。例えば生成部1bは、第1の値のデータと、第1の値との差が第1の機械語のデータ5aの値と等しくなる第2の値とを、第2の機械語のデータ5bに含める。第1の値と第2の値は、例えば、異なる文字コード体系であっても同じ文字コードが割り当てられている文字の文字コードである。第1の機械語のデータ5aが復帰コード「0x0a」の場合、第1の値が例えば半角「q」の文字コード「0x71」であれば、第2の値は半角「g」の文字コード「0x67」となる。
生成部1bは、データ転送により機械語が破壊されたかどうかの判定処理を、第2のデータ5に追加してもよい。例えば生成部1bは、判定処理「if(復帰コードの値0a≠(‘q’-‘g’))」を第2のデータ5に追加する。
送信部1cは、第2のデータ5を、ネットワーク2を介して受信装置3に送信する。この際、第2のデータ5は、ネットワーク2において、送信装置1と受信装置3以外の装置で中継される場合もある。そして第2のデータ5は、中継する装置によって、第2のデータ5内の所定のコード(ビット値の配列)が、他のコードに変換される場合がある。例えば復帰コード「0x0a」が、改行コード「0x0d」に変換されることがある。したがって、転送後の第2のデータ6は、転送前の第2のデータ5と同一であるとは限らない。
受信装置3は、受信部3a、記憶部3b、および判定部3cを有する。受信部3aは、例えば受信装置3が有する通信インタフェースである。記憶部3bは、例えば受信装置3が有するメモリ、またはストレージ装置である。判定部3cは、例えば受信装置3が有するプロセッサ、または演算回路である。
受信部3aは、ネットワーク2を介した転送時にコード変換が行われた可能性のある第2のデータ6を受信する。受信部3aは、受信した第2のデータ6を、例えば記憶部3bに格納する。
記憶部3bは、第2のデータ6を記憶する。なお第2のデータ6には、第1の機械語のデータ6a、第2の機械語のデータ6b、および第1のデータ6cが含まれる。
受信した第2のデータ6内の第1の機械語のデータ6aは、送信前の第2のデータ5内の第1の機械語のデータ5aに対応するデータである。データ転送時にコード変換が行われていなければ、第2のデータ6内の第1の機械語のデータ6aは、第2のデータ5内の第1の機械語のデータ5aと同じ値である。データ転送時にコード変換が行われている場合、第2のデータ6内の第1の機械語のデータ6aは、第2のデータ5内の第1の機械語のデータ5aと異なる値となる。
受信した第2のデータ6内の第2の機械語のデータ6bは、送信前の第2のデータ5内の第2の機械語のデータ5bに対応するデータである。データ転送時にコード変換が行われたか否かにかかわらず、第2のデータ6内の第2の機械語のデータ6bは、第2のデータ5内の第2の機械語のデータ5bと同じ値である。
受信した第2のデータ6内の第1のデータ6cは、送信前の第2のデータ5内の第1のデータ5cに対応するデータである。データ転送時にコード変換が行われていなければ、第2のデータ6内の第1のデータ6cは、第2のデータ5内の第1のデータ5cと同じ値である。データ転送時にコード変換が行われている場合、第2のデータ6内の第1のデータ6cは、第2のデータ5内の第1のデータ5cと一部が異なる可能性がある。
判定部3cは、第2のデータ6に含まれる第1の機械語のデータ6aと、第2の機械語のデータ6bとの比較結果に基づいて、第1のデータ6cが破壊されているか否かを判定する。例えば判定部3cは、第1の機械語のデータと、第2の機械語のデータに含まれる複数のデータに基づいて算出したデータとを比較して比較結果を得る。
例えば第2のデータ5には、第1の値と、第1の値との差が第1の機械語のデータ5aの値と等しくなる第2の値とが含まれる。この場合、判定部3cは、第2の機械語のデータ6bに含まれる第1の値と第2の値との差と、第1の機械語のデータ6aの値とを比較して、比較結果を得る。判定部3cは、このような判定処理を、例えば生成部1bによって第2のデータ5に追加された判定処理「if(復帰コードの値0a≠(‘q’-‘g’))」に基づいて実行することができる。
判定部3cは、例えば比較結果が不一致であれば、第1のデータ6cが破壊されていると判定する。また判定部3cは、例えば比較結果が一致していれば、第1のデータ6cが破壊されていないと判定する。判定部3cは、第1のデータ6cが破壊されていると判定した場合、例えば第2のデータ6に含まれる第1のデータ6cにおける機械語の命令の実行を抑止する。
判定部3cは、第1のデータ6cが破壊されていると判定した場合、データが破壊されたことを示すメッセージを出力してもよい。例えば判定部3cは、「FTPによって破壊されています」とのメッセージを表示し、第2のデータ6に基づく処理の実行を停止する。
このような情報処理システムによれば、第2のデータ5がネットワーク2を介して転送される間に、第2のデータ5のコード変換が行われた場合、コード変換による機械語のデータの破壊の有無が自動で検知される。例えば送信装置1では文字列の改行に復帰コード「0x0a」が使用されており、受信装置3では文字列の改行に改行コード「0x0d」が使用されている場合を想定する。このとき送信装置1から受信装置3へのデータ転送技術として、例えばFTPを利用することができる。FTPには、テキストデータを転送するためのASCIIモードと呼ばれる転送モードが存在する。
ASCIIモードでデータ転送を行うと、コード体系が異なる装置間でも転送されたテキストデータを読めるように、一部のコードが変換される。機械語のデータをASCIIモードで転送するべきではないが、データを中継する装置において誤ってASCIIモードが設定されていると、機械語のデータ内に変換対象のコードと同じビット列が異なる値に変換される。例えば復帰コード「0x0a」が改行コード「0x0d」に変換されてしまう。
そこで送信装置1の生成部1bは、第2のデータ5に、破壊される可能性のある第1の機械語のデータ5a(例えば「0x0a」)と、破壊されない第2の機械語のデータ5b(例えば「0x71」、「0x67」)とを含める。送信部1cから第2のデータ5が送信され、ネットワーク2を介して受信装置3が受信するとき、コード変換が行われていれば、第1の機械語のデータ5a(例えば「0x0a」)が別の値に(例えば「0x0d」)に変換される。
受信装置3では、判定部3cが、第2の機械語のデータ6bを用いた計算(例えば2つのコードの差分の計算)を行う。なお第2の機械語のデータ6bは、データ転送時にコード変換処理が行われても破壊されないデータであるため、意図した通りの計算が可能である。第2の機械語のデータ6bが「0x71」と「0x67」であれば、差分は「0x0a」である。判定部3cは、計算結果(例えば「0x0a」)と第1の機械語のデータ6a(例えば「0x0d」)とを比較する。データの転送中にコード変換が行われていれば、比較においてデータは一致しない。判定部3cは、データが不一致であれば、データの破壊があると判断する。またデータの転送中にコード変換が行われていなければ、比較においてデータは一致する。判定部3cは、データが一致すれば、データの破壊がないと判断する。
このようにしてデータ転送時のデータの破壊の有無の自動検知が可能となる。データ転送時のデータの破壊の有無が自動検知できることで、例えばデータ転送時に、誤ってASCIIモードで転送してしまった場合であっても、転送された第2のデータ6を用いた処理が正常に動作しない原因の究明が容易となる。
しかも、判定部3cは、機械語のデータの破壊の有無の判定において、データ転送時にコード変換処理が行われても破壊されない第2の機械語のデータ6bを用いている。そのため第1の機械語のデータ6aが、元の第1の機械語のデータ5aと異なる値に変換された場合であっても、第2の機械語のデータ6bは元の第2の機械語のデータ5bと同じ値のままである。ただし第2の機械語のデータ5bが転送時に破壊されないデータであるためには、第2の機械語のデータ5bの値として、第1の機械語のデータ5aと同じ値を用いることはできない。そのため判定部3cは、第2の機械語のデータ6bを用いた所定の計算により、第1の機械語のデータ5aと同じ値を算出することで、機械語のデータの破壊の有無を判定する。このように判定部3cが転送時に破壊されない第2の機械語のデータ6bを用いて機械語のデータの破壊の有無を判定することで、破壊の有無を確実に判定することができる。
またデータの破壊があると判定した場合に、判定部3cが、第1のデータ6cに含まれる機械語の命令の実行を抑止することで、受信装置3において意図しない処理が実行されてしまうことを抑止できる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、ソフトウェアの開発に使用するコンピュータシステムにおいて、機械語で記述されたプログラムファイルを、FTPのASCIIモードで誤って転送したことを、容易に検出できるようにするものである。
図2は、第2の実施の形態に係るシステム構成例を示す図である。図2の例では、ネットワーク20を介して開発用コンピュータ100、ファイル管理用コンピュータ200、および運用環境コンピュータ300が接続されている。
開発用コンピュータ100は、プログラマがソフトウェアの開発に使用するコンピュータである。プログラマは、開発用コンピュータ100を用いて、COBOL、C++などの高級言語でプログラムを記述し、ソースファイルを作成する。開発用コンピュータ100は、作成されたソースファイルをコンパイルし、機械語で記述されたオブジェクトファイルを生成する。
ファイル管理用コンピュータ200は、システム内で作成されたファイル(ソースファイルやオブジェクトファイルを含む)の管理に使用するコンピュータである。例えばソフトウェア開発の管理者は、プログラマが作成したソースファイルまたはオブジェクトファイルのダウンロードの指示を、ファイル管理用コンピュータ200に入力する。ファイル管理用コンピュータ200は、指示に従って、ソースファイルまたはオブジェクトファイルを、FTPを用いて、開発用コンピュータ100から取得する。
管理者は、ダウンロードしたオブジェクトファイルを運用環境で実行させる場合、オブジェクトファイルの運用環境コンピュータ300へのアップロード指示を、ファイル管理用コンピュータ200に入力する。ファイル管理用コンピュータ200は、指示に従って、オブジェクトファイルを、FTPを用いて、運用環境コンピュータ300に送信する。なおファイル管理用コンピュータ200は、オブジェクトファイルの転送指示に応じて、オブジェクトファイルの開発用コンピュータ100からの取得とオブジェクトファイルの運用環境コンピュータ300への送信とを連続して行うこともできる。
運用環境コンピュータ300は、作成されたオブジェクトファイルの実行環境を有するコンピュータである。例えば運用環境コンピュータ300は、オブジェクトファイルの実行に利用するランタイムモジュールを有している。
次にコンピュータのハードウェア構成について説明する。
図3は、開発用コンピュータのハードウェアの一構成例を示す図である。開発用コンピュータ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、開発用コンピュータ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、開発用コンピュータ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
開発用コンピュータ100は、以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なおファイル管理用コンピュータ200と運用環境コンピュータ300も、開発用コンピュータ100と同様のハードウェアで実現することができる。また、第1の実施の形態に示した送信装置1、および受信装置3も、図3に示した開発用コンピュータ100と同様のハードウェアにより実現することができる。
開発用コンピュータ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。開発用コンピュータ100に実行させる処理内容を記述したプログラムは、さまざまな記録媒体に記録しておくことができる。例えば、開発用コンピュータ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また開発用コンピュータ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
運用環境コンピュータ300も開発用コンピュータ100と同様に、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。
以上のような構成のシステムを用いて、ソフトウェアの開発が行われる。例えば開発用コンピュータ100でプログラムが作成され、作成されたプログラムが、ファイル管理用コンピュータ200によって運用環境コンピュータ300に転送される。そして運用環境コンピュータ300が、作成されたソフトウェアを実行し、ソフトウェアが設計通り動作するかどうかの確認が行われる。
このように、開発用コンピュータ100や運用環境コンピュータ300とは別に、ファイル管理用コンピュータ200がある場合において、すべてのコンピュータのOSの文字コードが同一であるとは限らない。例えば開発用コンピュータ100と運用環境コンピュータ300とがUNIX(登録商標)系OSのシステムであり、ファイル管理用コンピュータ200がWINDOWS(登録商標)系のOSの場合がある。UNIX(登録商標)系のOSでは、文字コードとして、EUCが用いられていることが多い。WINDOWS(登録商標)系のOSでは、文字コードとしてShift_JISを用いていることが多い。
例えばファイル管理に便利なアプリケーションソフトウェアが、WINDOWS(登録商標)系のOSにのみ対応している場合がある。そのため、開発用コンピュータ100と運用環境コンピュータ300がUNIX(登録商標)系のOSであったとしても、WINDOWS(登録商標)系のOSで動作するファイル管理用コンピュータ200によってファイル管理を行うのが、ユーザにとって便利なこともある。
第2の実施の形態では、開発用コンピュータ100や運用環境コンピュータ300との文字コードはEUCであり、ファイル管理用コンピュータ200の文字コードはShift_JISであるものとする。
またコンピュータ間のファイル転送には、FTPが利用されることが多い。FTPには、OSの文字コードが不統一な場合を想定し、転送モードとしてバイナリモードとASCIIモードとが用意されている。バイナリモードは、バイナリファイル転送用のモードである。バイナリモードでは、元のファイル内のバイナリデータに変更を加えずにデータ転送が行われる。ASCIIモードは、テキストファイル転送用のモードである。ASCIIモードでは、ファイル転送先の環境に合わせて文字コードを変換してデータ転送が行われる。
開発用コンピュータ100で機械語に変換されたオブジェクトファイルを、開発用コンピュータ100からファイル管理用コンピュータ200を介して運用環境コンピュータ300へFTPで転送する際、本来はバイナリモードで転送するべきである。ところが、ユーザの操作誤操作によって、ASCIIモードで転送される場合がある。機械語のファイルをASCIIモードで転送すると、オブジェクトファイルに含まれる、改行コードなどの所定の文字コードと一致する機械語のコードが別のコードに変換されてしまう。その結果、機械語が破壊される。
運用環境コンピュータ300における機械語のファイルの破壊検知機構として、例えばELF(Executable and Linkable Format)ヘッダの破壊の検知機構がある。ELFヘッダは、コンパイルされたファイルの先頭に設けられる、ファイルの管理情報である。ELFヘッダのデータ構造が破壊されている場合、運用環境コンピュータ300は、機械語が破壊されていることを検知できる。しかし、オブジェクトファイル内の機械語のコードの一部が、意図せずに変換された場合、その変換による機械語の破壊は、ELFヘッダの破壊検知では検知できない。
機械語のコードが破壊されたままでオブジェクトファイルを実行すると、sigsegv(アドレス参照例外)や演算結果誤りなど、どのようなトラブルが発生するか分からない。通常、トラブル事象のsigsegvや演算結果誤りの99%以上は、プログラム記述の誤りが原因である。そのため通常は、ユーザは、プログラムのソースコードが正しいかを確認する。しかし、オブジェクトファイルの転送時のコードの変換が原因の場合、ソースコードを確認してもプログラムの誤りが見つからない。そこでユーザは、コンパイラが生成する翻訳リスト(機械語のリスト)と、mdbコマンド(デバッガ)を用いて機械語のファイルから取り出した機械語とを、1バイトずつ目視で比較することとなる。例えばユーザは、比較対象の機械語の何千万のバイト数について、すべてを目視で比較することとなる。そのため、原因であるFTP転送による機械語の破壊を見つけるのに非常に時間がかかる。
そこで第2の実施の形態に係るシステムでは、ファイル転送時におけるコード変換の有無を自動検知することが可能な検知機構を設けられている。
図4は、ファイル転送時におけるコード変換の有無の検知機構を実現するための機能を示すブロック図である。開発用コンピュータ100は、記憶部110、エディタ120、およびコンパイラ130を有する。
記憶部110は、ソースファイル111、オブジェクトファイル112などを記憶する。
ソースファイル111は、高級言語で記述されたプログラムファイルである。ソースファイル111は、例えば、プログラマによって、エディタなどのプログラミング用のソフトウェアを用いて作成される。
オブジェクトファイル112は、ソースファイル111をコンパイルすることで生成された、機械語のプログラムファイルである。オブジェクトファイル112には、破壊検知用データが含まれている。破壊検知用データは、機械語の破壊の検知を目的としてオブジェクトファイル112に埋め込まれる情報である。破壊用検知データには、FTPによるオブジェクトファイル112の転送時に文字コードの変換が行われる場合に、変換されるコードと、変換されないコードとが含まれる。
エディタ120は、高級言語による命令文の入力を受け付け、ソースファイル111を生成する。エディタ120は、生成したソースファイル111を記憶部110に格納する。
コンパイラ130は、ソースファイル111のコンパイルを行う。例えばコンパイラ130は、ソースファイル111に記述された高級言語の命令を解釈し、その命令をコンピュータに実行させるための機械語の命令を生成する。コンパイラ130は、生成した機械語の命令をオブジェクトファイル112に書き込む。またコンパイラ130は、オブジェクトファイル112内の所定の位置に、破壊検知用データを挿入する。
送信部140は、ファイル管理用コンピュータ200からの要求に従って、ソースファイル111またはオブジェクトファイル112をファイル管理用コンピュータ200に送信する。
なお開発用コンピュータ100は、第1の実施の形態に示した送信装置1の一例である。記憶部110は、第1の実施の形態に示した記憶部1aの一例である。コンパイラ130は、第1の実施の形態に示した生成部1bの一例である。送信部140は、第1の実施の形態に示した送信部1cの一例である。
ファイル管理用コンピュータ200は、ファイル管理部210を有する。ファイル管理部210は、ソフトウェアの開発過程で生成されたソースファイル111やオブジェクトファイル112を管理する。例えばファイル管理部210は、ユーザからの指示に従って、開発用コンピュータ100からオブジェクトファイル112を取得する。ファイル管理部210は、取得したオブジェクトファイル112を運用環境コンピュータ300に転送することもできる。ファイル管理部210は、開発用コンピュータ100からのオブジェクトファイル112の取得や運用環境コンピュータ300へのオブジェクトファイル112の送信を、FTPによって実現する。
運用環境コンピュータ300は、受信部310、記憶部320、および実行部330を有する。
受信部310は、ファイル管理用コンピュータ200からオブジェクトファイル321を受信する。受信部310は、受信したオブジェクトファイル321を記憶部320に格納する。
記憶部320は、オブジェクトファイル321とランタイムモジュール322を記憶する。オブジェクトファイル321は、ファイル管理用コンピュータ200を介して、開発用コンピュータ100から送られた機械語のプログラムファイルである。ランタイムモジュール322は、オブジェクトファイル321の実行に利用する機械語のプログラムファイルである。
実行部330は、ユーザからの指示に従ってオブジェクトファイル321を実行する。なお、実行部330は、オブジェクトファイル321内の命令においてランタイムモジュール322の呼び出しがあると、ランタイムモジュール322を実行する。
なお運用環境コンピュータ300は、第1の実施の形態に示した受信装置3の一例である。受信部310は、第1の実施の形態に示した受信部3aの一例である。記憶部320は、第1の実施の形態に示した記憶部3bの一例である。実行部330は、第1の実施の形態に示した判定部3cの一例である。
図4に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に、破壊検知用データが書き込まれたオブジェクトファイルについて説明する。
図5は、オブジェクトファイルの一例を示す図である。図5には、オブジェクトファイル112をバイナリエディタで表示した例を示している。各行の最初の項目がデータのファイル内での位置(ファイルの先頭から何バイト目か)を示している。また各行の2つ目の項目が、該当する位置に記述されているバイナリデータを16進数で表した値である。すなわち、2つめの項目に示される値が、オブジェクトファイル112に含まれる実際のバイナリデータである。各行の3つ目と4つ目の項目は、バイナリエディタによって解釈された各行に示される命令の意味である。
例えばオブジェクトファイル112には、16進数で240バイト目(位置「00000240」)から「71675144」と記述されている。これはFTPのASCIIモードでのファイル転送時に変換されない半角文字‘q’(71)、‘g’(67)、‘Q’(51)、‘D’(44)それぞれの文字コードである。例えば、半角の‘q’の文字コードはEUCでもShift_JISでも「71」であり、ASCIIモードでファイル転送をしてもコード変換は行われない。
オブジェクトファイル112の16進数で244バイト目(位置「00000244」)から「0a0d0000」と記述されている。これはFTPのASCIIモードでのファイル転送時に変換される改行(LF:Line Feed)コード(0a)と復帰(CF:Carriage Return)コード(0d)である。
位置「00000240」の「71675144」と位置「00000244」の「0a0d0000」とが、オブジェクトファイル112に書き込まれた破壊検知用データである。
オブジェクトファイル112の16進数で28Dバイト目(位置「0000028D」)から「FF1504000000」と記述されている。これはプログラム入り口での初期化処理を行うランタイムの呼び出し命令である。呼び出されるランタイムは、ランタイムモジュール322に含まれるプログラムである。
このようなオブジェクトファイル112を生成することにより、オブジェクトファイル112がFTP転送されたときに機械語の破壊の有無を検出することができる。機械語の破壊の有無の検出の手順は、ランタイムモジュール322内に記述されている。
図6は、ランタイムモジュールの一例を示す図である。例えばランタイムモジュール322には、「If(‘q'-'a'!=lf||‘Q'-'D'!=cr)」という分岐命令が含まれている。これは、「‘q'-'a'!=lf」と「‘Q'-'D'!=cr」とのいずれか一方が満たされたとき、IF文の条件が真となる。「‘q'-'a'!=lf」は、半角「q」の文字コードから半角「a」の文字コードを減算した結果が「lf」のコードと一致しないという条件である。このときの「lf」のコードは、オブジェクトファイル112の位置「00000244」から1バイトのデータである。「‘Q'-'D'!=cr」は、半角「Q」の文字コードから半角「D」の文字コードを減算した結果が「cr」のコードと一致しないという条件である。このときの「cr」のコードは、オブジェクトファイル112の位置「00000244」の2バイト目のデータである。
ランタイムモジュール322では、IF文の条件が真の場合には、「fprintf()」により、機械語が破壊されたことを示すメッセージを表示し、「abort()」により、オブジェクトファイルの実行を中止することが記載されている。
運用環境コンピュータ300では、実行部330が、このようなランタイムモジュール322を用いて、FTPにより転送されたオブジェクトファイル321を実行する際の初期化処理を行う。その結果、オブジェクトファイル321の機械語がファイル転送時に破壊された場合、破壊されていることが初期化処理時に検出され、オブジェクトファイル321の実行が中止される。
以下、ファイル転送に伴う機械語の破壊検知処理の手順について詳細に説明する。
図7は、ファイル転送手順の一例を示すシーケンス図である。開発用コンピュータ100において、ユーザがエディタ120に高級言語での命令文を入力すると、エディタ120がソースファイル111を生成する(ステップS101)。その後、ユーザからのコンパイルの指示に応じて、コンパイラ130がソースファイル111をコンパイルし、機械語のオブジェクトファイル112を生成する(ステップS102)。この際、コンパイラ130は、オブジェクトファイル112内に破壊検知用データを含める。コンパイル処理の詳細は後述する(図8参照)。
その後、ユーザは、ファイル管理用コンピュータ200のファイル管理部210に対して、開発用コンピュータ100から運用環境コンピュータ300への、オブジェクトファイル112の転送指示を入力する。この際、ユーザは、FTPによるファイル転送に使用するモードを、バイナリモードにするのかASCIIモードにするのかを指定する。転送指示の入力に応じて、ファイル管理部210は、オブジェクトファイルの取得要求を開発用コンピュータ100に送信する(ステップS103)。すると開発用コンピュータ100の送信部140が、オブジェクトファイル112をFTPにより送信する(ステップS104)。
ファイル管理用コンピュータ200のファイル管理部210は、オブジェクトファイル112を受信する(ステップS105)。次にファイル管理部210は、ファイル転送のモードがASCIIモードか否かを判断する(ステップS106)。ファイル管理部210は、ASCIIモードであれば、オブジェクトファイル112のコード変換を行う(ステップS107)。例えばファイル管理部210は、オブジェクトファイル112から復帰コード(LF)に一致するコードを検索し、該当するコードを、ファイル管理用コンピュータ200のOSにおける改行コード(CR+LF)に変換する。
なおファイル管理部210は、ファイル転送のモードがバイナリモードであれば、コード変換処理(ステップS107)をスキップする。その後、ファイル管理部210は、オブジェクトファイル321を運用環境コンピュータ300に送信する(ステップS108)。
運用環境コンピュータ300では、受信部310がオブジェクトファイル321を受信する(ステップS109)。その後、ユーザからのオブジェクトファイル321の実行指示が入力されると、実行部330が、オブジェクトファイル321を実行する(ステップS110)。オブジェクトファイル実行処理の詳細は後述する(図10参照)。
図7に示すように、ファイル管理部210は、オブジェクトファイル112の転送時にASCIIモードが指定されていると、コード変換を行う。しかしオブジェクトファイル112は機械語で記述されており、バイナリモードで転送するべきファイルである。オブジェクトファイル112がASCIIモードで転送されることで、オブジェクトファイル112内のコードが書き換えられ、機械語が破壊される。このような機械語の破壊を検知するため、コンパイル時に、オブジェクトファイル112に破壊検知用データが書き込まれる。
図8は、コンパイル処理の手順の一例を示すフローチャートである。以下、図8に示す処理をステップ番号に沿って説明する。
[ステップS121]コンパイラ130は、ソースファイル111を記憶部110から読み込む。
[ステップS122]コンパイラ130は、オブジェクトファイル112に破壊検知用データを書き込む。
[ステップS123]コンパイラ130は、ソースファイル111内のソースコードを機械語に変換し、オブジェクトファイル112に書き込む。
[ステップS124]コンパイラ130は、オブジェクトファイル112を記憶部110に格納する。
このようにして、コンパイラ130によって、破壊検知用データを組み込んだオブジェクトファイル112が生成される。
図9は、オブジェクトファイルの一例を示す図である。図9に示すようにオブジェクトファイル112には、予め用意された破壊検知用データ112aが含まれている。オブジェクトファイル112には、破壊検知用データ112aの後に、ソースファイル111に基づいて生成された機械語のプログラムである実プログラム112bが書き込まれている。実プログラム112bの前に破壊検知用データ112aが書き込まれているため、オブジェクトファイル112の実行時には、破壊検知用データ112aに示される命令の方が、実プログラム112bよりも先に実行されることとなる。
図10は、オブジェクトファイル実行処理の手順の一例を示す図である。以下、図10に示す処理をステップ番号に沿って説明する。
[ステップS131]実行部330は、オブジェクトファイル321の実行指示が入力されると、オブジェクトファイル321の先頭から命令の実行を開始する。
[ステップS132]実行部330は、初期化処理用のランタイムの呼び出し命令に応じて、ランタイムモジュール322を呼び出す。
[ステップS133]実行部330は、ランタイムモジュール322に基づいて、オブジェクトファイル321の位置「00000240」に記載されている「71675144」に基づいて、引き算「‘q’-‘g’=0x0a」と「‘Q’-‘D’=0x0d」とを行う。すなわち、半角の「q」の16進数のコード「71」から半角の「g」の16進数のコード「67」を減算すると、16進数の「0a」となる。同様に半角の「Q」の16進数のコード「51」から半角の「D」の16進数のコード「44」を減算すると、16進数の「0d」となる。
[ステップS134]実行部330は、位置「00000244」の値と減算結果「0a0d0000」とが一致するか否かを判断する。実行部330は、一致すれば処理をステップS135に進める。また実行部330は、一致しなければ処理をステップS136に進める。
[ステップS135]実行部330は、オブジェクトファイル321内の未実行のプログラム(実プログラム112bを含む)を実行する。実行部330は、オブジェクトファイル321内のすべてのプログラムの実行が終了すると、オブジェクト実行処理を終了する。
[ステップS136]実行部330は、FTP転送による機械語の破壊の可能性を示すメッセージを出力する。
[ステップS137]実行部330は、オブジェクトファイル321内の未実行のプログラム(実プログラム112bを含む)の実行を中断し、オブジェクト実行処理を終了する。
このようにして、オブジェクトファイル321の機械語の破壊の有無が検知される。以下、図11、図12を参照して、バイナリモードでの転送時とASCIIモードでの転送時との破壊検知処理の違いを説明する。
図11は、バイナリモードで転送された場合の破壊検知処理の一例を示す図である。ファイル管理用コンピュータ200において、オブジェクトファイル112がバイナリモードで転送された場合、転送時にコードの変換は行われない。そのため、転送前のオブジェクトファイル112の破壊検知用データ112aに含まれる復帰コード「0a」や改行コード「0d」は、転送後のオブジェクトファイル321の破棄検知用データ321aにおいてもそのままである。転送前のオブジェクトファイル112の実プログラム112bに復帰コードと一致する「0a」が含まれている場合も、そのコードは転送後のオブジェクトファイル321の実プログラム321bにおいてもそのままである。
運用環境コンピュータ300の実行部330は、引き算「‘q’-‘g’=0x0a」と「‘Q’-‘D’=0x0d」により、復帰コード「0a」と改行コード「0d」を生成する(ステップS201)。そして実行部330は、減算により生成したコード「0a0d0000」と、オブジェクトファイル321内の位置「00000244」の値「0a0d0000」とを比較する(ステップS202)。図11の例では、比較において一致するため、実行部330は、オブジェクトファイル321内の残りのプログラムを実行する(ステップS203)。
図12は、ASCIIモードで転送された場合の破壊検知処理の一例を示す図である。ファイル管理用コンピュータ200において、オブジェクトファイル112がASCIIモードで転送された場合、転送時にコードの変換が行われる。そのため、転送前のオブジェクトファイル112の破壊検知用データ112aに含まれる復帰コード「0a」は転送後のオブジェクトファイル323の破壊検知用データ323aでは「0d0a」に変換されている。転送前のオブジェクトファイル112の実プログラム112bに復帰コードと一致する「0a」が含まれている場合も、そのコードは転送後のオブジェクトファイル323の実プログラム323bで「0d0a」となっている。
運用環境コンピュータ300の実行部330は、引き算「‘q’-‘g’=0x0a」と「‘Q’-‘D’=0x0d」により、復帰コード「0a」と改行コード「0d」を生成する(ステップS211)。そして実行部330は、減算により生成したコード「0a0d0000」と、オブジェクトファイル323内の位置「00000244」の値「0d0a0d00」とを比較する(ステップS212)。図12の例では、比較において不一致となる。そのため、実行部330は、オブジェクトファイル323内の残りのプログラムを実行せずにエラー表示を行う(ステップS213)。
例えば運用環境コンピュータ40の画面には、「プログラム‘A’がFTPによるASCII転送で変換され壊れています。バイナリ転送をしなおしてください」というメッセージ41が表示される。
このようにして、ファイル転送時に生じた機械語の破壊を自動で検知することができる。その結果、機械語が破壊されたことによるトラブルの解析が容易となる。
〔その他の実施の形態〕
第2の実施の形態では、EUCのコード体系のコンピュータとShift_JISのコード体系のコンピュータとの間のファイル転送時に生じる機械語の破壊検知の例を示したが、コード体系は一例であり、他のコード体系のコンピュータにも同様に適用できる。
また第2の実施の形態では、ファイル管理用コンピュータ200がコード変換を行ったことで機械語が破壊されているが、他のコンピュータが機械語を破壊する場合もある。例えば開発用コンピュータ100におけるファイル送信用のソフトウェアに誤った設定がされており、開発用コンピュータ100がオブジェクトファイルの機械語を破壊する場合もあり得る。また運用環境コンピュータ300におけるファイル受信用のソフトウェアに誤った設定がされており、運用環境コンピュータ300がオブジェクトファイルの機械語を破壊する場合もあり得る。
第2の実施の形態では、運用環境コンピュータ300に予め用意されたランタイムモジュール322に破壊検知処理の手順が記述されているが、破壊検知処理の手順をオブジェクトファイル112内で記述することもできる。例えばコンパイラ130は、ソースファイル111をコンパイルする際に、破壊検知処理の手順を示す機械語のプログラムをオブジェクトファイル112に追加することができる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 送信装置
1a,3b 記憶部
1b 生成部
1c 送信部
2 ネットワーク
3 受信装置
3a 受信部
3c 判定部
4 元データ
5c,6c 第1のデータ
5,6 第2のデータ
5a,6a 第1の機械語のデータ
5b,6b 第2の機械語のデータ

Claims (7)

  1. 機械語を含む第1のデータに、前記第1のデータの転送時に破壊される可能性のある値の第1の文字コードと、転送時に破壊されない値の第2の文字コードとを追加して第2のデータを生成する生成部と、
    前記第2のデータを含むファイルを送信する送信部と、
    を有する送信装置と、
    前記ファイルを受信する受信部と、
    受信した前記ファイル内の前記第2のデータに含まれる前記第1の文字コードの値と、前記第2の文字コードの値との比較結果に基づいて、前記第1のデータが破壊されているか否かを判定する判定部と、
    を有する受信装置と、
    を含むことを特徴とする情報処理システム。
  2. 前記送信装置の前記生成部は、機械語を含む前記第1のデータに、前記第1の文字コードと、複数の前記第2の文字コードとを追加して前記第2のデータを生成し、
    前記受信装置の前記判定部は、前記第1の文字コードの転送後の値と、複数の前記第2の文字コードに基づいて算出した値とを比較して前記比較結果を得る、
    ことを特徴とする請求項1に記載の情報処理システム。
  3. 前記送信装置の前記生成部は、第1の値の前記第1の文字コードと、第2の値の前記第2の文字コードと、前記第2の値との差が前記第1の値と等しくなる第3の値の前記第2の文字コードとを、前記第2のデータに含め、
    前記受信装置の前記判定部は、複数の前記第2の文字コードの前記第2の値と前記第3の値との差と、前記第1の文字コードの転送後の第4の値とを比較して、前記比較結果を得る、
    ことを特徴とする請求項2に記載の情報処理システム。
  4. 前記受信装置の前記判定部は、前記第1のデータが破壊されていると判定した場合、前記第2のデータに含まれる前記第1のデータにおける機械語の命令の実行を抑止する、
    請求項1ないし3のいずれかに記載の情報処理システム。
  5. 機械語を含む第1のデータに、前記第1のデータの転送時に破壊される可能性のある第1の値の第1の文字コードと、転送時に破壊されない第2の値の第2の文字コードと、転送時に破壊されず、前記第2の値との差が前記第1の値と等しくなる第3の値の第3の文字コードとを追加して第2のデータを生成する生成部と、
    前記第2のデータを含むファイルを送信する送信部と、
    を有することを特徴とする情報処理装置。
  6. コンピュータに、
    機械語を含む第1のデータに、前記第1のデータの転送時に破壊される可能性のある第1の値の第1の文字コードと、転送時に破壊されない第2の値の第2の文字コードと、転送時に破壊されず、前記第2の値との差が前記第1の値と等しくなる第3の値の第3の文字コードとを追加して第2のデータを生成し、
    前記第2のデータを含むファイルを送信する、
    処理を実行させることを特徴とする情報処理プログラム。
  7. コンピュータが、
    機械語を含む第1のデータに、前記第1のデータの転送時に破壊される可能性のある第1の値の第1の文字コードと、転送時に破壊されない第2の値の第2の文字コードと、転送時に破壊されず、前記第2の値との差が前記第1の値と等しくなる第3の値の第3の文字コードとを追加して第2のデータを生成し、
    前記第2のデータを含むファイルを送信する、
    ことを特徴とする情報処理方法。
JP2019157818A 2019-08-30 2019-08-30 情報処理システム、情報処理装置、情報処理プログラム、および情報処理方法 Active JP7348492B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019157818A JP7348492B2 (ja) 2019-08-30 2019-08-30 情報処理システム、情報処理装置、情報処理プログラム、および情報処理方法
US17/003,300 US11537308B2 (en) 2019-08-30 2020-08-26 Information processing system, information processing device, storage medium, and information processing method of detecting destruction of data due to file transfer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019157818A JP7348492B2 (ja) 2019-08-30 2019-08-30 情報処理システム、情報処理装置、情報処理プログラム、および情報処理方法

Publications (2)

Publication Number Publication Date
JP2021036370A JP2021036370A (ja) 2021-03-04
JP7348492B2 true JP7348492B2 (ja) 2023-09-21

Family

ID=74682267

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019157818A Active JP7348492B2 (ja) 2019-08-30 2019-08-30 情報処理システム、情報処理装置、情報処理プログラム、および情報処理方法

Country Status (2)

Country Link
US (1) US11537308B2 (ja)
JP (1) JP7348492B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116561068B (zh) * 2023-06-30 2023-10-17 山东万里红信息技术有限公司 一种自动销毁介质的数字化管理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366413A (ja) 2001-06-04 2002-12-20 Matsushita Electric Ind Co Ltd ファイルの破壊検出方法
JP2007272490A (ja) 2006-03-31 2007-10-18 Nomura Research Institute Ltd Ftpでファイルを送信する送信元装置
US20130191457A1 (en) 2012-01-24 2013-07-25 International Business Machines Corporation Automatic Determining of File Transfer Mode

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0314064A (ja) * 1989-06-12 1991-01-22 Fujitsu Ltd コード変換処理方式
US7003534B2 (en) * 2002-11-18 2006-02-21 Innopath Software, Inc. Generating difference files using module information of embedded software components
JP4049740B2 (ja) 2003-12-18 2008-02-20 富士通株式会社 ファイル転送結果のチエック方法、ファイル転送システム及びそのクライアント端末
US9176803B2 (en) * 2006-08-14 2015-11-03 International Business Machines Corporation Collecting data from a system in response to an event based on an identification in a file of the data to collect
US10514909B2 (en) * 2017-03-29 2019-12-24 Technion Research & Development Foundation Limited Similarity of binaries
US20200082080A1 (en) * 2018-09-12 2020-03-12 Blackberry Limited Binary risk evaluation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002366413A (ja) 2001-06-04 2002-12-20 Matsushita Electric Ind Co Ltd ファイルの破壊検出方法
JP2007272490A (ja) 2006-03-31 2007-10-18 Nomura Research Institute Ltd Ftpでファイルを送信する送信元装置
US20130191457A1 (en) 2012-01-24 2013-07-25 International Business Machines Corporation Automatic Determining of File Transfer Mode

Also Published As

Publication number Publication date
US11537308B2 (en) 2022-12-27
JP2021036370A (ja) 2021-03-04
US20210064266A1 (en) 2021-03-04

Similar Documents

Publication Publication Date Title
US9910743B2 (en) Method, system and device for validating repair files and repairing corrupt software
US7571355B2 (en) Product support connected error reporting
TWI465902B (zh) 用於編碼錯誤降低之契約程式規劃
US7614044B2 (en) Attempting runtime retranslation of unresolvable code
US7818729B1 (en) Automated safe secure techniques for eliminating undefined behavior in computer software
US8285662B2 (en) Framework for delta analysis during automated builds
US20070256069A1 (en) Dependency-based grouping to establish class identity
US20130227519A1 (en) Methods and systems for parsing data objects
US20080120595A1 (en) System and method for hot code replace
US8516505B2 (en) Cross-platform compatibility framework for computer applications
US6189139B1 (en) INF development environment
US8104049B2 (en) Accessing a compatible library for an executable
US10942718B2 (en) Systems and/or methods for type inference from machine code
US20140013298A1 (en) Auto generation and linkage of source code to test cases
JP6179331B2 (ja) ログ出力条件設定プログラム、装置、および方法
WO2014197239A1 (en) Automatic mediation of resource access in mobile applications
US8615740B2 (en) Self-fixing executables using virtual function types
CN112419057A (zh) 智能合约的日志生成及保存方法、装置、设备和存储介质
JP7348492B2 (ja) 情報処理システム、情報処理装置、情報処理プログラム、および情報処理方法
US20100229163A1 (en) Method for modifying the assembly output of a compiler
CN111258802A (zh) 捕获应用程序崩溃信息的方法及相关设备
US20050289525A1 (en) Extensible command line parsing
US8825708B1 (en) Program language binding generation for system interfaces
US7631302B2 (en) System and method for validation of arguments provided to an application
CN103250136B (zh) 用于验证运行时引用的方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220517

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230428

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230808

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230821

R150 Certificate of patent or registration of utility model

Ref document number: 7348492

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150