WEKO3
アイテム
Javaバイトコードをデコンパイルするための効果的なアルゴリズム
https://ipsj.ixsq.nii.ac.jp/records/16961
https://ipsj.ixsq.nii.ac.jp/records/16961c9959b46-78af-4580-bba7-6f65e5f4814f
| 名前 / ファイル | ライセンス | アクション |
|---|---|---|
|
|
Copyright (c) 1999 by the Information Processing Society of Japan
|
|
| オープンアクセス | ||
| Item type | Trans(1) | |||||||
|---|---|---|---|---|---|---|---|---|
| 公開日 | 1999-12-15 | |||||||
| タイトル | ||||||||
| タイトル | Javaバイトコードをデコンパイルするための効果的なアルゴリズム | |||||||
| タイトル | ||||||||
| 言語 | en | |||||||
| タイトル | An Effective Decompilation Algorithm for Java Bytecodes | |||||||
| 言語 | ||||||||
| 言語 | jpn | |||||||
| キーワード | ||||||||
| 主題Scheme | Other | |||||||
| 主題 | 通常論文 | |||||||
| 資源タイプ | ||||||||
| 資源タイプ識別子 | http://purl.org/coar/resource_type/c_6501 | |||||||
| 資源タイプ | journal article | |||||||
| 著者所属 | ||||||||
| 東京工業大学情報理工学研究科 | ||||||||
| 著者所属 | ||||||||
| 東京工業大学情報理工学研究科 | ||||||||
| 著者所属 | ||||||||
| 東京工業大学情報理工学研究科 | ||||||||
| 著者所属(英) | ||||||||
| en | ||||||||
| Graduate School of Information Science and Engineering, Tokyo Institute of Technology | ||||||||
| 著者所属(英) | ||||||||
| en | ||||||||
| Graduate School of Information Science and Engineering, Tokyo Institute of Technology | ||||||||
| 著者所属(英) | ||||||||
| en | ||||||||
| Graduate School of Information Science and Engineering, Tokyo Institute of Technology | ||||||||
| 著者名 |
丸山, 冬彦
小川, 宏高
松岡, 聡
× 丸山, 冬彦 小川, 宏高 松岡, 聡
|
|||||||
| 著者名(英) |
Fuyuhiko, Maruyama
Hirotaka, Ogawa
Satoshi, Matsuoka
× Fuyuhiko, Maruyama Hirotaka, Ogawa Satoshi, Matsuoka
|
|||||||
| 論文抄録 | ||||||||
| 内容記述タイプ | Other | |||||||
| 内容記述 | 機械語命令列から同じ意味のソースプログラムを復元するデコンパイルという技術は古くから知られており 主に リバースエンジニアリングのための手段の一つとして利用されてきた.実際に Javaとそのバイトコードに関しても いくつかの処理系が提案されているが これまで提供されてきた処理系では Java言語には無いgotoを挿入するなど Java言語の文法を逸脱した結果を出力することがある.また デコンパイルのアルゴリズムがアドホックで 応用の利かないものであるため 我々のOpenJITコンパイラが要求するような 任意のバイトコードから正しいソース構造を復元するでコンパイラフロントエンドとして用いることができない.そこで 我々はJavaバイトコードから適切なJava言語の制御構造を復元するための効果的なアルゴリズムを新しく考案した.アルゴリズムの基本となる考え方は メソッドのコントロールフローグラフに対するドミネータツリーを用いるものである.これはブロック構造が完全な入れ子になる言語の場合 制御構造を表す任意のプログラム片はドミネータツリーにおいて ただ一つのサブツリーをなすという性質に基づいている.この一般性により アルゴリズムはJava以外の言語に適用することも可能である.OpenJITでの予備的な実装による評価では 他のデコンパイラが制御構造の復元に失敗するプログラムであっても 我々のアルゴリズムは適切にそれを復元し かつ 実行速度は同程度であることを示した. | |||||||
| 論文抄録(英) | ||||||||
| 内容記述タイプ | Other | |||||||
| 内容記述 | The technique called decompilation that reads sequences of machine code and generates the corresponding source program has been known for some time, and utilized primarily for reverse-engineering. For Java and its bytecode, although there have been several proposals of decompilers, most generate outputs that are inappropriately extend the Java language, such as insertion of gotos not present in Java. Moreover, the decompilation algorithms are somewhat ad-hoc and difficult to extend of verify its applicability, which is a hindrance to out OpenJIT compiler which requires a decompiler frontend to recover the correct source structure from arbitrary bytecode. Instead, we have devised a new and effective algorithm for decompilation, with emphasis on properly recovering control structures. The key idea is to base the algorithm around the dominator tree of the control flow graph of a method. This is based on the observation that, for a properly-nested block-structured language, each part of program representing a control structure corresponds to just a single subtree in the dominator tree. As such, the algorithm is general enough to be applied to other languages besides Java. The evaluation of our preliminary implementation in OpenJIT shows that our algorithm properly recovers control structures where other existing decompilers fail, and with relatively equivalent execution speeds. | |||||||
| 書誌レコードID | ||||||||
| 収録物識別子タイプ | NCID | |||||||
| 収録物識別子 | AA11464814 | |||||||
| 書誌情報 |
情報処理学会論文誌プログラミング(PRO) 巻 40, 号 SIG10(PRO5), p. 39-50, 発行日 1999-12-15 |
|||||||
| ISSN | ||||||||
| 収録物識別子タイプ | ISSN | |||||||
| 収録物識別子 | 1882-7802 | |||||||
| 出版者 | ||||||||
| 言語 | ja | |||||||
| 出版者 | 情報処理学会 | |||||||