JP2011191985A - Symbolic execution support program, method and device - Google Patents
Symbolic execution support program, method and device Download PDFInfo
- Publication number
- JP2011191985A JP2011191985A JP2010057094A JP2010057094A JP2011191985A JP 2011191985 A JP2011191985 A JP 2011191985A JP 2010057094 A JP2010057094 A JP 2010057094A JP 2010057094 A JP2010057094 A JP 2010057094A JP 2011191985 A JP2011191985 A JP 2011191985A
- Authority
- JP
- Japan
- Prior art keywords
- program
- block
- storage unit
- symbolic execution
- path condition
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Description
本技術は、シンボリック実行技術に関する。 The present technology relates to a symbolic execution technology.
シンボリック実行(symbolic execution)は、記号実行とも呼ばれ、例えばプログラムのテスト及び検証を行う際に用いられる。シンボリック実行についての基礎的な事項は、例えば、玉井哲雄、福永光一、「記号実行システム」、情報処理、pp18-28、1982/01/15などに詳しく述べられているので、そちらを参照されたい。 Symbolic execution is also called symbol execution and is used, for example, when testing and verifying a program. The basics of symbolic execution are described in detail in, for example, Tetsuo Tamai, Koichi Fukunaga, “Symbol Execution System”, Information Processing, pp18-28, 1982/01/15, etc. Please refer to that. .
シンボリック実行は、プログラムを、そのプログラムに含まれる変数に具体的な数値を入力する代わりに、数値を代表するシンボルでプログラムを模擬的に実行し、その結果を評価する技術である。例えば図1に示すようなプログラムをシンボリック実行する場合を考える。このプログラムでは、(1)乃至(3)にif文が記述されている。また、変数x及びyがシンボリック実行におけるシンボルとして指定されているものとする。このようなプログラムをシンボリック実行すると、図2に模式的に示すような制御フローが得られる。図2において処理1乃至4を除く矩形ボックスは、シンボリック実行で代入文や条件文などを通過したときに満たすべき論理的な制約(すなわちパスコンディション)を表しており、シンボリック実行ではこのようなパスコンディションを代入文や条件文などを通過する毎に積み上げるといった処理を行う。図2の例では、zにx+5を代入したところで(z=x+5)というパスコンディションが積まれ、(1)のif文で(z=x+5且つz>=10)というパスコンディションと、(z=x+5且つz<10)というパスコンディションが積み上げられる。以下、(2)のif文でさらに2つのパスコンディションが積み上げられ、(3)のif文でさらに2つのパスコンディションが積み上げられる。
Symbolic execution is a technique in which a program is simulated with symbols that represent numerical values and the results are evaluated instead of inputting specific numerical values into variables included in the program. For example, consider a case where a program as shown in FIG. 1 is executed symbolically. In this program, if statements are described in (1) to (3). Also assume that variables x and y are specified as symbols in symbolic execution. When such a program is executed symbolically, a control flow schematically shown in FIG. 2 is obtained. In FIG. 2, the rectangular
このようなシンボリック実行の後に、パスコンディションが充足可能か否かの判定を、例えばSAT(satisfiability)又はSMT(satisfiability modulo theory)ソルバを利用して行う。図2の例では、(2)の分岐の後に生成されるパスコンディション(z=x+5且つz>=10且つx<=10)は、充足不可能と判断され、処理2は実行されないことが分かる。なお、シンボリック実行は、JPF(Java(登録商標) Path Finder)などのモデル検査エンジンと組み合わせて使用される場合もある。
After such symbolic execution, whether or not the path condition can be satisfied is determined using, for example, a SAT (satisfiability) or SMT (satisfiability modulo theory) solver. In the example of FIG. 2, the path condition (z = x + 5 and z> = 10 and x <= 10) generated after the branch of (2) is determined to be unsatisfactory, and it can be seen that the
このように、シンボリック実行では、条件分岐においてその充足可能な全ての実行パスを自動的に発生させて、プログラムの網羅的な実行を可能としている。しかし、その網羅性ゆえに組み合せ爆発を起こす可能性があり、特に実装言語特有のアルゴリズムによりシンボリック実行上では本来必要としない組み合せを多く生成してしまい、無駄な探索を繰り返してしまうという問題がある。 As described above, in symbolic execution, all satisfying execution paths are automatically generated in the conditional branch, thereby enabling comprehensive execution of the program. However, there is a possibility that combination explosion occurs due to its comprehensiveness, and in particular, there are problems that a lot of combinations that are not originally required for symbolic execution are generated by an algorithm specific to the implementation language, and unnecessary search is repeated.
図3にそのようなプログラムの例を示す。図3は、与えられたpidと同一のpidを有する商品を探し出し、その在庫が数量qnt以上であれば「在庫足りる」を出力し、在庫が数量qnt未満であれば「在庫足りない」を出力し、さらに与えられたpidと同一のpidを有する商品がなければ「該当商品なし」を出力するプログラムである。このようなプログラムに対してシンボリック実行を行うと、図4に示すような制御フローとなる。なお、data.sizeが「10」であるものと仮定している。図3のようなプログラムでは、図4に示すように、pidが1件目でマッチする場合、pidが2件目でマッチする場合、...pidが10件目でマッチする場合、そして、10件目でもマッチしない場合といったように、全てのケースについてパスコンディションが積み上げられる。 FIG. 3 shows an example of such a program. FIG. 3 searches for a product having the same pid as a given pid, and outputs “stock is enough” if the stock is more than the quantity qnt, and outputs “not enough stock” if the stock is less than the quantity qnt. If there is no product having the same pid as the given pid, the program outputs “No applicable product”. When symbolic execution is performed on such a program, a control flow as shown in FIG. 4 is obtained. It is assumed that data.size is “10”. In the program as shown in FIG. 3, as shown in FIG. 4, when pid matches at the first case, when pid matches at the second case,. . . Pass conditions are accumulated for all cases, such as when the pid matches at the tenth case and when the pid does not match even at the tenth case.
このような場合、本来何件目でマッチするかは無関心であるにもかかわらず、シンボリック実行上では、データ集合の要素数分の場合分けに応じてパスコンディションが生成されるので、論理制約の無駄な組み合わせによる組み合わせ爆発を引き起こしてしまう。 In such a case, the path condition is generated according to the number of cases of the number of elements in the data set on the symbolic execution even though it is originally uninterested in the number of matches. It causes a combination explosion due to a useless combination.
このようなfor文などの繰り返し構造に起因する組み合わせ爆発に対して、従来、有界モデル検査(BLAST)などで用いられている、繰り返し構造部分の有界実行という手法が知られている。しかし一般に、最適な長さで繰り返し回数を固定化できないという問題がある。具体的には、プログラムの全ての繰り返し構造に対して、その内容にかかわらず、「ある固定回数以内」(例えば、forループは高々5回まで)というような有界化をするため、無駄なループが残り得る。 A technique called bounded execution of a repetitive structure part conventionally used in bounded model checking (BLAST) or the like is known for such a combination explosion caused by a repetitive structure such as a for statement. However, in general, there is a problem that the number of repetitions cannot be fixed with an optimal length. Specifically, for all repeated structures of the program, regardless of its contents, it is bounded as “within a fixed number of times” (for example, up to 5 times for loops), so it is useless. A loop can remain.
よって、本技術の目的は、シンボリック実行において、無駄なパスコンディションを生成せずに適切に実行パスを把握することができるようにするための技術を提供することである。 Therefore, an object of the present technology is to provide a technology for enabling an execution path to be properly grasped without generating a useless path condition in symbolic execution.
本シンボリック実行支援方法は、(A)プログラムデータ格納部に格納されている分析対象のプログラムから、繰り返し制御変数を変化させて特定のケースを探索して当該特定のケースにおいて特定の処理を実施するというパターンに合致する繰り返しブロックを抽出するステップと、(B)分析対象のプログラムにおいて、抽出された繰り返しブロック及び当該繰り返しブロックの直後のブロックを、真の場合に特定の処理を実施し且つ偽の場合に直後のブロックの処理を実施し且つ当該真偽に関する述語関数を含む二分岐構造に置換する変換処理を実施し、変換処理後のプログラムを変換後プログラム格納部に格納する変換処理ステップと、(C)二分岐構造に含まれる述語関数について論理制約を生成し、パスコンディションデータ格納部に格納するステップと、(D)変換後プログラム格納部に格納された変換処理後のプログラムのシンボリック実行時に、パスコンディションデータ格納部に格納されている述語関数を処理していることを検出すると、当該述語関数に対応付けられている論理制約から、述語関数の出現位置におけるパスコンディションを生成してシンボリック実行部の管理データに追加登録するステップとを含む。 In this symbolic execution support method, (A) a specific case is searched by repeatedly changing a control variable from an analysis target program stored in a program data storage unit, and a specific process is performed in the specific case. (B) In the program to be analyzed, in the program to be analyzed, the extracted repeated block and the block immediately after the repeated block are subjected to a specific process when true and false A conversion processing step for performing the processing of the immediately following block and performing a conversion process for replacing with a bifurcated structure including a predicate function relating to the truth, and storing the converted program in the converted program storage unit; (C) A logical constraint is generated for the predicate function included in the bifurcated structure, and the path condition data case And (D) detecting that the predicate function stored in the path condition data storage unit is being processed during symbolic execution of the converted program stored in the post-conversion program storage unit And generating a path condition at the appearance position of the predicate function from the logical constraint associated with the predicate function and additionally registering it in the management data of the symbolic execution unit.
シンボリック実行において、無駄なパスコンディションを生成せずに適切に実行パスを把握することができるようになる。 In symbolic execution, an execution path can be properly grasped without generating useless path conditions.
図5及び図6に本技術の実施の形態に係るシステムの機能ブロック図を示す。図5に、前処理段階で使用されるシンボリック実行支援装置の機能ブロック図を示す。シンボリック実行支援装置は、入力部101と、入力データ格納部102と、処理対象特定部103と、チェックパターン格納部104と、存在チェックテーブル格納部105と、二分岐構造生成部106と、変換後プログラム格納部107と、パスコンディションテーブル格納部108とを有する。
5 and 6 show functional block diagrams of the system according to the embodiment of the present technology. FIG. 5 shows a functional block diagram of the symbolic execution support device used in the preprocessing stage. The symbolic execution support apparatus includes an
入力部101は、ユーザなどから分析対象のプログラムの指定及びシンボリック実行に係る変数の指定を受け付け、それらのデータを入力データ格納部102に格納する。チェックパターン格納部104は、本実施の形態における処理の対象となる繰り返しブロックを抽出するためのパターンについてのデータを格納する。処理対象特定部103は、ループ抽出部1031及びパターンチェック部1033を含み、入力データ格納部102及びチェックパターン格納部104に格納されているデータを用いて処理を行い、処理結果である存在チェックテーブルを生成して存在チェックテーブル格納部105に格納する。
The
二分岐構造生成部106は、ifブロック生成部1061及びパスコンディションテーブル生成部1063を含み、入力データ格納部102、存在チェックテーブル格納部105に格納されているデータを用いて処理を行い、処理結果として変換後プログラムを生成して変換後プログラム格納部107に格納し、同じく処理結果としてパスコンディションテーブルを生成してパスコンディションテーブル格納部108に格納する。
The bifurcated
次に、図6に、シンボリック実行時の構成を示す。シンボリック実行部200は、既存のシンボリック実行を行うモジュールであり、分析対象のプログラムにおいて実行している関数を積む関数スタック211と、制御フローを記録するためのブランチ管理テーブル213とを管理している。ブランチ管理テーブル213は、ブランチポイント毎に、ブランチの条件が真の場合のパスコンディションと、偽の場合のパスコンディションとを登録するものとする。なお、シンボリック実行部200は、様々なものが流通しており、例えばJava(登録商標) PathFinderの拡張であるSymbolic PathFinderなどであってもよい。
Next, FIG. 6 shows a configuration at the time of symbolic execution. The
シンボリック実行部200は、変換後プログラム格納部107に格納されている変換後プログラムを処理する。このシンボリック実行部200の実行中に、本実施の形態において導入されるパスコンディション動的追加部151は、パスコンディションテーブル格納部108に格納されているデータを用いて、シンボリック実行部200に対して処理を行うようになっている。なお、パスコンディション動的追加部151及びシンボリック実行部200が、シンボリック実行支援装置と一体である場合もあれば、パスコンディション動的追加部151及びシンボリック実行部200とを含むシンボリック実行装置が別途用意される場合もある。
The
次に、図7乃至図22を用いて図5及び図6に示したシステムの動作について説明する。本実施の形態では、最初に前処理を実施し(ステップS1)、前処理の結果を用いてシンボリック実行時処理を実施する(ステップS3)。 Next, the operation of the system shown in FIGS. 5 and 6 will be described with reference to FIGS. In the present embodiment, preprocessing is first performed (step S1), and symbolic execution processing is performed using the result of the preprocessing (step S3).
まず、図8乃至図20を用いて前処理について説明する。まず、入力部101は、ユーザから分析対象のプログラム及びシンボリック実行に係る変数の指定を受け付け、分析対象のプログラムを取得して上記変数のデータと共に入力データ格納部102に格納する(図8:ステップS11)。なお、分析対象のプログラムについては、当該プログラムを含むファイルを同一装置の記憶装置から読み出したり、ネットワークで接続されている他のコンピュータから取得したりする。
First, the preprocessing will be described with reference to FIGS. First, the
本実施の形態では、例えば図9に示すようなプログラムを処理する場合を考察する。図9は、プログラムの一部であるが、変数item1乃至10、pid1、qnt1は、シンボル実行に係る変数であるものとする。また、purchaseメソッドが1回呼ばれ、商品IDが入力されるpid1及び数量が入力されるqnt1が渡される。さらに、purchaseメソッドは、基本的に、図3で示したプログラムである。 In the present embodiment, for example, a case where a program as shown in FIG. 9 is processed is considered. FIG. 9 is a part of the program, but variables item1 to 10, pid1, and qnt1 are variables related to symbol execution. Further, the purchase method is called once, and pid1 to which the product ID is input and qnt1 to which the quantity is input are passed. Further, the purchase method is basically the program shown in FIG.
そして、処理対象特定部103は、入力データ格納部102に格納されている分析対象のプログラムを読み出し(ステップS13)、処理対象特定部103のループ抽出部1031は、分析対象のプログラム内における繰り返しブロック(例えばforブロック)を抽出し、例えばメインメモリなどの記憶装置に格納する(ステップS15)。なお、言語によってはwhileなどを使う場合もあるので、分析対象のプログラムにおいて使用されているプログラム言語に応じて繰り返しブロックを検出する。図9のプログラムの場合には、図10に示すようなforブロックが抽出される。
Then, the processing
そして、処理対象特定部103のパターンチェック部1033は、特定された繰り返しブロックのうち未処理の繰り返しブロックを1つ特定する(ステップS17)。その後、パターンチェック部1033は、チェックパターン格納部104に格納されているチェックパターンのデータを用いて、特定された繰り返しブロックが、本実施の形態において取り扱い可能な繰り返しブロックのパターンに適合するか確認する(ステップS19)。
Then, the
本実施の形態では、特定のデータが存在するか否かをループを回しながら検査するようなパターンに適合するかを確認する。具体的には図11に示すように、forループ内において、特定のデータか否かを判断する条件(if文内の条件)を規定しているという条件と、繰り返し制御変数(ここではi)によって現在のデータをセットする文以外の処理に繰り返し制御変数iに関する手続が規定されていないという条件と、存在確認されるデータ集合のサイズと同じだけループが繰り返されるという条件とを含む。 In the present embodiment, it is confirmed whether or not it matches a pattern in which whether or not specific data exists is checked while rotating. Specifically, as shown in FIG. 11, a condition that determines whether or not the data is specific data (condition in the if statement) in the for loop, and a repetitive control variable (here i) Includes a condition that the procedure related to the repeated control variable i is not defined in processing other than a statement that sets the current data, and a condition that the loop is repeated as much as the size of the data set to be confirmed.
これらの条件のいずれかを満たさない場合には、以下で述べるような単純な二分岐構造に直した場合に、論理的に正しくパスコンディションを積むことができるか不明であり、適合しないと判断するものとする。 If either of these conditions is not met, it is unclear whether the path condition can be logically correct when the simple bifurcated structure described below is corrected, and it is determined that it does not fit. Shall.
特定された繰り返しブロックが上で述べたようなパターンに適合しない場合には、端子Aを介して図14のステップS33に移行する。一方、特定された繰り返しブロックが上で述べたようなパターンに適合する場合には、パターンチェック部1033は、分析対象のプログラムから、繰り返しブロック内のif文の条件部分(すなわち特定のデータか否かを判断する条件。if条件文と呼ぶ。)、繰り返し制御変数によって現在のデータをセットするカレントデータ設定文、if条件文で真とされた場合の処理ブロックと、if条件文で偽とされた場合の処理ブロックとを抽出し、それらを存在チェックテーブル格納部105内の存在チェックテーブルに登録する(ステップS23)。処理は端子Bを介して図14の処理に移行する。
If the identified repetitive block does not match the pattern as described above, the process proceeds to step S33 in FIG. On the other hand, when the identified repeated block matches the pattern as described above, the
例えば図12に示すように、図10に示したforブロックに関連して、if条件文Dと、カレントデータ設定文Eと、if条件文Dが真の場合に実行され且つ繰り返し制御変数iの手続を含まない処理ブロックFと、if条件文Dが偽の場合に実行され且つforブロックの直後のブロックGとを抽出して、存在チェックテーブルに登録する。 For example, as shown in FIG. 12, in relation to the for block shown in FIG. 10, the if conditional statement D, the current data setting statement E, and the if conditional statement D are executed and the repeated control variable i is executed. A processing block F that does not include a procedure and a block G that is executed when the if conditional statement D is false and immediately after the for block are extracted and registered in the existence check table.
図13に、存在チェックテーブルの一例を示す。図13の例では、if条件文のための存在条件欄と、カレントデータ設定文のためのカレントデータ設定欄と、真の場合に実行される処理ブロック(真)の欄と、偽の場合に実行される処理ブロック(偽)の欄とが含まれ、図12で示したように抽出されたD乃至Gのデータが登録される。 FIG. 13 shows an example of the existence check table. In the example of FIG. 13, the existence condition field for the if conditional statement, the current data setting column for the current data setting statement, the processing block (true) column executed when true, and the case of false The processing block to be executed (false) column is included, and the extracted data D to G are registered as shown in FIG.
図14の処理の説明に移行して、二分岐構造生成部106のifブロック生成部1061は、存在チェックテーブル格納部105内の存在チェックテーブルに登録されているカレントデータ設定文の繰り返し制御変数iを所定の固定値に変更する(ステップS25)。
Shifting to the description of the processing in FIG. 14, the if block generation unit 1061 of the two-branch
これにより、対象とする配列やリストなどの集合データの検索範囲を1つの要素に代表させる。例えばi=0として、図13の例では、Item item = data.get(0)と変更する。但し、現在着目している繰り返しブロック全体が複数回呼ばれるような場合は、検索条件が同じ場合は同じ要素を利用し、違う場合は違う要素を利用するようにする。例えば、図9のプログラムの場合purchaseメソッドは1回だけ呼ばれるので、forブロックにおいても1つの条件pid1だけで検索される。これに対して、purchaseメソッドが2回呼ばれて、2回目にはpid2という異なる条件が渡される場合には、i=0ではなく、i=1としてカレントデータ設定文を変更する。すなわち、Item item = data.get(1)と変更する。 Thereby, the search range of the set data such as the target array or list is represented by one element. For example, assuming that i = 0, in the example of FIG. However, when the entire repetitive block currently focused on is called a plurality of times, the same element is used when the search conditions are the same, and different elements are used when the search conditions are different. For example, in the case of the program shown in FIG. 9, the purchase method is called only once, and therefore, the for block is searched with only one condition pid1. On the other hand, if the purchase method is called twice and a different condition of pid2 is passed the second time, the current data setting statement is changed as i = 1 instead of i = 0. That is, Item item = data.get (1) is changed.
そして、ifブロック生成部1061は、繰り返しブロック及び繰り返しブロックの直後のブロックを、存在チェックテーブルに従ってifブロックに変換して、変換後のプログラムを変換後プログラム格納部107に格納する(ステップS27)。 Then, the if block generation unit 1061 converts the repeated block and the block immediately after the repeated block into an if block according to the existence check table, and stores the converted program in the converted program storage unit 107 (step S27).
具体的には、真又は偽となる述語関数を導入して、新たに導入するif条件文に当該述語関数を採用する。そして述語関数が真の場合には、存在チェックテーブルに登録されているカレントデータ設定文及び真の場合の処理ブロックを実行し、述語関数が偽の場合には、存在チェックテーブルに登録されている偽の場合の処理ブロックを実行するようなifブロックを生成して、当該ifブロックで、入力データ格納部102に格納されている分析対象のプログラムの処理対象のforブロック及び当該forブロックの直後のブロックと置換する。なお、2以上のforブロックが存在する場合には、2つ目以降のforブロック等については、変換後プログラム格納部107に格納されており且つ直前に処理されたプログラムについて置換を行う。また、入力データ格納部102に格納されているシンボリック実行に係る変数のデータについても、変換後プログラム格納部107に格納しておく。
Specifically, a predicate function that is true or false is introduced, and the predicate function is adopted for a newly introduced if conditional statement. When the predicate function is true, the current data setting statement registered in the existence check table and the processing block when true are executed. When the predicate function is false, the predicate function is registered in the existence check table. An if block that executes a processing block in the case of false is generated, and the for block to be processed of the analysis target program stored in the input
例えば、図15に示すようなifブロックが生成される。図15の例では、_EXIST1という述語関数が導入されている。このような述語関数については、_EXIST+番号というようなルールを予め決めておき、本ステップで決定すればよい。図15の例では、_EXIST1が真の処理ブロックには、存在チェックテーブルのカレントデータ設定の欄の内容と処理ブロック(真)の欄の内容が埋め込まれており、_EXIST1が偽の処理ブロックには、存在チェックテーブルの処理ブロック(偽)の内容が埋め込まれている。 For example, an if block as shown in FIG. 15 is generated. In the example of FIG. 15, a predicate function called _EXIST1 is introduced. For such a predicate function, a rule such as _EXIST + number may be determined in advance and determined in this step. In the example of FIG. 15, the contents of the current data setting column and the contents of the processing block (true) column of the existence check table are embedded in the processing block in which _EXIST1 is true, and the processing block in which _EXIST1 is false is embedded. The contents of the processing block (false) of the existence check table are embedded.
さらに、ifブロック生成部1061は、ifブロックの条件文で採用した述語関数を宣言するブロックを生成して、ifブロックの前に追加する(ステップS29)。例えば図16に示すように、述語関数をダミー関数として宣言するブロックを生成する。 Further, the if block generation unit 1061 generates a block that declares the predicate function adopted in the conditional statement of the if block, and adds it to the front of the if block (step S29). For example, as shown in FIG. 16, a block that declares the predicate function as a dummy function is generated.
このような処理を実施した後、ifブロック生成部1061は、処理後のプログラムを変換後プログラム格納部107に格納する。上で述べた例では、図17に示すような変換後プログラムが生成されて、変換後プログラム格納部107に格納される。
After performing such processing, the if block generation unit 1061 stores the processed program in the converted
また、二分岐構造生成部106のパスコンディションテーブル生成部1063は、ifブロックの条件文で採用した述語関数とその論理制約とを、パスコンディションテーブル格納部108におけるパスコンディションテーブルに登録する(ステップS31)。仮に導入した述語関数であるので、論理制約についても他の論理制約と区別できるように決定すればよい。例えば、述語関数_EXIST1に対して論理制約_exist1といったものでよい。
Further, the path condition
パスコンディションテーブルは、例えば図18に示すようなテーブルである。関数名に対応付けて論理制約を登録するようになっている。 The path condition table is, for example, a table as shown in FIG. A logical constraint is registered in association with the function name.
このようにすれば、プログラムの大まかな構造として図19のようなプログラムが得られて、これに対してシンボリック実行すれば、図20に示すような制御フローが把握される。すなわち、新たに導入したif文で、パスコンディション_exist1の場合と、パスコンディションnot(_exist1)の場合とに分岐するものである。以下、それぞれに異なる処理、すなわちblock1又はblock2が実行される。
In this way, a program as shown in FIG. 19 is obtained as a rough structure of the program, and if this is executed symbolically, a control flow as shown in FIG. 20 is grasped. That is, the newly introduced if statement branches into the case of path condition_exist1 and the case of path condition not (_exist1). Thereafter, different processes, that is,
その後、処理対象特定部103は、全ての繰り返しブロックを処理したかを判断し(ステップS33)、未処理の繰り返しブロックが存在する場合には端子Cを介してステップS17に戻る。一方、全ての繰り返しブロックについて処理した場合には、元の処理に戻る。
Thereafter, the processing
このようにして、シンボリック実行を実施する前に行うべき前処理が完了する。このような変換を行うことによって、特定の条件を満たすデータの存在を確認するようなforブロックで不必要にパスコンディションの組み合わせが増加する事態は避けられる。しかしながら、通常どおりシンボリック実行部200がシンボリック実行を行っても、新たに導入したif条件文の述語関数については、シンボルとして取り扱われることはない。
In this way, the preprocessing to be performed before the symbolic execution is performed is completed. By performing such conversion, it is possible to avoid a situation in which the number of combinations of path conditions is unnecessarily increased in a for block that confirms the existence of data that satisfies a specific condition. However, even if the
従って、シンボリック実行時処理をパスコンディション動的追加部151が実行することによって、適切な位置に適切なパスコンディションを挿入するようにする。
Therefore, the path condition dynamic adding
図21及び図22を用いてシンボリック実行時処理について説明する。シンボリック実行部200は、ユーザ等からの指示又は処理対象特定部103等からの指示に応じて、変換後プログラム格納部107に格納されている変換後プログラムの実行を開始する(ステップS41)。シンボリック実行部200は、既に知られた方法で変換後のプログラムをシンボル実行する。なお、シンボル実行時には、図6に示したように、変換後プログラムにおいて実行する関数を関数スタック211に積み、分岐点において当該分岐の条件が真の場合のパスコンディション及び偽のパスコンディションを、ブランチ管理テーブル213に登録するようになっているものとする。
The symbolic execution process will be described with reference to FIGS. 21 and 22. The
そこで、シンボリック実行が終了するまで(ステップS43)、パスコンディション動的追加部151は、以下の処理を実施する。パスコンディション動的追加部151は、上で述べた関数スタック211を監視して(ステップS45)、関数スタック211に積まれた最新の関数名とパスコンディションテーブル格納部108内のパスコンディションテーブルにおける関数名の列に登録されている関数名とを比較する。そして、パスコンディション動的追加部151は、関数スタック211に積まれた最新の関数名とパスコンディションテーブル内の関数名とが一致するか判断する(ステップS47)。関数スタック211に積まれた最新の関数名とパスコンディションテーブル内の関数名と一致しない場合にはステップS43に戻る。
Therefore, until the symbolic execution ends (step S43), the path condition
一方、関数スタック211に積まれた最新の関数名とパスコンディションテーブル内の関数名のいずれかと一致する場合には、パスコンディション動的追加部151は、パスコンディションテーブル格納部108内のパスコンディションテーブルにおいて、関数スタック211に積まれた最新の関数名と一致すると判断された関数名に対応付けて登録されている論理制約から、真及び偽のパスコンディションを生成して、ブランチポイントと共にブランチ管理テーブル213に登録する(ステップS49)。この処理の後にステップS43に戻る。
On the other hand, when the latest function name loaded in the
例えば、図18のようなパスコンディションテーブルの場合、関数名_EXIST1()であるから、ブランチポイントは、if(_EXIST1())と自動的に特定できる。さらに、対応する論理制約_exist1が得られるので、ブランチ管理テーブル213の直前のレコードに含まれる真のパスコンディション又は偽のパスコンディションと_exist1とを含む真のパスコンディションを生成し、同様にブランチ管理テーブル213の直前のレコードに含まれる真のパスコンディション又は偽のパスコンディションとnot(_exist1)とを含む偽のパスコンディションを生成し、ブランチポイントと共に、ブランチ管理テーブル213に追加登録する。 For example, in the case of a path condition table as shown in FIG. 18, since the function name is _EXIST1 (), the branch point can be automatically specified as if (_EXIST1 ()). Further, since the corresponding logical constraint _exist1 is obtained, a true path condition included in the immediately preceding record of the branch management table 213 or a true path condition including _exist1 is generated, and similarly the branch management table A false path condition including a true path condition or a false path condition included in the record immediately before 213 and not (_exist1) is generated, and additionally registered in the branch management table 213 together with the branch point.
このようにブランチ管理テーブル213に、レコードを追加することによって、繰り返しブロックをifブロックに変換した影響を反映させることができるようになる。すなわち、繰り返し構造による無駄なパスコンディションの組み合わせを回避することができ、シンプルに論理的に正しい形で制御フローを把握できるようになる。 In this way, by adding a record to the branch management table 213, it is possible to reflect the effect of converting a repetitive block into an if block. That is, it is possible to avoid a combination of useless path conditions due to a repetitive structure, and it is possible to grasp the control flow in a simple logically correct form.
例えば図9の繰り返しブロック及び直後のブロックだけに着目すれば、図22に示すような制御フローが把握される。図3と比較すれば、該当データがある場合と該当データがない場合で分岐して、該当データがある場合には数量が足りる場合と足りない場合とに分岐するだけであるから、無駄な実行パスが除去されてシンプルに但し論理的には正しくプログラムの実行パスを表すことができるようになっている。 For example, if attention is paid only to the repetitive block and the immediately following block in FIG. 9, a control flow as shown in FIG. Compared with FIG. 3, it is branched when there is corresponding data and when there is no corresponding data, and when there is corresponding data, it only branches depending on whether the quantity is sufficient or insufficient. The path is removed so that the execution path of the program can be expressed simply but logically.
以上本技術の実施の形態について説明したが、本技術はこれに限定されるものではない。例えば、図5及び図6で示した機能ブロック図は一例であって、必ずしも実際のプログラムモジュール構成とは異なる場合がある。 Although the embodiment of the present technology has been described above, the present technology is not limited to this. For example, the functional block diagrams shown in FIG. 5 and FIG. 6 are examples, and may differ from actual program module configurations.
処理フローについても処理結果が変わらない限り、ステップの順番を入れ替えたり、並列に実行するようにしても良い。 As for the processing flow, as long as the processing result does not change, the order of the steps may be changed or may be executed in parallel.
なお、上で述べたシンボリック実行支援装置等は、コンピュータ装置であって、図23に示すように、メモリ2501とプロセッサ(CPU2503)とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
Note that the symbolic execution support apparatus described above is a computer apparatus, and as shown in FIG. 23, a display connected to a
以上述べた本実施の形態をまとめると、以下のようになる。 The above-described embodiment can be summarized as follows.
本シンボリック実行支援方法は、(A)プログラムデータ格納部に格納されている分析対象のプログラムから、繰り返し制御変数を変化させて特定のケースを探索して当該特定のケースにおいて特定の処理を実施するというパターンに合致する繰り返しブロックを抽出するステップと、(B)分析対象のプログラムにおいて、抽出された繰り返しブロック及び当該繰り返しブロックの直後のブロックを、真の場合に特定の処理を実施し且つ偽の場合に直後のブロックの処理を実施し且つ当該真偽に関する述語関数を含む二分岐構造に置換する変換処理を実施し、変換処理後のプログラムを変換後プログラム格納部に格納する変換処理ステップと、(C)二分岐構造に含まれる述語関数について論理制約を生成し、パスコンディションデータ格納部に格納するステップと、(D)変換後プログラム格納部に格納された変換処理後のプログラムのシンボリック実行時に、パスコンディションデータ格納部に格納されている述語関数を処理していることを検出すると、当該述語関数に対応付けられている論理制約から、述語関数の出現位置におけるパスコンディションを生成してシンボリック実行部の管理データに追加登録するステップとを含む。 In this symbolic execution support method, (A) a specific case is searched by repeatedly changing a control variable from an analysis target program stored in a program data storage unit, and a specific process is performed in the specific case. (B) In the program to be analyzed, in the program to be analyzed, the extracted repeated block and the block immediately after the repeated block are subjected to a specific process when true and false A conversion processing step for performing the processing of the immediately following block and performing a conversion process for replacing with a bifurcated structure including a predicate function relating to the truth, and storing the converted program in the converted program storage unit; (C) A logical constraint is generated for the predicate function included in the bifurcated structure, and the path condition data case And (D) detecting that the predicate function stored in the path condition data storage unit is being processed during symbolic execution of the converted program stored in the post-conversion program storage unit And generating a path condition at the appearance position of the predicate function from the logical constraint associated with the predicate function and additionally registering it in the management data of the symbolic execution unit.
このような処理を実施することによって、無駄なパスコンディションを生成せずに適切に実行パスを把握することができるようになる。 By executing such processing, it is possible to appropriately grasp the execution path without generating a useless path condition.
また、上で述べた変換処理が、述語関数の宣言を分析対象のプログラムに追加する処理と、繰り返し制御変数で今回のケースを特定するためのカレントデータ設定文を、繰り返し制御変数を固定の値に設定したカレントデータ設定文に置換する処理とを含むようにしてもよい。正しい文法の下に、シンボリック実行を行うことができるようになる。 In addition, the conversion process described above adds the declaration of the predicate function to the analysis target program, the current data setting statement for identifying the current case with the repeat control variable, and the repeat control variable as a fixed value. And a process for replacing with the current data setting sentence set in (1). You will be able to perform symbolic execution under the correct grammar.
また、上で述べたパターンは、特定の処理において繰り返し制御変数を使用していないという条件を含むパターンである場合もある。繰り返し制御変数を使用している場合には、単純な二分岐構造とは異なる場合があるためである。 In addition, the pattern described above may be a pattern including a condition that the control variable is not repeatedly used in a specific process. This is because when a repetitive control variable is used, it may be different from a simple bifurcated structure.
さらに、上で述べた変換処理ステップが、分析対象のプログラムから、繰り返し制御変数で今回のケースを特定するためのカレントデータ設定文と、抽出された繰り返しブロックに含まれる特定の処理のブロックと、抽出された繰り返しブロックの直後のブロックとを抽出し、対応付けて存在チェックテーブルに登録するステップと、存在チェックテーブルに対応付けられているデータで二分岐構造を生成するステップとを含むようにしてもよい。このようにすれば適切な二分岐構造を生成することができるようになる。 Furthermore, the conversion processing step described above includes, from the analysis target program, a current data setting statement for identifying the current case with a repetitive control variable, a specific processing block included in the extracted repetitive block, A step immediately after the extracted repetitive block may be extracted and associated and registered in the existence check table, and a two-branch structure may be generated using data associated with the existence check table. . In this way, an appropriate bifurcated structure can be generated.
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ(例えばROM)、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、RAM等の記憶装置に一時保管される。 A program for causing a computer to perform the processing described above can be created, such as a flexible disk, a CD-ROM, a magneto-optical disk, a semiconductor memory (for example, ROM), a hard disk, etc. Stored in a computer-readable storage medium or storage device. Note that data being processed is temporarily stored in a storage device such as a RAM.
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。 The following supplementary notes are further disclosed with respect to the embodiments including the above examples.
(付記1)
プログラムデータ格納部に格納されている分析対象のプログラムから、繰り返し制御変数を変化させて特定のケースを探索して当該特定のケースにおいて特定の処理を実施するというパターンに合致する繰り返しブロックを抽出するステップと、
前記分析対象のプログラムにおいて、抽出された前記繰り返しブロック及び当該繰り返しブロックの直後のブロックを、真の場合に前記特定の処理を実施し且つ偽の場合に前記直後のブロックの処理を実施し且つ当該真偽に関する述語関数を含む二分岐構造に置換する変換処理を実施し、変換処理後のプログラムを変換後プログラム格納部に格納する変換処理ステップと、
前記二分岐構造に含まれる前記述語関数について論理制約を生成し、パスコンディションデータ格納部に格納するステップと、
前記変換後プログラム格納部に格納された前記変換処理後のプログラムのシンボリック実行時に、前記パスコンディションデータ格納部に格納されている前記述語関数を処理していることを検出すると、当該述語関数に対応付けられている論理制約から、前記述語関数の出現位置におけるパスコンディションを生成して前記シンボリック実行部の管理データに追加登録するステップと、
を、コンピュータに実行させるためのシンボリック実行支援プログラム。
(Appendix 1)
From a program to be analyzed stored in the program data storage unit, a repeated control variable is changed to search for a specific case, and a repeated block that matches a pattern of executing a specific process in the specific case is extracted. Steps,
In the program to be analyzed, the extracted repeated block and the block immediately after the repeated block are subjected to the specific processing when true and the processing of the immediately following block is performed when false. A conversion process step of performing a conversion process to replace with a bifurcated structure including a predicate function relating to true / false, and storing the converted program in the converted program storage unit;
Generating a logical constraint for the predescription word function included in the two-branch structure and storing it in a path condition data storage unit;
When it is detected that the predescription function stored in the path condition data storage unit is being processed during symbolic execution of the converted program stored in the post-conversion program storage unit, the predicate function A step of generating a path condition at the appearance position of the previous description word function from the associated logical constraint and additionally registering it in the management data of the symbolic execution unit;
Is a symbolic execution support program for causing a computer to execute.
(付記2)
前記変換処理が、
前記述語関数の宣言を前記分析対象のプログラムに追加する処理と、
前記繰り返し制御変数で今回のケースを特定するためのカレントデータ設定文を、前記繰り返し制御変数を固定の値に設定したカレントデータ設定文に置換する処理と、
を含む付記1記載のシンボリック実行支援プログラム。
(Appendix 2)
The conversion process is
A process of adding a declaration of a predescription function to the program to be analyzed;
A process of replacing a current data setting statement for identifying the current case with the repetition control variable with a current data setting statement in which the repetition control variable is set to a fixed value;
A symbolic execution support program according to
(付記3)
前記パターンが、前記特定の処理において繰り返し制御変数を使用していないという条件を含むパターンである
付記1又は2記載のシンボリック実行支援プログラム。
(Appendix 3)
The symbolic execution support program according to
(付記4)
前記変換処理ステップが、
前記分析対象のプログラムから、前記繰り返し制御変数で今回のケースを特定するためのカレントデータ設定文と、抽出された前記繰り返しブロックに含まれる前記特定の処理のブロックと、抽出された前記繰り返しブロックの直後のブロックとを抽出し、対応付けて存在チェックテーブルに登録するステップと、
前記存在チェックテーブルに対応付けられているデータで前記二分岐構造を生成するステップと、
を含む付記1乃至3のいずれか1つ記載のシンボリック実行支援プログラム。
(Appendix 4)
The conversion processing step includes:
From the analysis target program, a current data setting statement for specifying the current case with the repetition control variable, the block of the specific process included in the extracted repetition block, and the extracted repetition block Extracting the block immediately after and registering it in the presence check table in association with each other;
Generating the bifurcated structure with data associated with the presence check table;
The symbolic execution support program according to any one of
(付記5)
プログラムデータ格納部に格納されている分析対象のプログラムから、繰り返し制御変数を変化させて特定のケースを探索して当該特定のケースにおいて特定の処理を実施するというパターンに合致する繰り返しブロックを抽出するステップと、
前記分析対象のプログラムにおいて、抽出された前記繰り返しブロック及び当該繰り返しブロックの直後のブロックを、真の場合に前記特定の処理を実施し且つ偽の場合に前記直後のブロックの処理を実施し且つ当該真偽に関する述語関数を含む二分岐構造に置換する変換処理を実施し、変換処理後のプログラムを変換後プログラム格納部に格納する変換処理ステップと、
前記二分岐構造に含まれる前記述語関数について論理制約を生成し、パスコンディションデータ格納部に格納するステップと、
前記変換後プログラム格納部に格納された前記変換処理後のプログラムのシンボリック実行時に、前記パスコンディションデータ格納部に格納されている前記述語関数を処理していることを検出すると、当該述語関数に対応付けられている論理制約から、前記述語関数の出現位置におけるパスコンディションを生成して前記シンボリック実行部の管理データに追加登録するステップと、
を含み、コンピュータに実行されるシンボリック実行支援方法。
(Appendix 5)
From a program to be analyzed stored in the program data storage unit, a repeated control variable is changed to search for a specific case, and a repeated block that matches a pattern of executing a specific process in the specific case is extracted. Steps,
In the program to be analyzed, the extracted repeated block and the block immediately after the repeated block are subjected to the specific processing when true and the processing of the immediately following block is performed when false. A conversion process step of performing a conversion process to replace with a bifurcated structure including a predicate function relating to true / false, and storing the converted program in the converted program storage unit;
Generating a logical constraint for the predescription word function included in the two-branch structure and storing it in a path condition data storage unit;
When it is detected that the predescription function stored in the path condition data storage unit is being processed during symbolic execution of the converted program stored in the post-conversion program storage unit, the predicate function A step of generating a path condition at the appearance position of the previous description word function from the associated logical constraint and additionally registering it in the management data of the symbolic execution unit;
A symbolic execution support method executed on a computer.
(付記6)
プログラムデータ格納部に格納されている分析対象のプログラムから、繰り返し制御変数を変化させて特定のケースを探索して当該特定のケースにおいて特定の処理を実施するというパターンに合致する繰り返しブロックを抽出する処理対象特定部と、
前記分析対象のプログラムにおいて、抽出された前記繰り返しブロック及び当該繰り返しブロックの直後のブロックを、真の場合に前記特定の処理を実施し且つ偽の場合に前記直後のブロックの処理を実施し且つ当該真偽に関する述語関数を含む二分岐構造に置換する変換処理を実施し、変換処理後のプログラムを変換後プログラム格納部に格納する二分岐ブロック生成部と、
前記二分岐構造に含まれる前記述語関数について論理制約を生成し、パスコンディションデータ格納部に格納するパスコンディションテーブル生成部と、
前記変換後プログラム格納部に格納された前記変換処理後のプログラムのシンボリック実行時に、前記パスコンディションデータ格納部に格納されている前記述語関数を処理していることを検出すると、当該述語関数に対応付けられている論理制約から、前記述語関数の出現位置におけるパスコンディションを生成して前記シンボリック実行部の管理データに追加登録するパスコンディション動的追加部と、
を有するシンボリック実行支援装置。
(Appendix 6)
From a program to be analyzed stored in the program data storage unit, a repeated control variable is changed to search for a specific case, and a repeated block that matches a pattern of executing a specific process in the specific case is extracted. A processing target specifying part;
In the program to be analyzed, the extracted repeated block and the block immediately after the repeated block are subjected to the specific processing when true and the processing of the immediately following block is performed when false. A two-branch block generation unit that performs conversion processing to replace with a two-branch structure including a predicate function relating to true / false, and stores the converted program in the converted program storage unit;
A path condition table generating unit that generates a logical constraint for the pre-description word function included in the bifurcated structure and stores the logical constraint in a path condition data storage unit;
When it is detected that the predescription function stored in the path condition data storage unit is being processed during symbolic execution of the converted program stored in the post-conversion program storage unit, the predicate function A path condition dynamic addition unit that generates a path condition at the appearance position of the predescription word function from the associated logical constraint and additionally registers it in the management data of the symbolic execution unit;
A symbolic execution support device.
101 入力部 102 入力データ格納部
103 処理対象特定部 104 チェックパターン格納部
105 存在チェックテーブル格納部 106 二分岐構造生成部
107 変換後プログラム格納部
108 パスコンディションテーブル格納部
1031 ループ抽出部 1033 パターンチェック部
1061 ifブロック生成部
1063 パスコンディションテーブル生成部
151 パスコンディション動的追加部
200 シンボリック実行部
DESCRIPTION OF
108 path condition
1063 Path condition
Claims (6)
前記分析対象のプログラムにおいて、抽出された前記繰り返しブロック及び当該繰り返しブロックの直後のブロックを、真の場合に前記特定の処理を実施し且つ偽の場合に前記直後のブロックの処理を実施し且つ当該真偽に関する述語関数を含む二分岐構造に置換する変換処理を実施し、変換処理後のプログラムを変換後プログラム格納部に格納する変換処理ステップと、
前記二分岐構造に含まれる前記述語関数について論理制約を生成し、パスコンディションデータ格納部に格納するステップと、
前記変換後プログラム格納部に格納された前記変換処理後のプログラムのシンボリック実行時に、前記パスコンディションデータ格納部に格納されている前記述語関数を処理していることを検出すると、当該述語関数に対応付けられている論理制約から、前記述語関数の出現位置におけるパスコンディションを生成して前記シンボリック実行部の管理データに追加登録するステップと、
を、コンピュータに実行させるためのシンボリック実行支援プログラム。 From a program to be analyzed stored in the program data storage unit, a repeated control variable is changed to search for a specific case, and a repeated block that matches a pattern of executing a specific process in the specific case is extracted. Steps,
In the program to be analyzed, the extracted repeated block and the block immediately after the repeated block are subjected to the specific processing when true and the processing of the immediately following block is performed when false. A conversion process step of performing a conversion process to replace with a bifurcated structure including a predicate function relating to true / false, and storing the converted program in the converted program storage unit;
Generating a logical constraint for the predescription word function included in the two-branch structure and storing it in a path condition data storage unit;
When it is detected that the predescription function stored in the path condition data storage unit is being processed during symbolic execution of the converted program stored in the post-conversion program storage unit, the predicate function A step of generating a path condition at the appearance position of the previous description word function from the associated logical constraint and additionally registering it in the management data of the symbolic execution unit;
Is a symbolic execution support program for causing a computer to execute.
前記述語関数の宣言を前記分析対象のプログラムに追加する処理と、
前記繰り返し制御変数で今回のケースを特定するためのカレントデータ設定文を、前記繰り返し制御変数を固定の値に設定したカレントデータ設定文に置換する処理と、
を含む請求項1記載のシンボリック実行支援プログラム。 The conversion process is
A process of adding a declaration of a predescription function to the program to be analyzed;
A process of replacing a current data setting statement for identifying the current case with the repetition control variable with a current data setting statement in which the repetition control variable is set to a fixed value;
The symbolic execution support program according to claim 1, comprising:
請求項1又は2記載のシンボリック実行支援プログラム。 The symbolic execution support program according to claim 1, wherein the pattern includes a condition that a repetitive control variable is not used in the specific process.
前記分析対象のプログラムから、前記繰り返し制御変数で今回のケースを特定するためのカレントデータ設定文と、抽出された前記繰り返しブロックに含まれる前記特定の処理のブロックと、抽出された前記繰り返しブロックの直後のブロックとを抽出し、対応付けて存在チェックテーブルに登録するステップと、
前記存在チェックテーブルに対応付けられているデータで前記二分岐構造を生成するステップと、
を含む請求項1乃至3のいずれか1つ記載のシンボリック実行支援プログラム。 The conversion processing step includes:
From the analysis target program, a current data setting statement for specifying the current case with the repetition control variable, the block of the specific process included in the extracted repetition block, and the extracted repetition block Extracting the block immediately after and registering it in the presence check table in association with each other;
Generating the bifurcated structure with data associated with the presence check table;
4. The symbolic execution support program according to claim 1, comprising:
前記分析対象のプログラムにおいて、抽出された前記繰り返しブロック及び当該繰り返しブロックの直後のブロックを、真の場合に前記特定の処理を実施し且つ偽の場合に前記直後のブロックの処理を実施し且つ当該真偽に関する述語関数を含む二分岐構造に置換する変換処理を実施し、変換処理後のプログラムを変換後プログラム格納部に格納する変換処理ステップと、
前記二分岐構造に含まれる前記述語関数について論理制約を生成し、パスコンディションデータ格納部に格納するステップと、
前記変換後プログラム格納部に格納された前記変換処理後のプログラムのシンボリック実行時に、前記パスコンディションデータ格納部に格納されている前記述語関数を処理していることを検出すると、当該述語関数に対応付けられている論理制約から、前記述語関数の出現位置におけるパスコンディションを生成して前記シンボリック実行部の管理データに追加登録するステップと、
を含み、コンピュータに実行されるシンボリック実行支援方法。 From a program to be analyzed stored in the program data storage unit, a repeated control variable is changed to search for a specific case, and a repeated block that matches a pattern of executing a specific process in the specific case is extracted. Steps,
In the program to be analyzed, the extracted repeated block and the block immediately after the repeated block are subjected to the specific processing when true and the processing of the immediately following block is performed when false. A conversion process step of performing a conversion process to replace with a bifurcated structure including a predicate function relating to true / false, and storing the converted program in the converted program storage unit;
Generating a logical constraint for the predescription word function included in the two-branch structure and storing it in a path condition data storage unit;
When it is detected that the predescription function stored in the path condition data storage unit is being processed during symbolic execution of the converted program stored in the post-conversion program storage unit, the predicate function A step of generating a path condition at the appearance position of the previous description word function from the associated logical constraint and additionally registering it in the management data of the symbolic execution unit;
A symbolic execution support method executed on a computer.
前記分析対象のプログラムにおいて、抽出された前記繰り返しブロック及び当該繰り返しブロックの直後のブロックを、真の場合に前記特定の処理を実施し且つ偽の場合に前記直後のブロックの処理を実施し且つ当該真偽に関する述語関数を含む二分岐構造に置換する変換処理を実施し、変換処理後のプログラムを変換後プログラム格納部に格納する二分岐ブロック生成部と、
前記二分岐構造に含まれる前記述語関数について論理制約を生成し、パスコンディションデータ格納部に格納するパスコンディションテーブル生成部と、
前記変換後プログラム格納部に格納された前記変換処理後のプログラムのシンボリック実行時に、前記パスコンディションデータ格納部に格納されている前記述語関数を処理していることを検出すると、当該述語関数に対応付けられている論理制約から、前記述語関数の出現位置におけるパスコンディションを生成して前記シンボリック実行部の管理データに追加登録するパスコンディション動的追加部と、
を有するシンボリック実行支援装置。 From a program to be analyzed stored in the program data storage unit, a repeated control variable is changed to search for a specific case, and a repeated block that matches a pattern of executing a specific process in the specific case is extracted. A processing target specifying part;
In the program to be analyzed, the extracted repeated block and the block immediately after the repeated block are subjected to the specific processing when true and the processing of the immediately following block is performed when false. A two-branch block generation unit that performs conversion processing to replace with a two-branch structure including a predicate function relating to true / false, and stores the converted program in the converted program storage unit;
A path condition table generating unit that generates a logical constraint for the pre-description word function included in the bifurcated structure and stores the logical constraint in a path condition data storage unit;
When it is detected that the predescription function stored in the path condition data storage unit is being processed during symbolic execution of the converted program stored in the post-conversion program storage unit, the predicate function A path condition dynamic addition unit that generates a path condition at the appearance position of the predescription word function from the associated logical constraint and additionally registers it in the management data of the symbolic execution unit;
A symbolic execution support device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010057094A JP5440287B2 (en) | 2010-03-15 | 2010-03-15 | Symbolic execution support program, method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010057094A JP5440287B2 (en) | 2010-03-15 | 2010-03-15 | Symbolic execution support program, method and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011191985A true JP2011191985A (en) | 2011-09-29 |
JP5440287B2 JP5440287B2 (en) | 2014-03-12 |
Family
ID=44796829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010057094A Expired - Fee Related JP5440287B2 (en) | 2010-03-15 | 2010-03-15 | Symbolic execution support program, method and apparatus |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5440287B2 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013143067A (en) * | 2012-01-12 | 2013-07-22 | Fujitsu Ltd | Generating device, generating method, and generating program |
WO2014168164A1 (en) * | 2013-04-10 | 2014-10-16 | 日本電気株式会社 | Network verification device, network verification method, and program |
JP2015204109A (en) * | 2014-04-15 | 2015-11-16 | 富士通株式会社 | State parameterization in symbolic execution for software test |
JP2016173756A (en) * | 2015-03-17 | 2016-09-29 | 富士通株式会社 | Test case generation program, test case generation method, and test case generation device |
JP2018028879A (en) * | 2016-08-19 | 2018-02-22 | 日本電信電話株式会社 | Program analyzer, program analysis method and program analysis program |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11272503A (en) * | 1998-03-24 | 1999-10-08 | Hitachi Software Eng Co Ltd | Device for automatically generating test data of program |
JP2000259401A (en) * | 1999-03-05 | 2000-09-22 | Ntt Communicationware Corp | Source program standardizing device and method for standardizing source program |
JP2009087355A (en) * | 2007-10-02 | 2009-04-23 | Fujitsu Ltd | System and method for providing symbolic execution engine for validating web application |
-
2010
- 2010-03-15 JP JP2010057094A patent/JP5440287B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11272503A (en) * | 1998-03-24 | 1999-10-08 | Hitachi Software Eng Co Ltd | Device for automatically generating test data of program |
JP2000259401A (en) * | 1999-03-05 | 2000-09-22 | Ntt Communicationware Corp | Source program standardizing device and method for standardizing source program |
JP2009087355A (en) * | 2007-10-02 | 2009-04-23 | Fujitsu Ltd | System and method for providing symbolic execution engine for validating web application |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013143067A (en) * | 2012-01-12 | 2013-07-22 | Fujitsu Ltd | Generating device, generating method, and generating program |
WO2014168164A1 (en) * | 2013-04-10 | 2014-10-16 | 日本電気株式会社 | Network verification device, network verification method, and program |
JPWO2014168164A1 (en) * | 2013-04-10 | 2017-02-16 | 日本電気株式会社 | Network verification apparatus, network verification method, and program |
JP2015204109A (en) * | 2014-04-15 | 2015-11-16 | 富士通株式会社 | State parameterization in symbolic execution for software test |
JP2016173756A (en) * | 2015-03-17 | 2016-09-29 | 富士通株式会社 | Test case generation program, test case generation method, and test case generation device |
JP2018028879A (en) * | 2016-08-19 | 2018-02-22 | 日本電信電話株式会社 | Program analyzer, program analysis method and program analysis program |
Also Published As
Publication number | Publication date |
---|---|
JP5440287B2 (en) | 2014-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150169435A1 (en) | Method and apparatus for mining test coverage data | |
JP5440287B2 (en) | Symbolic execution support program, method and apparatus | |
CN105095304A (en) | Log template generation method and equipment | |
CN102306098A (en) | Implicit taint propagation system and scheme thereof | |
JP4586864B2 (en) | Automatic property generator | |
JP5505227B2 (en) | Repetitive symbolic execution method, program, and apparatus | |
KR20190020363A (en) | Method and apparatus for analyzing program by associating dynamic analysis with static analysis | |
US8819645B2 (en) | Application analysis device | |
CN107977304B (en) | System debugging method and device | |
JP6665576B2 (en) | Support device, support method, and program | |
US20220156174A1 (en) | Automated identification of lines of code related to errors field | |
JP5414633B2 (en) | Application execution apparatus and application execution method | |
JP6547345B2 (en) | Test case generation program, test case generation method and test case generation apparatus | |
JP6036089B2 (en) | Data transition trace device, data transition trace method, and data transition trace program | |
JP2012173745A (en) | Database analysis device and database analysis program | |
CN102411534A (en) | Breakpoint debugging method and debugger | |
JP5755861B2 (en) | Test case generation apparatus, test case generation method, and test case generation program | |
JP2016051367A (en) | Data analysis device, data analysis method, and program | |
US20090235223A1 (en) | Program generation apparatus and program generation method | |
KR20150041541A (en) | Method and apparatus for generating test bench for verification of a processor decoder | |
JP2013206310A (en) | Model inspection device, model inspection method, and program | |
JP6437396B2 (en) | Trace information management system, method, and program | |
CN104731949B (en) | Method and device for recognizing webpage skipping | |
JP2014021686A (en) | Test data generation device, program and method | |
WO2022249256A1 (en) | Api detection device, api detection method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130108 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130828 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130903 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131029 |
|
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: 20131119 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131202 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5440287 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |