TOP
|
特許
|
意匠
|
商標
特許ウォッチ
Twitter
他の特許を見る
10個以上の画像は省略されています。
公開番号
2025070365
公報種別
公開特許公報(A)
公開日
2025-05-02
出願番号
2023180628
出願日
2023-10-19
発明の名称
解析装置、解析方法および解析プログラム
出願人
日本電信電話株式会社
代理人
弁理士法人酒井国際特許事務所
主分類
G06F
11/36 20060101AFI20250424BHJP(計算;計数)
要約
【課題】仕様が未知のバイナリに対して適切に共用体の情報を取得すること。
【解決手段】本実施形態に係る解析装置100は、タグ付き共用体検出部122と、タグ付き共用体解析部123とを有する。タグ付き共用体検出部122は、テスト入力を受け付けたプログラムから、テスト入力に基づいてタグ付き共用体を検出する。タグ付き共用体解析部123は、テスト入力に基づいて、タグ付き共用体検出部122によって検出されたタグ付き共用体を解析する。
【選択図】図4
特許請求の範囲
【請求項1】
テスト入力を受け付けたプログラムから、前記テスト入力に基づいてタグ付き共用体を検出するタグ付き共用体検出部と、
前記テスト入力に基づき、前記タグ付き共用体検出部によって検出されたタグ付き共用体を解析するタグ付き共用体解析部と、
を有することを特徴とする解析装置。
続きを表示(約 910 文字)
【請求項2】
前記タグ付き共用体検出部は、型及び値を指定した前記テスト入力を受け付けた解析対象バイナリの実行トレースに含まれる構造体のうち、前記テスト入力において指定された値を含む構造体を、前記タグ付き共用体として検出する、
ことを特徴とする請求項1に記載の解析装置。
【請求項3】
前記タグ付き共用体検出部は、前記タグ付き共用体の共用体部分が内部的に保持する値を指定することができ、かつ、値によって異なるタグを保持させることができる、複数の入力値を前記テスト入力としてそれぞれ受け付けた前記プログラムの実行トレースから、前記タグ付き共用体を検出する
ことを特徴とする請求項2に記載の解析装置。
【請求項4】
前記タグ付き共用体解析部は、複数の前記タグ付き共用体から、前記テスト入力と対応付けながら前記タグ付き共用体間の差分を検出することにより、前記テスト入力の型に依存して差分が見られたメンバ変数を、タグを保持する部分として特定する、
ことを特徴とする請求項1に記載の解析装置。
【請求項5】
前記タグ付き共用体のタグの値と型との対応関係と、前記タグ付き共用体のタグの値と前記タグを保持するメンバ変数とを出力する出力部をさらに有する
ことを特徴とする請求項1に記載の解析装置。
【請求項6】
解析装置によって実行される解析方法であって、
テスト入力を受け付けたプログラムから、前記テスト入力に基づいてタグ付き共用体を検出するタグ付き共用体検出工程と、
前記タグ付き共用体検出工程によって検出されたタグ付き共用体を解析するタグ付き共用体解析工程と、
を含んだことを特徴とする解析方法。
【請求項7】
テスト入力を受け付けたプログラムから、前記テスト入力に基づいてタグ付き共用体を検出するタグ付き共用体検出手順と、
前記タグ付き共用体検出手順によって検出されたタグ付き共用体を解析するタグ付き共用体解析手順と、
をコンピュータに実行させるための解析プログラム。
発明の詳細な説明
【技術分野】
【0001】
本発明は、解析装置、解析方法および解析プログラムに関する。
続きを表示(約 1,400 文字)
【背景技術】
【0002】
[共用体について]
プログラミング言語の提供するデータ型の1つに、共用体がある。共用体は、同じメモリ領域を複数の型が共有する型である。これにより、ある値が複数の型を持ちうる場合に、型ごとに個別にメモリ領域を確保せずとも、1つのメモリ領域で多様な型の値を保持できるようになり、柔軟な管理が可能となる。
【0003】
例えば、ある変数が整数または浮動小数点数を保持する可能性がある場合、単純な方法では整数を保持する変数と浮動小数点数を保持する変数を各々用意しておく必要がある。しかし、整数と浮動小数点数を保持できる共用体を用いれば、1つの変数で両方の型を保持できる。
【0004】
[タグ付き共用体について]
共用体を用いたデータ構造の実装方式の1つに、タグ付き共用体がある。これは、前述の共用体に対して、現在共用体のメモリ領域が保持している型の情報を付加したデータ構造である。これにより、共用体の保持するデータにアクセスする際に、適切な型でアクセスして値を取り出すことができる。
【0005】
例えば、前述の整数と浮動小数点数を保持できる共用体の例では、タグが0であれば整数、1であれば浮動小数点数を保持していると定義したタグを付加する。そして、共用体に値を格納する際に、その値の型にあわせて、適切な値をタグに設定する。これにより、共用体にアクセスする際にタグを確認し、0であれば整数として、1であれば浮動小数点数としてアクセスすることで、適切な型で共用体にアクセスできるようになる。
【0006】
ここで、図1を参照して、タグ付き共用体の具体例について説明する。図1は、実施形態に係るタグ付き共用体の疑似コードの具体例を示す図である。図1に示すタグ付き共用体の疑似コードは、2行目から8行目までが共用体部分であり、9行目がタグ部分である。
【0007】
図1の例の疑似コードによるタグ付き共用体は、「整数」、「浮動小数点数」、「文字列」、「関数ポインタ」を持ち得ることが示されている。また、「タグが0:整数」、「タグが1:浮動小数点数」というように、タグ部分の値に応じて、共用体部分の値に対する型の解釈が決定される。
【0008】
[値オブジェクトについて]
タグ付き共用体を用いた実装の一例に、スクリプトエンジンの用いる値オブジェクトがある。値オブジェクトは、スクリプト中で用いられる関数や変数、定数の値を保持する。値オブジェクトは一般に、スクリプトの実装に利用できる多様な型の値を保持できることが要求されるため、タグ付き共用体を用いて実装される。
【0009】
したがって、タグ付き共用体の構造や、タグの保持している値と共用体の型の関係が解明されていれば、たとえば、値オブジェクトを参照することで、スクリプトエンジンが内部的に保持している値がどのような型なのかを把握でき、スクリプトの持つ変数の解析などに役立てられる。
【0010】
[スクリプトの解析]
スクリプトを解析する技術は、多様な目的に用いられる。たとえばJITコンパイルのためのコンパイラ最適化や、ソフトウェアのテストやデバッグ、ファジング、マルウェア解析などが挙げられる。
(【0011】以降は省略されています)
この特許をJ-PlatPatで参照する
関連特許
他の特許を見る