JP2006318464A - 実行可能コードのコピーについての固有の識別を生成する方法及びその管理 - Google Patents

実行可能コードのコピーについての固有の識別を生成する方法及びその管理 Download PDF

Info

Publication number
JP2006318464A
JP2006318464A JP2006129135A JP2006129135A JP2006318464A JP 2006318464 A JP2006318464 A JP 2006318464A JP 2006129135 A JP2006129135 A JP 2006129135A JP 2006129135 A JP2006129135 A JP 2006129135A JP 2006318464 A JP2006318464 A JP 2006318464A
Authority
JP
Japan
Prior art keywords
compiled
data structure
file
data
executable
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.)
Pending
Application number
JP2006129135A
Other languages
English (en)
Inventor
Bradley E Vernon
イー ヴァーノン ブラッドレー
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.)
Xerox Corp
Original Assignee
Xerox Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xerox Corp filed Critical Xerox Corp
Publication of JP2006318464A publication Critical patent/JP2006318464A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/16Program or content traceability, e.g. by watermarking

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ソフトウェア・コピー元の識別を可能にする。
【解決手段】(a)ソース・コードをコンパイルし第1のデータ構造を有する実行可能ファイルを生成しコンパイルされる度に第1のデータ構造が実現され、(b)コンパイルされた実行可能ファイル内の所定数のデータ要素の位置を再構成し第1のデータ構造とは異なる第2のデータ構造を有する実行可能ファイルを生成し、(c)再構成位置に従ってファイル内のアドレス・データを編集し第1のデータ構造を有するコンパイルされた実行可能ファイルと同じ方法で機能する第2のデータ構造を有する実行可能ファイルを生成する、ステップを含む方法。
【選択図】図5

Description

本発明発明は、例えば、実行可能コードのコピーについての固有の識別を生成する方法及びその管理に関する。
ソフトウェアの著作権侵害は、重要な問題である。人々がソフトウェア及び他の類似した電子ファイルを違法にコピーするのを防止することは非常に困難である。この問題の一部は、ソフトウェア又は電子ファイルの特定のコピーを固有に識別することの難しさである。ここに説明されるのは、ほぼ消去不能な方法で、ソフトウェア・ファイルのコピーを固有に識別する方法である。
ソフトウェアが販売されると、ソフトウェアは、CD−ROM(又は類似したディスク・ベース技術)或いは電子ファイルのダウンロードを介して配布することができる。オペレーティング・システム又は主要アプリケーションのような大量生産品があるときには、CD−ROMを用いることができる。電子ファイルのダウンロードを用いて、更新又はパッチを配布することができる。場合によっては、電子ダウンロードを介して、アプリケーション全体を配布することもできる。
ソフトウェア・コードが、デジタル・コンピュータ上で実行できる形態に準備又はコンパイルされるとき、該ソフトウェア・コードは、実行可能ソフトウェア・ファイルに変換される。実行可能ソフトウェア・ファイルの例が、図1に示される。
図1に示されるように、従来の実行可能ソフトウェア・ファイルは、データ・セクション100及びコード・セクション200を含む。データ・セクション100は、データ位置110、120、130、及び140を含む。コード・セクション200内の命令210、220、230、及び240によって、データ位置110、120、130、及び140を参照することができる。
従来より、コード・セクション200は、サブルーチン300及び310も含む。コード・セクション200内のサブルーチン300及び310は、オペランド1100、1200、1300、及び1400内に格納されたアドレスに配置されたデータについての操作を行うために、それぞれオペランド1100、1200、1300、及び1400を通してアドレス位置を参照できる命令210、220、230、及び240から構成される。より具体的には、図1に示されるように、オペランド1100、1200、1300、及び1400は、それぞれデータ位置110、120、130、及び140についてのアドレス値を格納する。命令210、220、230、及び240は、これらのサブルーチンを実行させるために、他のサブルーチンの開始アドレスを参照することもできる。
従来より、ソフトウェア・ファイルの各要素は、そのソフトウェア・ファイル内の特定の位置にある。このことは、上述の要素の各々を異なる位置で示すことによって、図1に象徴される。実行のためにデジタル・コンピュータのメモリにロードされた後も、実行可能ソフトウェア・ファイル内のソフトウェア・ファイルの中の他の品目に対する各品目の相対的位置は、同じままである。アドレス110、120、130、及び140の各々は、1つの位置だけを表し、サブルーチン300及び310は、1つより多い連続的位置を含む。
従来の実行可能ソフトウェア・ファイルの第1のエントリ・ポイント250は、デジタル・コンピュータが実行可能ソフトウェア・ファイルの命令を実行し始めるときに実行されることになる第1の命令の位置である。この第1のエントリ・ポイント250は、従来より、実行可能ソフトウェア・ファイルの第1の位置又はほぼ第1の位置である。
ここで図2を参照すると、命令410に少なくとも1つのオペランドが続く。図2においては、2つのオペランド420及び430が示されている。従来より、オペランドの数は、オペランドに先行する命令のアイデンティティによって変わる。
再び図1を参照すると、ソフトウェア・ファイルが実行されると、第1のエントリ・ポイント250内に配置された命令で開始する命令が実行される。この命令は、次の命令に、「ジャンプ」命令に隣接していない位置から読み込ませる「ジャンプ」命令を含むことができる。図1は、データ・セクション100及びコード・セクション200に分けられた実行可能ソフトウェア・ファイルを示すが、サブルーチン300及び310、並びにアドレス位置110、120、130、及び140は、実行可能ソフトウェア・ファイル内のどこにでも常駐することができ、混合することができる。しかしながら、各々のサブルーチン300及び310は、1つより多い連続的位置を含むので、の分割することができず、完全な状態のままにしなければならない。
再び図2を参照すると、命令410のオペランド420及び430は、データを含むことができ、すなわち、従来の実行可能ソフトウェア・ファイル内のアドレス位置を含むことができる。実行可能ソフトウェア・ファイルのオペランド420及び430内のアドレスは、実行可能ソフトウェア・ファイル内の位置だけに関連している。実行可能ソフトウェア・ファイルがデジタル・コンピュータのメモリにロードされるまで、オペランド420及び430内のアドレスは、デジタル・コンピュータのメモリ内の物理的位置に関連していない。
従来の実行可能ソフトウェア・ファイルがメモリにロードされる時に、デジタル・コンピュータは、「リンク編集」として知られている操作を実行しなければならない。言い換えれば、実行可能ソフトウェア・ファイルであるデジタル・コンピュータのメモリ内の物理的位置を参照するように、実行可能ソフトウェア・ファイル内の別の位置への参照を含む、実行可能ソフトウェア・ファイル内の全ての位置を修正しなければならない。
図1を参照すると、デジタル・コンピュータ内の従来の「リンク編集」プログラムが、第1のエントリ・ポイント250の物理的開始アドレスを決定する。同じ「リンク編集」プログラムはまた、実行可能ソフトウェア・ファイル内の全てのアドレス参照をその変位だけインクリメントする。例えば、デジタル・コンピュータ内の従来の「リンク編集」プログラムが、値「400」を有する物理的開始アドレスとなるように第1のエントリ・ポイント250の物理的開始アドレスを決定する場合には、オペランド1100、1200、1300、及び1400内の全ての値も、これらのオペランドがアドレス参照を含むならば「400」だけインクリメントされる。
「リンク編集」を実行するデジタル・コンピュータ内のプログラムは、第1のエントリ・ポイント250内の命令で開始する、実行可能ソフトウェア・ファイル内の命令の実行経路に従うことによって、どの位置がアドレスを含むかを判断することができる。上述のように、アドレス参照を含み得る実行可能ソフトウェア・ファイル内の場所だけが、命令のオペランドである。命令のアイデンティティが、ある場合には、どのオペランドがアドレス参照でなければならないかを判断する。
実行されることになる次の命令は、現在の命令のオペランドの後に配置されるか、又は現在の命令のオペランドの1つによって参照される相対的アドレス内に配置されるので、実行可能ソフトウェア・ファイル内の命令の実行経路は、「リンク編集」を実行するプログラムによって決定することができる。従来のリンク編集方法はまた、ある条件に基づいた実行経路に従うこともできる。こうしたアルゴリズムの詳細は、ここでは説明されない。デジタル・コンピュータが実行可能ソフトウェア・ファイルを成功裏にロードし、実行するために、適切に機能するリンク編集プログラムが必要とされる。
上述の概念を用いるとき、全く同じであるか、又は特定の所定位置内の情報を変えた実行可能ファイルを生成することが可能である。特定の所定位置内の情報を変えることによって、ソフトウェアの配布者は、ソフトウェアを使用可能にするためにユーザが入力する必要があるシリアル番号又は情報の他の部分(キー)を、実行可能なファイルに組み込むことができる。
上述の変形は、特定の所定位置に制約されるので、ソフトウェアの著作権侵害者が、特定の所定位置を容易に確認することが可能であり、よって、ソフトウェアの著作権侵害者は、特定の所定位置に関連した情報を容易に隠してシリアル番号を消すか、又はアプリケーション内に構築された何らかのコピー保護の操作を妨げることができる。シリアル番号領域が消された場合には、どのようにソフトウェアが違法に得られたかを判断することはできない。
したがって、ソフトウェア・コピー元の識別を可能にする方法を提供することが望ましい。さらに、隠すこと又は消すことが困難な、ソフトウェア・コピー元の識別を可能にする方法を提供することが望ましい。
上述のように、ソフトウェア・コードが、デジタル・コンピュータ上で実行できる形態に準備又はコンパイルされるとき、該ソフトウェア・コードは、データ・セクション及びコード・セクションを含む実行可能ソフトウェア・ファイルに変換される。データ・セクションは、アドレス位置を含み、このアドレス位置は、アドレスに含まれるデータについての操作を行うために、コード・セクション内の命令によって参照することができる。
同じく上述のように、従来より、実行可能ソフトウェア・ファイルの各要素は、そのソフトウェア・ファイル内の特定の位置にある。実行可能ソフトウェア・ファイル内のソフトウェア・ファイル内の他の品目に対する各品目の相対的位置は、各品目がコンパイルされた後も同じままである。
より具体的には、従来より、実行可能ソフトウェア・ファイルにコンパイルされたプログラムは、定められたバイト・シーケンスを有し、従来の環境下では変わらない。プログラムは、プログラム言語で書き込むことができ、変数、データ要素、及び/又は命令を含むことができる。コンパイラは、プログラムを、ロード可能なフォーマットを有する静的実行可能ソフトウェアに変換する。静的とは、バイト・シーケンスが定められ、非変数であることを意味し、ロード可能なフォーマットとは、実行可能ソフトウェア・ファイルが、実行のためにメモリへのロードを容易にするフォーマットであることを意味する。プログラムが、ロード可能にフォーマットされた静的実行可能ソフトウェア・ファイルにコンパイルされた後、適切な配布のために、このファイルをCD−ROMに書き込むか、又は適切な配布のために電子的に送信することができる。
前述のように、ロード可能にフォーマットされた静的実行可能ソフトウェア・ファイルは、デジタル・コンピュータによって実行のためにファイルをメモリにロードするとき、デジタル・コンピュータの「リンク編集」プログラムによって用いられる。ロード可能なフォーマットは、オペレーティング・システムによって、場合によっては、プログラム言語によって変わることがある。ロード可能にフォーマットされた静的実行可能ソフトウェア・ファイルは、実行されることになる機械命令を特定する方法、及びプログラムを構成する変数及びサブルーチンを(メモリに)配置する方法を提供する。
上述のように、ソフトウェア・コピー元の識別を可能にする方法、及び/又は、ソフトウェア・コピー元の識別を隠す又は消すのを困難にする方法を提供することが望ましい。こうした方法により、ロード可能にフォーマットされた静的実行可能ソフトウェア・ファイルの各々の実際のデータ構造の固有の配置が生成される。言い換えれば、ロード可能にフォーマットされた静的実行可能ソフトウェア・ファイル内の種々の要素の位置は、ソフトウェア・コピー元を識別する固有のランドスケープを生成する。さらに、ロード可能にフォーマットされた静的実行可能ソフトウェア・ファイルの機能を破壊することなく、この固有のデータ構造ベース・シグニチャを変えることは困難である。
ソフトウェア・コピー元の識別を可能にし、及び/又は、ソフトウェア・コピー元の識別を隠す又は消すのを困難にするように、ソフトウェア・ファイルのためのデータ構造の固有の構成の生成をより良く説明するために、次の簡単なプログラムを用いる。
変数
メッセージ1:文字列;
メッセージ2:文字列;
メッセージ3:文字列;

MakeMessage手順;
開始
メッセージ1:=‘Hello’;
メッセージ2:=‘World’;
メッセージ3:=メッセージ1+’‘+メッセージ2;
終了;

開始
MakeMessage
終了
ロード可能にフォーマットされた実行可能ソフトウェア・ファイルのデータ構造が静的であるので、上に与えられたような簡単なプログラムをコンパイルし、実行することにより、常に、値「Hello World」を有する変数メッセージ3がもたらされる。しかしながら、メッセージ1及びメッセージ2と関連したソース・コードを異なる順序でコンパイラに提供することによって、或いは、コンパイル中又はコンパイル後に機械コードを再構成することによって、コンパイル中にメッセージ1及びメッセージ2の位置が逆にされた場合、異なるものであるが、機能が同一である実行可能ソフトウェア・ファイルが生成される。
より具体的には、コンパイラがメッセージ1及びメッセージ2を逆の順序で受け取った場合、ロード可能にフォーマットされた実行可能ソフトウェア・ファイルのデータ構造は、メッセージ1と関連した元のデータがメッセージ2の元のアドレスに配置され、メッセージ2と関連した元のデータがメッセージ1の元のアドレス位置に配置されるという点で、元の構造とは異なる。こうした状況において、メッセージ1及びメッセージ2のアドレス位置がコンパイラによって逆にされたので、新しくコンパイルされたプログラムは、「World Hello」と出力する。さらに、コンパイル中又はコンパイル後、メッセージ1及びメッセージ2と関連した機械コードが位置を変えたとき、新しくコンパイルされたプログラムは、「World Hello」と出力する。
生成されたロード可能にフォーマットされた実行可能ソフトウェア・ファイルの分析により、メッセージ1及びメッセージ2と関連したデータについてのアドレス位置を明らかにされ得ることが留意される。言い換えれば、第1の位置にメッセージ1及びメッセージ2と関連したデータを有する、生成されたロード可能にフォーマットされた実行可能ソフトウェア・ファイルは、逆の位置にメッセージ1及びメッセージ2と関連したデータを有する、生成されたロード可能にフォーマットされた実行可能ソフトウェア・ファイルとは異なる実行可能ソフトウェア・ファイルのデータ構造を有する。このように、コンパイル前、コンパイル中、又はコンパイル後に、実行可能ソフトウェア・ファイル内の異なる要素の位置を再構成することによって、実行可能ソフトウェア・ファイルの固有データ構造を生成することができる。この実行可能ソフトウェア・ファイルの固有データ構造は、実行可能ソフトウェア・ファイルについての固有の識別タグを提供することができる。
コンパイル前、コンパイル中、又はコンパイル後に、実行可能ソフトウェア・ファイル内の異なる要素の位置を再構成することによって、実行可能ソフトウェア・ファイルの固有データ構造を生成することができる。しかしながら、これがコンパイル後に行われる場合には、そのまま放置すると出力又は機能が破壊される。コンパイル後に実行可能ソフトウェア・ファイル内の異なる要素の位置を再構成することによる破壊は、変更の全てを追跡し、次にロード可能にフォーマットされた実行可能ソフトウェア・ファイル内の再構成された位置の識別と関連した元のデータを編集し、生成された新しい位置を反映させることによって解決することができる。言い換えれば、位置の変更を追跡し、再構成された位置(アドレス値)の識別と関連した元のデータを更新し、ロード可能にフォーマットされた実行可能ソフトウェア・ファイルのデータ構造内の変更を反映させる場合には、機能に悪影響を及ぼすことなく、ロード可能にフォーマットされた実行可能ソフトウェア・ファイル内の種々の要素の位置を再構成することができる。
ランダム・アルゴリズム、又は所定の所望数のロード可能にフォーマットされた実行可能ソフトウェア・ファイルの固有データ構造を生成する所定のアルゴリズムによって、位置の変更を管理できることが留意される。
ロード可能にフォーマットされた実行可能ソフトウェア・ファイル内の要素を再構成することによって構成された実行可能ソフトウェア・ファイル・データ構造の例が、図3で示される。以下の説明において、図1は、従来のコンパイルからの実行可能ソフトウェア・ファイル・データ構造を示すと考えられる。
図3に示されるように、コンパイル後に、サブルーチン310、320、及びデータ110、120、130、140が、実行可能ソフトウェア・ファイル内で再構成された。サブルーチン300及び310内の命令210、220、230、及び240によって、データ位置110、120、130、及び140を参照することができる。前述のように、サブルーチン300及び310は、オペランド1100、1200、1300、及び1400内に格納されたアドレスに配置されたデータについての操作を行うために、それぞれオペランド1100、1200、1300、及び1400を通してアドレス位置を参照できる命令210、220、230、及び240から構成される。より具体的には、図3に示されるように、オペランド1100、1200、1300、及び1400は、それぞれデータ位置110、120、130、及び140についてのアドレス値を格納する。命令210、220、230、及び240は、これらのサブルーチンを実行させるために、他のサブルーチンの開始アドレスを参照することもできる。
図3のソフトウェア・ファイルの各要素は、図1に示される位置とは異なるソフトウェア・ファイル内の特定の位置にあるが、図1及び図3のソフトウェア・ファイルは、同一の機能を有する実行可能ファイルを表す。図1と同様に、図3において、実行のためにデジタル・コンピュータのメモリにロードされた後も、実行可能ソフトウェア・ファイル内のソフトウェア・ファイルの中の他の品目に対する各品目の相対的位置は、同じままである。アドレス110、120、130、及び140の各々は、1つの位置だけを表し、サブルーチン300及び310は、1つより多い連続的位置を含む。サブルーチン300及び310は分割されないが、完全な状態のままであることが留意される。
このように、図1及び図3に示されるように、実行可能ソフトウェア・ファイルのデータ構造は、異なった固有のものである。
図5−図7は、これらの実行可能ソフトウェア・ファイル・データ構造がどうのように実現されるかについて、より総合的理解を提供するために用いられる。
図5は、対応する同じ実行可能ソフトウェア・ファイルを生成するためであるが、各々が固有データ構造を有する、コンパイルされた機械コードの再構成を示すフローチャートである。最初に、図5に示されるように、S800において、コンパイルされた機械コードのファイルを受け取る。S810において、コンパイルされた機械コードのファイル内の種々の要素が再構成される。ランダム・アルゴリズム、又は、所定の所望数のロード可能にフォーマットされた実行可能ソフトウェア・ファイルの固有データ構造を生成する所定のアルゴリズムによって、要素の位置の再構成又は変更を管理できることが留意される。
S820において、コンパイルされた機械コードのファイル内の種々の要素の再構成が追跡され、現在各要素が位置する場所の記録が知られる。S830において、この追跡された情報を用いて、コンパイルされた機械コード内のアドレス・データを編集し、追跡された変更を反映させる。
例えば、データ位置が、最初は、コンパイル後にアドレス「500」に配置される予定になっていたが、要素が再構成された後にアドレス「750」に移動された場合には、コンパイルされたもののうち「500」に等しい元のアドレス・データを編集し、新しい位置「750」を反映させる。このように、変更を追跡することによって、コンパイルされた機械コードを編集し、再構成された種々の要素の新しい位置に対応する正しいアドレス・データを提供することができる。
コンパイルされた機械コードが編集され、再構成された種々の要素の新しい位置に対応する正しいアドレス・データを提供すると、S840において、再構成され、編集されたコンパイルされたコードは、CD−ROMのような物理的媒体、或いはネットワークのような通信媒体によって配布する準備が整う。
この方法を用いるとき、配布者は、各々が全く同じに機能するが、各々が基礎となる固有データ構造を有する、多数のソフトウェア・プログラムのコピーを生成できる。この固有データ構造を用いて、ソフトウェアの各コピーについて別個の固有識別情報を提供することができる。
実行可能ソフトウェア・ファイルの固有データ構造を生成する際、実行可能ソフトウェア・ファイルの固有データ構造において、チェックサム生成ルーチン又は他のアルゴリズムを行い、その実行可能ソフトウェア・ファイルを表す固有値を生成することができる。真のランダム性を保証するために、これらの固有値を過去に生成された値と比較し、生成された実行可能ソフトウェア・ファイルのデータ構造が明確に固有のものであることを保証する。
図6は、対応する実行可能ソフトウェア・ファイルを生成するためであるが、各々が固有のデータ構造を有する、コンパイル前のソース・コードの再構成を示すフローチャートである。最初に、図6に示されるように、S900において、コンパイルされることになるソース・コードのファイルを受け取る。S910において、コンパイルされることになるソース・コードのファイル内の種々の要素、テキスト文字列が再構成される。ランダム・アルゴリズム、或いは、所定の所望数のロード可能にフォーマットされた実行可能ソフトウェア・ファイルの固有データ構造を生成する所定のアルゴリズムによって、要素の位置の再構成又は変更を管理できることが留意される。
次に、S930において、コンパイルされたコードは、CD−ROMのような物理的媒体、或いはネットワークのような通信媒体によって配布する準備が整う。
この方法を用いるとき、配布者は、各々が全く同じに機能するが、各々が基礎となる固有データ構造を有する、多数のソフトウェア・プログラムのコピーを生成できる。この固有データ構造を用いて、ソフトウェアの各コピーについて別個の固有識別情報を提供することができる。
図7は、対応する同じ実行可能ソフトウェア・ファイルを生成するためであるが、各々が固有データ構造を有する、コンパイル中の、コンパイルされた機械コードのファイル内の種々の要素の再構成を示すフローチャートである。最初に、図7に示されるように、S1000において、コンパイルされることになるソース・コードのファイルを受け取る。S1010において、ソース・コードがコンパイルされ、コンパイル中に、コンパイルされた機械コードのファイル内の種々の要素が再構成される。ランダム・アルゴリズム、或いは、所定の所望数のロード可能にフォーマットされた実行可能ソフトウェア・ファイルの固有データ構造を生成する所定のアルゴリズムによって、要素の位置の再構成又は変更を管理できることが留意される。
S1020において、コンパイルされた機械コードのファイル内の種々の要素の再構成を追跡し、現在各要素が位置する場所の記録を知る。S1030において、この追跡された情報を用いて、コンパイルされた機械コード内のアドレス・データを編集し、追跡された変更を反映させる。
例えば、データ位置が、最初は、コンパイル後にアドレス「500」に配置される予定になっていたが、コンパイル中にアドレス「750」に移動された場合には、コンパイルされたものうち「500」に等しい元のアドレス・データを編集し、新しい位置「750」を反映させる。このように、変更を追跡することによって、コンパイルされた機械コードを編集し、再構成された種々の要素の新しい位置に対応する正しいアドレス・データを提供することができる。
コンパイルされた機械コードが編集され、再構成された種々の要素の新しい位置に対応する正しいアドレス・データを提供すると、S1040において、再構成され、編集されたコンパイルされたコードは、CD−ROMのような物理的媒体、或いはネットワークのような通信媒体によって配布する準備が整う。
この方法を用いるとき、配布者は、各々が全く同じに機能するが、各々が基礎となる固有のデータ構造を有する、多数のソフトウェア・プログラムのコピーを生成できる。この固有データ構造を用いて、ソフトウェアの各コピーについて別個の固有識別情報を提供することができる。
上述した固有のデータ構造生成ルーチンを用いるとき、配布者は、ソフトウェアの著作権侵害コピー元をより容易に識別することができる。例えば、図4に示されるように、S710において、実行可能ソフトウェア・ファイルの固有データ構造が、再構成ルーチンによって生成される。S720において、固有値が、実行可能ソフトウェア・ファイルの固有データ構造に基づいて生成される。
上述のように、固有データ構造は、実行可能ソフトウェアのそのコピーについて固有識別を生成するための基礎を提供する。1つの例は、実行可能ソフトウェアのそのコピーについてのチェックサム値を生成するチェックサム生成装置の利用であり、チェックサム値の生成は、データ構造に基づいている。
実行可能ソフトウェア・ファイル内の全ての位置は、命令、アドレス参照、又はデータ要素を含む。これらのタイプのコンテンツの全ては、バイナリ数値の形態である。したがって、実行可能ソフトウェア・ファイル内の要素のあらゆる順序付けは、全ての位置の全てのコンテンツの合計であるチェックサムによって表すことが可能である。実行可能ソフトウェア・ファイルのコンテンツによって、実行可能ソフトウェア・ファイルのコンテンツの固有順序付けの各々が、固有チェックサムを有することもできる。
データ要素及びサブルーチンの数が増大するにつれて、可能な異なるチェックサムの数も増大することも留意される。したがって、チェックサムとコンテンツの固有構成との関連を用いて、元のライセンシーをソフトウェアのコピーと関連付けることができることが留意される。
チェックサムに加えて、実行可能ソフトウェア・ファイル内の要素の順序付けを表す他の方法も用い得ることが留意される。
S730において、配布者がライセンスを得るか、又は実行可能ソフトウェアのコピーを販売するとき、配布者はライセンシー又は購買者を登録し、実行可能ソフトウェア・ファイルの固有データ構造に基づいて生成された固有識別値を記録することによって、転送されたソフトウェアを識別することができる。
例えば、配布者は、各々が同じ実行可能ソフトウェア・ファイル「A」を有する1000枚のCD−ROMを生成できるが、各々のCD−ROM上の実行可能ソフトウェア・ファイル「A」は、異なるデータ構造を有し、各々のCD−ROMは、異なるシリアル番号又はIDを有する。データ構造から、配布者は、実行可能ソフトウェア・ファイルの固有データ構造に基づいて生成された固有値、及びCD−ROMの関連したシリアル番号を、データベースに入力する。CD−ROMが配布されると、配布者は、次に、CD−ROMを受け取るエンティティと関連した情報を、データベースに入力することができる。
その後、配布者が、著作権侵害バージョンの疑いがあるソフトウェアのバージョンを見つけた場合、該配布者は、著作権が侵害されているかどうかを判断し、著作権が侵害されている場合には著作権が侵害されたオリジナルのコピー元を判断するために、実行可能ファイルのデータ構造を分析して、その固有値を求め、それをデータベース内の値と比較する必要があるだけである。
ここに開示される方法は、実行可能ソフトウェアの機能を決して変えることなく、実行可能ソフトウェア・ファイルのコンテンツの再順序付けを行う方法である。
サブルーチンは、依然として、同じ組の命令を同じ順序で含むことが留意される。
上述のように、データ・アドレスの位置が移動された場合には、そのアドレスを参照する、実行可能ソフトウェア・ファイル内の全てのオペランドも変更しなければならない。同様に、サブルーチンの位置が変更された場合には、そのサブルーチンを参照する、実行可能ソフトウェア・ファイル内の全てのオペランドも変更しなければならないことが留意される。
実行可能ソフトウェア・ファイル内の可動要素の数が大きい程、可能な固有データ構造の数が大きくなることが留意される。実行可能ソフトウェア・ファイル内の可動要素の数が増大するにつれて、変数を順序付ける可能な方法の数が指数関数的に増大することが留意される。最後に、上述の種々のルーチンは、任意のデジタル処理装置上に実装することができる。上述の種々のルーチンは、ファームウェア内に実装しても、又はハードウェア内に直接実装してもよい。
要約すれば、方法は、ソース・コードをコンパイルし、該ソース・コードに対応する第1のデータ構造を有するコンパイルされた実行可能ファイルを生成し、該ソース・コードがコンパイルされる度に第1のデータ構造が実現されるようにすること、コンパイルされた実行可能ファイル内の所定数のデータ要素の位置を再構成し、第1のデータ構造とは異なる第2のデータ構造を有するコンパイルされたファイルを生成すること、及び、再構成された位置に従って、第2のデータ構造を有するコンパイルされたファイル内のアドレス・データを編集し、第1のデータ構造を有するコンパイル実行可能ファイルと同じ方法で機能する、第2のデータ構造を有するコンパイルされた実行可能ファイルを生成することによって、複数のデータ要素を含むコンパイルされた実行可能ファイルを電子的に修正する。データ要素は、コンパイルされた実行可能ファイル内のデータ位置、コンパイルされた実行可能ファイル内のデータ・バイト、及び/又は、コンパイルされた実行可能ファイル内のサブルーチンとすることができる。第1のデータ構造を有するコンパイルされた実行可能ファイル内の所定数のデータ要素の位置は、ランダムに再構成することができ、及び/又は、所定数の固有データ構造を生成する所定のアルゴリズムを用いて再構成することができる。同じソース・コードからのコンパイルされた実行可能ファイルの各コピーは、第1のものでないデータ構造を有するコンパイルされたファイルを生成するように再構成された、第1のデータ構造を有するコンパイルされた実行可能ファイル内の所定数のデータ要素の位置を有し、コンパイルされたファイル内のアドレス・データは、再構成された位置に従って編集される。
或る方法は、ソース・コードのコンパイル中に、所定数のデータ要素の位置を再構成し、所定数のデータ要素の位置を再構成することなく同じソース・コードをコンパイルするときに実現され、かつ、再構成することなく該ソース・コードをコンパイルする度に実現される第1のデータ構造とは異なる第2のデータ構造を有するコンパイルされたファイルを生成すること、及び、再構成された位置に従ってコンパイルされたファイル内のアドレス・データを編集し、第1のデータ構造を有するコンパイルされた実行可能ファイルと同じ方法で機能する、第2のデータ構造を有するコンパイルされた実行可能ファイルを生成することによって、複数のデータ要素を含むコンパイルされた実行可能ファイルを電子的に修正する。
データ要素は、コンパイルされた実行可能ファイル内のデータ位置、コンパイルされた実行可能ファイル内のデータ・バイト、及び/又は、コンパイルされた実行可能ファイル内のサブルーチンとすることができる。第1のデータ構造を有するコンパイルされた実行可能ファイル内の所定数のデータ要素の位置は、ランダムに再構成することができ、及び/又は、所定数の固有データ構造を生成する所定のアルゴリズムを用いて再構成することができる。同じソース・コードからのコンパイルされた実行可能ファイルの各コピーは、第1のものでないデータ構造を有するコンパイルされたファイルを生成するように再構成された、第1のデータ構造を有するコンパイルされた実行可能ファイル内の所定数のデータ要素の位置を有し、コンパイルされたファイル内のアドレス・データは、再構成された位置に従って編集される。
或る方法は、コンパイル前にソース・コード内のテキスト文字列の位置を再構成し、再構成されたソース・コードをコンパイルし、第2のデータ構造を有するコンパイルされた実行可能ファイルを生成することによって、複数のデータ要素を含むコンパイルされた実行可能ファイルのデータ構造を電子的に修正し、第1のデータ構造は、ソース・コード内のテキスト文字列の位置を再構成することなく、同じソース・コードをコンパイルするときに実現され、かつ、再構成することなく該ソース・コードをコンパイルする度に実現される。
テキスト文字列は、コンパイルされた実行可能ファイル内のデータ位置、コンパイルされた実行可能ファイル内のデータ・バイト、及び/又は、コンパイルされた実行可能ファイル内のサブルーチンとすることができる。ソース・コード内のテキスト文字列の位置は、ランダムに再構成することができ、及び/又は、所定数の固有データ構造を生成する所定のアルゴリズムを用いて再構成することができる。
或る方法は、ソース・コードをコンパイルし、該ソース・コードに対応する第1のデータ構造を有するコンパイルされた実行可能ファイルを生成し、該ソース・コードがコンパイルされる度に第1のデータ構造が実現されるようにすること、コンパイルされた実行可能ファイル内の所定数のデータ要素の位置を再構成し、第1のデータ構造とは異なる第2のデータ構造を有するコンパイルされた実行可能ファイルを生成すること、再構成された位置に従って、コンパイルされたファイル内のアドレス・データを編集し、第1のデータ構造を有するコンパイルされた実行可能ファイルと同じ方法で機能する、第2のデータ構造を有するコンパイルされた実行可能ファイルを生成すること、及び、第2のデータ構造を有するコンパイルされた実行可能ファイルのデータ構造を表し、第2のデータ構造を有するコンパイルされた実行可能ファイルについて固有の識別を提供する固有値を生成することによって、各々が固有識別値を有するコンパイルされた実行可能ファイルを生成する。
データ要素は、コンパイルされた実行可能ファイル内のデータ位置、コンパイルされた実行可能ファイル内のデータ・バイト、及び/又は、コンパイルされた実行可能ファイル内のサブルーチンとすることができる。第1のデータ構造を有するコンパイルされた実行可能ファイル内の所定数のデータ要素の位置は、ランダムに再構成することができ、及び/又は、所定数の固有データ構造を生成する所定のアルゴリズムを用いて再構成することができる。固有値は、第2のデータ構造を有するコンパイルされた実行可能ファイルにおいてチェックサム・ルーチンを実行することによって生成される。同じソース・コードからのコンパイルされた実行可能ファイルの各コピーは、第1のものでないデータ構造を有するコンパイルされたファイルを生成するように再構成された、第1のデータ構造を有するコンパイルされた実行可能ファイル内の所定数のデータ要素の位置を有し、コンパイルされたファイル内のアドレス・データは、再構成された位置に従って編集され、第1のものでないデータ構造を有する、コンパイルされた実行可能ファイルの各々のデータ構造を表す固有値が生成される。
或る方法は、ソース・コードをコンパイルし、該ソース・コードに対応する第1のデータ構造を有するコンパイルされた実行可能ファイルを生成して、該ソース・コードがコンパイルされる度に第1のデータ構造が実現されるようにすること、第1のデータ構造を有するコンパイルされた実行可能ファイル内の所定数のデータ要素の位置を再構成し、第1のデータ構造とは異なる第2のデータ構造を有するコンパイルされたファイルを生成すること、再構成された位置に従って、コンパイルされたファイル内のアドレス・データを編集し、第1のデータ構造を有するコンパイルされた実行可能ファイルと同じ方法で機能する、第2のデータ構造を有するコンパイルされた実行可能ファイルを生成すること、第1のものでないデータ構造を有するコンパイルされた実行可能ファイルの固有データ構造の各々を表し、第1のものでない固有のデータ構造を有するコンパイルされた実行可能ファイルの各々についての固有の識別を提供する固有値を生成すること、固有アセット・コードを、第1のものでない固有データ構造を有するコンパイルされた実行可能ファイルの各々に割り当てること、及び、第1のものでない固有データ構造を有するコンパイルされた実行可能ファイルを記録媒体に記録し、第1のものでない固有データ構造を有するコンパイルされた実行可能ファイルと関連した固有値と、関連した方法で第1のものでない固有データ構造を有するコンパイルされた実行可能ファイルと関連した固有アセット・コードとを格納することによって、コンパイルされた実行可能ファイルの各コピーについての固有識別値を生成し、記録する。
データ要素は、コンパイルされた実行可能ファイル内のデータ位置、コンパイルされた実行可能ファイル内のデータのバイト、及び/又は、コンパイルされた実行可能ファイル内のサブルーチンとすることができる。第1のデータ構造を有するコンパイルされた実行可能ファイル内の所定数のデータ要素の位置は、ランダムに再構成することができ、及び/又は、所定数の固有データ構造を生成する所定のアルゴリズムを用いて再構成することができる。固有値は、第2のデータ構造を有するコンパイルされた実行可能ファイルにおいてチェックサム・ルーチンを実行することによって生成される。同じソース・コードからのコンパイルされた実行可能ファイルの各コピーは、第1のものでないデータ構造を有するコンパイルされたファイルを生成するように再構成された、第1のデータ構造を有するコンパイルされた実行可能ファイル内の所定数のデータ要素の位置を有し、コンパイルされたファイル内のアドレス・データは、再構成された位置に従って編集され、第1のものでないデータ構造を有するコンパイルされた実行可能ファイルの各々のデータ構造を表す固有値が生成される。固有アセット・コードは、シリアル番号、コンパイルされた実行可能ファイルのライセンシーを表す情報、コンパイルされた実行可能ファイルの購入者を表す情報、及び/又は、コンパイルされた実行可能ファイルの受信者を表す情報とすることができる。
従来のソフトウェア・ファイルの構造レイアウトを図示する。 従来の機械コード命令の構造レイアウトを図示する。 ソフトウェア・ファイルのコンテンツの再順序付けの概念を図示する。 ライセンシーをソフトウェア・コピーにマッピングする方法を示すフローチャートである。 各々が固有データ構造を有する、配布のためのロード可能にフォーマットされた実行可能ソフトウェア・ファイルの生成を示すフローチャートである。 各々が固有データ構造を有する、配布のためのロード可能にフォーマットされた実行可能ソフトウェア・ファイルの生成を示すフローチャートである。 各々が固有データ構造を有する、配布のためのロード可能にフォーマットされた実行可能ソフトウェア・ファイルの生成を示すフローチャートである。
符号の説明
100:データ・セクション
110、120、130、140:データ位置
200:コード・セクション
210、220、230、240:命令
300、310:サブルーチン
420、430、1100、1200、1300、1400:オペランド

Claims (3)

  1. 複数のデータ要素を含むコンパイルされた実行可能ファイルを電子的に修正する方法であって、
    (a)ソース・コードをコンパイルし、前記ソース・コードに対応する第1のデータ構造を有するコンパイルされた実行可能ファイルを生成し、該ソース・コードをコンパイルする度に前記第1のデータ構造が実現されるようにし、
    (b)前記コンパイルされた実行可能ファイル内の所定数のデータ要素の位置を再構成し、前記第1のデータ構造とは異なる第2のデータ構造を有するコンパイルされたファイルを生成し、
    (c)前記再構成された位置に従って、前記第2のデータ構造を有する前記コンパイルされたファイル内のアドレス・データを編集し、前記第1のデータ構造を有する前記コンパイルされた実行可能ファイルと同じ方法で機能する、第2のデータ構造を有するコンパイルされた実行可能ファイルを生成する、
    ステップを含むことを特徴とする方法。
  2. 複数のデータ要素を含むコンパイルされた実行可能ファイルを電子的に修正する方法であって、
    (a)ソース・コードのコンパイル中に所定数のデータ要素の位置を再構成し、所定数のデータ要素の前記位置を再構成することなく同じソース・コードをコンパイルするときに実現され、かつ、再構成することなく前記ソース・コードがコンパイルされる度に実現される第1のデータ構造とは異なる第2のデータ構造を有するコンパイルされたファイルを生成し、
    (b)前記再構成された位置に従って、前記コンパイルされたファイル内のアドレス・データを編集し、第1のデータ構造を有するコンパイルされた実行可能ファイルと同じ方法で機能する、第2のデータ構造を有するコンパイルされた実行可能ファイルを生成する、
    ステップを含むことを特徴とする方法。
  3. 複数のデータ要素を含むコンパイルされた実行可能ファイルのデータ構造を電子的に修正する方法であって、
    (a)コンパイル前にソース・コード内のテキスト文字列の位置を再構成し、
    (b)前記再構成されたソース・コードをコンパイルし、第2のデータ構造を有するコンパイルされた実行可能ファイルを生成する、
    ステップを含み、
    第1のデータ構造は、ソース・コード内の前記テキスト文字列の前期位置を再構成することなく、同じソース・コードをコンパイルするときに実現され、かつ、再構成することなく前記ソース・コードをコンパイルする度に実現されることを特徴とする方法。
JP2006129135A 2005-05-12 2006-05-08 実行可能コードのコピーについての固有の識別を生成する方法及びその管理 Pending JP2006318464A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/127,674 US20060259903A1 (en) 2005-05-12 2005-05-12 Method for creating unique identification for copies of executable code and management thereof

Publications (1)

Publication Number Publication Date
JP2006318464A true JP2006318464A (ja) 2006-11-24

Family

ID=37054339

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006129135A Pending JP2006318464A (ja) 2005-05-12 2006-05-08 実行可能コードのコピーについての固有の識別を生成する方法及びその管理

Country Status (4)

Country Link
US (1) US20060259903A1 (ja)
EP (1) EP1722313A3 (ja)
JP (1) JP2006318464A (ja)
CN (1) CN1862492A (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090207998A1 (en) * 2008-01-07 2009-08-20 Angus Wall Determining unique material identifier numbers using checksum values
US8463109B2 (en) 2008-01-07 2013-06-11 Black Mariah, Inc. Editing digital film
KR20120083802A (ko) * 2011-01-18 2012-07-26 삼성전자주식회사 가상머신을 위한 코드 재배치 장치 및 방법
US8863082B2 (en) * 2011-09-07 2014-10-14 Microsoft Corporation Transformational context-aware data source management
CN104346150B (zh) * 2013-07-30 2017-10-17 华为技术有限公司 多实例业务的可执行文件的生成方法和装置
RU2634172C1 (ru) * 2016-06-02 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ передачи управления между адресными пространствами
US10761924B2 (en) * 2017-07-25 2020-09-01 Aurora Labs Ltd. Roll back of data delta updates
CN108776569B (zh) * 2018-04-20 2021-10-15 贵阳朗玛信息技术股份有限公司 一种对编译选项控制文件的修改方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5559884A (en) * 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
JP2000076064A (ja) * 1998-09-01 2000-03-14 Hitachi Software Eng Co Ltd プログラムへの透かしの挿入方法及びシステム
JP2005235076A (ja) * 2004-02-23 2005-09-02 Fujitsu Ltd コンピュータシステム、中央装置及びプログラム実行方法

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6006328A (en) * 1995-07-14 1999-12-21 Christopher N. Drake Computer software authentication, protection, and security system
US6028938A (en) * 1996-04-30 2000-02-22 Shana Corporation Secure electronic forms permitting layout revision
US6668325B1 (en) * 1997-06-09 2003-12-23 Intertrust Technologies Obfuscation techniques for enhancing software security
US6334189B1 (en) * 1997-12-05 2001-12-25 Jamama, Llc Use of pseudocode to protect software from unauthorized use
US6782478B1 (en) * 1999-04-28 2004-08-24 Thomas Probert Techniques for encoding information in computer code
US7421586B2 (en) * 1999-05-12 2008-09-02 Fraunhofer Gesselschaft Protecting mobile code against malicious hosts
US7263722B1 (en) * 1999-05-12 2007-08-28 Fraunhofer Crcg, Inc. Obfuscation of executable code
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US7406603B1 (en) * 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
US20050053258A1 (en) * 2000-11-15 2005-03-10 Joe Pasqua System and method for watermarking a document
US20020138748A1 (en) * 2001-03-21 2002-09-26 Hung Andy C. Code checksums for relocatable code
CA2350029A1 (en) * 2001-06-08 2002-12-08 Cloakware Corporation Sustainable digital watermarking via tamper-resistant software
US7111285B2 (en) * 2001-07-17 2006-09-19 Liquid Machines, Inc. Method and system for protecting software applications against static and dynamic software piracy techniques
US6694435B2 (en) * 2001-07-25 2004-02-17 Apple Computer, Inc. Method of obfuscating computer instruction streams
US7213151B2 (en) * 2001-09-28 2007-05-01 International Business Machines Corporation Method and computer system for encoding of information into a representation
US7243340B2 (en) * 2001-11-15 2007-07-10 Pace Anti-Piracy Method and system for obfuscation of computer program execution flow to increase computer program security
US6880149B2 (en) * 2002-04-01 2005-04-12 Pace Anti-Piracy Method for runtime code integrity validation using code block checksums
US20030191938A1 (en) * 2002-04-09 2003-10-09 Solarsoft Ltd. Computer security system and method
US7383443B2 (en) * 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme
KR100568228B1 (ko) * 2003-05-20 2006-04-07 삼성전자주식회사 고유번호를 이용한 프로그램 탬퍼 방지 방법과 난독처리된 프로그램 업그레이드 방법, 상기 방법을 위한 장치
US7185326B2 (en) * 2003-07-30 2007-02-27 Hewlett-Packard Development Company, L.P. Automatically reordering variables as a part of compiling and linking source code
US20060027659A1 (en) * 2003-08-01 2006-02-09 Symbol Technologies, Inc. Integrated exit window and imaging engine
US7631292B2 (en) * 2003-11-05 2009-12-08 Microsoft Corporation Code individualism and execution protection
US8156343B2 (en) * 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US7526805B2 (en) * 2004-06-12 2009-04-28 Microsoft Corporation Thread protection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5559884A (en) * 1994-06-30 1996-09-24 Microsoft Corporation Method and system for generating and auditing a signature for a computer program
JP2000076064A (ja) * 1998-09-01 2000-03-14 Hitachi Software Eng Co Ltd プログラムへの透かしの挿入方法及びシステム
JP2005235076A (ja) * 2004-02-23 2005-09-02 Fujitsu Ltd コンピュータシステム、中央装置及びプログラム実行方法

Also Published As

Publication number Publication date
US20060259903A1 (en) 2006-11-16
EP1722313A2 (en) 2006-11-15
EP1722313A3 (en) 2008-07-30
CN1862492A (zh) 2006-11-15

Similar Documents

Publication Publication Date Title
US20160364707A1 (en) Potentate: A Cryptography-Obfuscating, Self-Policing, Pervasive Distribution System For Digital Content
JP4770425B2 (ja) 保護済み実行プログラムの作成のためのプログラム、方法及び装置
JP2006318464A (ja) 実行可能コードのコピーについての固有の識別を生成する方法及びその管理
JP4688805B2 (ja) コード難読化およびエミュレーションによるプロセッサ制御
US7287166B1 (en) Guards for application in software tamperproofing
US7757097B2 (en) Method and system for tamperproofing software
EP3812894B1 (en) A system and method for encapsulating and enabling protection through diverse variations in software libraries
US7111285B2 (en) Method and system for protecting software applications against static and dynamic software piracy techniques
US5559884A (en) Method and system for generating and auditing a signature for a computer program
JP2006318465A (ja) 実行可能コードのコピーについての固有の識別を生成する方法及びその管理
CN110050258B (zh) 用于防止应用程序盗版的设备、系统和方法
CN102341806A (zh) 软件保护
JP2009512087A (ja) プログラム実行可能イメージの暗号化
JP5455914B2 (ja) 耐タンパ技術
KR102459774B1 (ko) Dll 파일 암호화 방법, 이를 수행하는 dll 파일 암호화 시스템, 및 이를 저장하는 기록매체
WO1996018951A1 (en) Methods and apparatus for protection of executable programs, libraries and data
KR20200017120A (ko) 코스 스프레잉을 이용한 코드 보호 방법 및 시스템
US6931634B2 (en) Encrypted compiler
US20050125783A1 (en) Program optimization with intermediate code
CN113221077A (zh) 基于spring容器的class文件加密方法及设备
KR20200017122A (ko) 코드 체인 검증을 이용한 코드 보호 방법 및 시스템
KR20200017121A (ko) 원타임 코드를 이용한 코드 보호 방법 및 시스템
JP2004265037A (ja) コンピュータプログラムの編集システム及びその方法
Abrath et al. $\Delta $ Δ Breakpad: Diversified Binary Crash Reporting
CN117633734A (zh) 代码编译的方法、装置及电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110829

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111129

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111219