JP4945296B2 - コード検出装置及びコード検出方法 - Google Patents
コード検出装置及びコード検出方法 Download PDFInfo
- Publication number
- JP4945296B2 JP4945296B2 JP2007107482A JP2007107482A JP4945296B2 JP 4945296 B2 JP4945296 B2 JP 4945296B2 JP 2007107482 A JP2007107482 A JP 2007107482A JP 2007107482 A JP2007107482 A JP 2007107482A JP 4945296 B2 JP4945296 B2 JP 4945296B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- analysis
- detection
- information
- unit
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Description
Robert Wahbe et.al., "Efficient software-based fault isolation", In Proc. of the fourteenth ACM Symposium on Operating Systems Principals, 1994. Kevin Scott et.al., "Safe virtual execution using software dynamic translation", In Proc. of 18th Annual Computer Security Applications Conference, 2002.
(プログラム解析システムの構成)
先ず、本実施形態に係るプログラム解析システムの構成について説明する。図3は、本実施形態に係るプログラム解析システムの機能ブロック図である。
コード検出装置100は、プログラムコードを解析することで検出対象コードを検出する。コード検出装置100は、第1解析部110及び第2解析部120を備える。
コード実行装置200は、動的解析済みコード記憶部320に記憶された動的解析済みコードを実行する。コード実行装置200は、コード実行部210、コード制御部220及び制御ポリシー記憶部800を備える。
次に、解析情報記憶部114に記憶される解析情報について説明する。解析情報は、プログラムコードを記憶するメモリ領域のうち検出対象コードを含まない部分のメモリ領域を特定する情報である。
次に、図5〜図7を参照して、解析情報の生成処理について説明する。
BL PC+yyyy ;アドレスPC+yyyyへの分岐
MOV PC,lr ;lrレジスタに格納されたアドレスへの分岐
逆に、条件付き分岐命令とは、次に示すように、条件フィールドを伴い、条件が満たされる場合に特定の分岐先へ制御を移すような命令である。
BEQ PC+yyyy ;比較結果に応じて指定アドレスへ分岐
一方、開始命令とは、mainや_Startといったシンボルで特定される関数の先頭コードである。mainや_Startを含むブロックを「ブロック1」と呼び、以降N番目に生成されるブロックを「ブロックN」と呼ぶ。ブロック1以外のブロックの開始地点は、あるブロックからの分岐先コードに等しい。
次に、解析情報生成処理の処理フローについて説明する。図7は、解析情報生成処理の処理フローを示すフローチャートである。
次に、ブロック解析処理の処理フローについて説明する。ブロック解析処理では、与えられたアドレスから始まるブロックに検出対象コードが含まれない場合に、当該ブロックを解析情報記憶部114に登録する。検出対象コードの具体例や検出方法については後述する。
次に、図12及び図13を参照して、ブロック解析処理の具体例について説明する。
次に、動的解析処理、つまり第2解析部120の動作について説明する。上述したように、第2解析部120は、コード実行部210から提示される解析対象ブロックアドレスを元に、プログラムコードから解析すべきプログラムコードを特定し、解析情報を元に当該プログラムコードが検出対象であるか否かを判定する。
図14のステップS3099、ステップS3199及びステップS3299で停止した場合の動作概要図を図15〜図17に示す。図15〜図17では、上段にプログラムコードのメモリ空間を示し、中段にコード検出装置100(第2解析部120)の実行メモリ空間を示し、下段にコード実行装置200の実行メモリ空間を示している。
本実施形態によれば、第1解析部110は、静的解析によって、第2解析部120が解析すべきメモリ領域を指定する。プログラムコードの動的解析を行う第2解析部120は、静的解析の結果に応じて、プログラムコードの一部に対して検出対象コードの検出処理を行う。このため、プログラムコードの動的解析を行う第2解析部120の処理負荷が削減され、システム全体の処理速度が向上する。
本実施形態では、第1解析部110及び第2解析部120が検出する検出対象コードが、特定のコードへの制御移動命令(分岐命令)である場合について説明する。
B lr
この分岐命令では、分岐命令(B)の分岐先であるlrレジスタの値が、MOV命令から導出される。この場合、lrレジスタの値は、アドレス0x12である。
次に、検出対象コードの検出処理フロー、具体的には、図10のステップS2003の詳細について説明する。図18は、検出対象コードの検出処理フローを示すフローチャートである。
本実施形態によれば、検出対象コードがプログラムコード中の呼出が許可されない関数を呼出す分岐命令である場合に、当該制御移動命令が確実に検出される。したがって、プログラム実行時に、呼出が許可されない関数を呼出す分岐命令が実行されないように制御することで、特定の関数や共有ライブラリが呼出されないようにすることができる。
(プログラム解析システムの構成)
本実施形態では、第1解析部110が、検出対象コードにフックコードを追加する構成について説明する。図19は、本実施形態に係るプログラム解析システムの構成を示す機能ブロック図である。
次に、本実施形態に係るブロック解析処理の処理フローについて説明する。図20は、本実施形態に係るブロック解析処理の処理フローを示すフローチャートである。図20に示すように、ステップS2006が追加されている点で、図10とは異なる。
本実施形態によれば、解析情報記憶部114は、検出対象コードを含まないブロックに加えて、フックコードが追加されたブロックを登録する。特定部121は、解析情報記憶部114に記憶された解析情報に基づき、静的解析済みコード記憶部116に記憶された静的解析済みコードから解析対象領域を特定する。
上述した第3実施形態では、プログラムコードのサイズがシステムの許容する最大のサイズ程度である場合には、静的解析時にフックコードを追加しない一例について説明した。静的解析済みコードにフックコードを追加する場合、コードサイズが増加する。
本実施形態では、制御情報記憶部400が記憶するプログラム制御情報が更新される場合に対応可能な構成について説明する。プログラム制御情報に含まれる検出対象コードが更新された場合、解析情報記憶部114が記憶する解析情報も更新される必要がある。
図22は、本実施形態に係るプログラム解析システムの構成を示す機能ブロック図である。図22に示すように、制御情報記憶部400は候補コードを記憶する点で、図3とは異なる。候補コードは、プログラム制御除法の更新により、検出対象コードとなる可能性のあるコードである。
(2)検出対象コードではない候補コードのみを含むブロック
(3)候補コードを含まないブロック
上記(1)に分類されるブロックは、再生成情報にのみ登録されるべきブロックである。上記(2)に分類されるブロックは、解析情報及び再生成情報の両方に登録されるべきブロックである。上記(3)に分類されるブロックは、解析情報にのみ登録されるべきブロックである。
次に、ブロック解析処理における再生成情報の生成方法について説明する。図23は、ブロック解析処理における再生成情報の生成方法を示すフローチャートである。図23では、上述した第1実施形態に係る処理フローから、新たにステップS2007〜ステップS2010が追加されている。
なお、ステップS2009が必要な理由は、当該ブロックに複数の候補コードが存在した場合に、当該ブロックの解析処理中は複数回ステップS2010に進む可能性があり、再生成情報の重複登録が発生する可能性があるためである。
本実施形態によれば、第1解析部110は、検出対象コードがいずれかの候補コードに変更された場合に、再生成情報に登録されたブロックから新たな検出対象コードを検出する。したがって、再生成情報を予め生成しておくことで、プログラム制御情報が更新されてもプログラムコード全体を再解析する必要が無くなる。
本実施形態では、図14のステップS3001の処理、すなわち、解析対象ブロックの登録ブロック内検索処理に着目する。解析対象ブロックは、コード実行装置200が出力する解析対象ブロックアドレスにより決定される。この解析対象ブロックアドレスは、プログラムカウンタが指すアドレス、すなわち次に実行されるべきコードのアドレスである。
図24は、本実施形態に係るプログラム解析システムの構成図である。図24に示すように、第2解析部120は、履歴情報記憶部127を備える点で、図3とは異なっている。履歴情報記憶部127は、図25に示すように、登録ブロック(検出対象コードを含まないブロック)のブロックIDと、当該登録ブロックの開始アドレスと、当該登録ブロックの終了アドレスと、当該登録ブロックがコード実行部210によって実行された回数とを対応付けた履歴情報を記憶する。
本実施形態によれば、初回のプログラム実行結果に応じて、解析情報が更新される。第2解析部は、次回のプログラム実行時においては、更新された解析情報を利用して、プログラムコードが解析される。これにより、初回のプログラム実行と比較して、次回のプログラム実行時においては、短時間でプログラムの解析を行うことが可能となる。
本実施形態では、図7のステップS1003の処理、すなわち、解析したブロックの分岐先アドレスを全て取得する処理に注目する。このような処理を実現するためには、当該ブロックに含まれる分岐命令を検出し、分岐先を取得する必要がある。
図26は、本実施形態に係るプログラム解析システムの構成図である。図26に示す通り、第2解析部120は、分岐先情報記憶部128を備える点で、図3とは異なっている。
次に、本実施形態に係る分岐先検出処理について説明する。図28は、分岐先検出処理の概要を示す図である。図28において、ブロック0は、間接分岐命令によりブロック1に分岐する。分岐先情報がない場合、このブロック0からの分岐先であるブロック1のアドレスを特定することは非常に困難である。このため、図28(a)に示すように、ブロック1〜3において検出漏れが生じる。
本実施形態によれば、第1検出部122において検出対象コードの検出漏れが存在していた場合に、第1検出部122は、分岐先情報を利用することで、検出漏れが生じていた検出対象コードが検出可能となる。
上記のように、本発明は第1〜第6実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなる。
Claims (17)
- 複数のコードを含むプログラムコードを解析することで検出対象コードを検出するコード検出装置であって、
前記プログラムコードの実行前に、前記プログラムコードを解析する第1解析部と、
前記プログラムコードの実行中に、前記第1解析部による解析結果を用いて前記プログラムコードを解析する第2解析部とを備え、
前記第1解析部は、
前記プログラムコードから前記検出対象コードを検出する第1検出部と、
前記第1検出部による検出結果に基づき、前記プログラムコードのうち前記第2解析部が解析対象としない領域である非解析対象領域を特定するための解析情報を生成する解析情報生成部とを備え、
前記第2解析部は、
前記解析情報を参照し、前記解析情報が示す非解析対象領域を除いた領域を前記プログラムコード中の前記解析対象領域として特定する特定部と、
前記特定部によって特定された前記解析対象領域から前記検出対象コードを検出する第2検出部とを備え、
前記第1解析部が生成する前記解析情報は、前記プログラムコードのうち前記検出対象コードを含まない領域を非解析対象領域として特定する情報を含み、
前記第2解析部は、前記プログラムコードの実行中に、前記プログラムコードを実行するコード実行部によって与えられる次に実行されるべきプログラムコードのアドレスに基づいて、前記プログラムコードのうち解析すべきプログラムコードを特定し、前記解析情報を元に当該プログラムコードが解析対象領域であるか否かを判定することを特徴とするコード検出装置。 - 前記検出対象コードの実行を制御するためのコードであるフックコードを含むプログラム制御情報を記憶する制御情報記憶部をさらに備え、
前記第2解析部は、前記解析対象領域から検出された前記検出対象コードに前記フックコードを追加することを特徴とする請求項1に記載のコード検出装置。 - 前記検出対象コードの実行を制御するためのコードであるフックコードを含むプログラム制御情報を記憶する制御情報記憶部をさらに備え、
前記第1解析部は、前記プログラムコードから検出された前記検出対象コードに前記フックコードを追加し、
前記特定部は、前記第1解析部により前記フックコードの追加されていない領域を前記解析対象領域として特定することを特徴とする請求項1に記載のコード検出装置。 - 前記第1解析部は、前記プログラムコードのサイズまたは処理負荷に応じて、前記プログラムコードから検出された前記検出対象コードに前記フックコードを追加するか否かを判定することを特徴とする請求項3に記載のコード検出装置。
- 前記第1解析部は、前記フックコードを含むフック専用関数へ分岐する分岐命令を、前記フックコードとして前記検出対象コードに追加することを特徴とする請求項3に記載のコード検出装置。
- 前記検出対象コードを特定する情報を含むプログラム制御情報を記憶する制御情報記憶部をさらに備え、
前記第1検出部は、前記プログラム制御情報が更新された場合、更新後の検出対象コードを特定する情報に基づいて前記プログラムコードから前記更新後の検出対象コードを検出し、
前記解析情報生成部は、前記第1検出部による前記更新後の検出対象コードの検出結果に基づき、前記解析情報を更新することを特徴とする請求項1に記載のコード検出装置。 - 前記検出対象コードを特定する情報と、前記検出対象コードの変更先候補のコードである候補コードを特定する情報を含むプログラム制御情報を記憶する制御情報記憶部をさらに備え、
前記第1検出部は、前記プログラム制御情報に基づき、前記プログラムコードから前記検出対象コード及び前記候補コードを検出し、
前記解析情報生成部は、前記第1検出部による検出結果に基づき、前記プログラムコードのうち前記候補コードを含む領域を特定する再生成情報を生成し、
前記第1検出部は、前記プログラム制御情報中の前記検出対象コードを特定する情報が変更された場合、前記再生成情報によって特定される領域から、変更された検出対象コードを検出することを特徴とする請求項1に記載のコード検出装置。 - 前記検出対象コードは、前記プログラムコード中の特定のコードを呼出す制御移動命令であり、
前記第1検出部及び前記第2検出部は、
前記プログラムコードから制御移動命令を検出した場合、検出された制御移動命令の呼出先コードが前記特定のコードであるか否かを判定し、
前記検出された制御移動命令の呼出先コードが前記特定のコードである場合、前記検出された制御移動命令が前記検出対象コードであると判定することを特徴とする請求項1に記載のコード検出装置。 - 前記第2解析部は、前記解析対象領域から検出された前記検出対象コードに前記フックコードを追加すると共に、前記解析対象領域をコンパイル処理し、コンパイル処理後の前記解析対象領域である解析済みコードを記憶するキャッシュ記憶部をさらに備え、
前記第2検出部は、前記解析対象領域から前記検出対象コードが検出された場合であって、前記検出対象コードを含む前記解析対象領域に対応する解析済みコードが前記キャッシュ記憶部に記憶されている場合、前記コンパイル処理を省略し、前記解析済みコードを出力することを特徴とする請求項1に記載のコード検出装置。 - 前記非解析対象領域を特定する情報は、前記非解析対象領域の開始アドレスを含むことを特徴とする請求項9に記載のコード検出装置。
- 前記第1解析部は、前記プログラムコードを2つの分岐命令で挟まれた領域毎に分割し、分割された領域毎に前記検出対象コードの検出処理を行うことで前記非解析対象領域を検出することを特徴とする請求項1に記載のコード検出装置。
- 前記第1解析部は、前記非解析対象領域を特定する情報を含む前記解析情報を記憶する解析情報記憶部をさらに備え、
前記第2解析部は、前記非解析対象領域を特定する情報と、前記非解析対象領域が実行された回数とを対応付けた履歴情報を記憶する履歴情報記憶部をさらに備え、
前記解析情報生成部は、前記履歴情報記憶部に記憶されている前記履歴情報に基づき、前記解析情報記憶部に登録されているとともに、前記特定部によってアクセスされる頻度の高い登録領域が、より短い時間で検索されるように前記解析情報記憶部のデータ構造を変更することによって、前記解析情報記憶部に記憶されている前記解析情報を更新することを特徴とする請求項1に記載のコード検出装置。 - 前記履歴情報記憶部に記憶される前記非解析対象領域を特定する情報は、少なくとも前記非解析対象領域の開始アドレスを含むことを特徴とする請求項12に記載のコード検出装置。
- 前記特定部は、前記解析情報記憶部中の上位から下位へ前記非解析対象領域を特定する情報を参照することで、前記次に実行されるプログラムコードの領域が前記非解析対象領域であるか否かを特定し、
前記解析情報生成部は、
前記履歴情報において一定回数以上に対応する前記非解析対象領域を特定する情報を、前記解析情報記憶部中の上位に設定し、
前記履歴情報において一定回数未満に対応する前記非解析対象領域を特定する情報を、前記解析情報記憶部中の下位に設定することを特徴とする請求項12に記載のコード検出装置。 - 前記検出対象コードは、分岐命令であり、
前記第2解析部は、コンパイル処理後の前記解析対象領域である解析済みコードに所定の分岐命令が含まれる場合に、前記所定の分岐命令を特定する情報、及び前記所定の分岐命令の分岐先を分岐先情報として記憶する分岐先情報記憶部をさらに備え、
前記第1検出部は、前記分岐先情報記憶部に記憶される前記分岐先情報を参照し、前記分岐先情報を用いて前記検出対象コードを検出することを特徴とする請求項1に記載のコード検出装置。 - 前記所定の分岐命令は、他の命令の実行結果に応じて分岐先が定まる間接分岐命令であり、
前記分岐先情報記憶部は、前記解析済みコードが実行される際に前記分岐先情報を記憶することを特徴とする請求項15に記載のコード検出装置。 - 複数のコードを含むプログラムコードを解析することで検出対象コードを検出するコード検出方法であって、
前記プログラムコードの実行前に、前記プログラムコードを解析する第1ステップと、
前記プログラムコードの実行中に、前記第1解析ステップによる解析結果を用いて前記プログラムコードを解析する第2ステップとを備え、
前記第1ステップは、
前記プログラムコードから前記検出対象コードを検出する第1検出ステップと、
前記第1検出ステップによる検出結果に基づき、前記プログラムコードのうち前記第2ステップが解析対象としない領域である非解析対象領域を特定するための解析情報を生成する解析情報生成ステップとを備え、
前記第2ステップは、
前記解析情報を参照し、前記解析情報が示す非解析対象領域を除いた領域を前記プログラムコード中の前記解析対象領域として特定する特定ステップと、
前記特定ステップによって特定された前記解析対象領域から前記検出対象コードを検出する第2検出ステップとを備え、
前記第1ステップが生成する前記解析情報は、前記プログラムコードのうち前記検出対象コードを含まない領域を非解析対象領域として特定する情報を含み、
前記第2ステップは、前記プログラムコードの実行中に与えられる次に実行されるべきプログラムコードのアドレスに基づいて、前記プログラムコードのうち解析すべきプログラムコードを特定し、前記解析情報を元に当該プログラムコードが解析対象領域であるか否かを判定することを特徴とするコード検出方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007107482A JP4945296B2 (ja) | 2007-02-09 | 2007-04-16 | コード検出装置及びコード検出方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007031190 | 2007-02-09 | ||
JP2007031190 | 2007-02-09 | ||
JP2007107482A JP4945296B2 (ja) | 2007-02-09 | 2007-04-16 | コード検出装置及びコード検出方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008217751A JP2008217751A (ja) | 2008-09-18 |
JP4945296B2 true JP4945296B2 (ja) | 2012-06-06 |
Family
ID=39837673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007107482A Expired - Fee Related JP4945296B2 (ja) | 2007-02-09 | 2007-04-16 | コード検出装置及びコード検出方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4945296B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7276465B2 (ja) | 2019-08-29 | 2023-05-18 | 日本電気株式会社 | バックドア検査装置、バックドア検査方法、及びプログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01216441A (ja) * | 1988-02-24 | 1989-08-30 | Hitachi Ltd | プログラム走行解析方法 |
JPH04287134A (ja) * | 1991-03-15 | 1992-10-12 | Nec Corp | 簡易トレース情報取得方式 |
JP3199013B2 (ja) * | 1998-01-26 | 2001-08-13 | 日本電気株式会社 | 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体 |
JP2007004516A (ja) * | 2005-06-24 | 2007-01-11 | Hitachi Software Eng Co Ltd | 組込みシステムのプログラムデバッグ方法 |
-
2007
- 2007-04-16 JP JP2007107482A patent/JP4945296B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2008217751A (ja) | 2008-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xu et al. | Designing new operating primitives to improve fuzzing performance | |
US10698668B1 (en) | Custom code transformations during compilation process | |
JP3220055B2 (ja) | 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ装置。 | |
US8250559B2 (en) | Supporting per-program classpaths with class sharing in a multi-tasking virtual machine | |
US20050278318A1 (en) | Iterative development with prioritized build | |
US8615735B2 (en) | System and method for blurring instructions and data via binary obfuscation | |
US5960197A (en) | Compiler dispatch function for object-oriented C | |
KR20110060822A (ko) | 외래 정보를 분할함에 의한 가상 머신 코드의 메모리 최적화 | |
WO2010010678A1 (ja) | プログラム最適化方法 | |
JP5966509B2 (ja) | プログラム、コード生成方法および情報処理装置 | |
US7793266B2 (en) | Method, apparatus and computer program product for optimizing access to the content of a virtual application container on a fixed, read-only medium | |
JP2015511041A (ja) | ネスト構造化されたエミュレーションおよび動的リンキング環境 | |
CN107632832B (zh) | 一种面向dalvik字节码控制流混淆方法 | |
JP5131563B2 (ja) | コンピュータ、動作ルール適用方法、オペレーティングシステム | |
KR970066865A (ko) | 대역적인 동치관계의 해석에 의해 전송 명령을 삭제하는 최적화 장치 | |
KR102209151B1 (ko) | 바이너리 취약점 패치 방법 및 장치 | |
US8296742B2 (en) | Automatic native generation | |
JP2004303114A (ja) | インタープリタおよびネイティブコード実行方法 | |
EP2182433A1 (en) | Indirect branching program, and indirect branching method | |
JP2018097817A (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP4945296B2 (ja) | コード検出装置及びコード検出方法 | |
US20090228869A1 (en) | Annotating exception information in a computer program | |
CN113176926B (zh) | 一种基于虚拟机自省技术的api动态监控方法及系统 | |
Dong et al. | Cadecff: Compiler-agnostic deobfuscator of control flow flattening | |
CN114327497B (zh) | 一种代码处理方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100225 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110516 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110607 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110808 |
|
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: 20120221 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120305 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4945296 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150309 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |