請用此 Handle URI 來引用此文件:
http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/67345完整後設資料紀錄
| DC 欄位 | 值 | 語言 |
|---|---|---|
| dc.contributor.advisor | 李允中 | |
| dc.contributor.author | Kai-Fu Chang | en |
| dc.contributor.author | 張凱富 | zh_TW |
| dc.date.accessioned | 2021-06-17T01:28:39Z | - |
| dc.date.available | 2017-08-08 | |
| dc.date.copyright | 2017-08-08 | |
| dc.date.issued | 2017 | |
| dc.date.submitted | 2017-08-05 | |
| dc.identifier.citation | 無 | |
| dc.identifier.uri | http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/67345 | - |
| dc.description.abstract | 本研究目的在於如何成功將Java bytcode還原成原本的原始碼檔案,然而現今的最新反編譯技術仍無法完全達到此目的。在本篇論文發表的同時,大部分現有的反編譯器在執行的過程中不是產生程式例外錯誤訊息,不然就是無法將原本編譯好的bytecode成功轉換成執行結果相同的高階原始碼、剩餘其他的反編譯器則會直接傾印出類似於組合語言般的程式碼而直接結束反編譯工作的執行。於是在此,為了要達到我們的最終目的,我們對Procyon這個反編譯的程式設計框架執行了逆向軟體工程的分析,而Procyon是我們研究團隊分析認為是目前作為本研究素材的最佳的選擇之一。在我們的研究中,我們透過判別出當作基底的設計模式、重新建構軟體設計需求來分析了Procyon的軟體設計,最後再提出我們認為是項研究進步的重新設計的版本作為本研究的結果。我們的軟體重新設計主要著重於改善執行的程式效率及減少記憶體的浪費,在可預期的將來,我們將實作我們自己的軟體設計將Procyon框架的功能完成,並希望可修改現有的程序錯誤、成功建構一個功能完整的反編譯器來達到研究上的突破。 | zh_TW |
| dc.description.abstract | The ultimate goal of our research is to manage to decompile .class files into Java source code files. However, the current state-of-the-art decompilation technology cannot fully accomplish this goal for several reasons. At the time of publication of this article, most of the current available decompilers either produced exceptions during decompilation or failed to decompile Jave bytecodes to logically equivalent Java source code. The others just resulted in dumping assembly-like code to terminate decompilation. Hence, in order to reach the ultimate goal, we conducted the reverse-engineering on the ”Procyon” decompilation frameworks which we considered the best decompilation tool by far. In our research, we have analyzed the designs of Procyon frameworks by identifying the underlying design patterns, reconstructed the requirements by the designs, and finally proposed our redesign as the results of our research that we think is an improvement. Our redesign mainly improves time efficiency and reduces memory footprints. In the future, we will implement our design to complete Procyon frameworks and hope that we will fix most existing bugs to achieve a breakthrough of successfully building a decompiler that delivers. | en |
| dc.description.provenance | Made available in DSpace on 2021-06-17T01:28:39Z (GMT). No. of bitstreams: 1 ntu-106-R98922086-1.pdf: 3138723 bytes, checksum: 04da840bc737cd8393b60f9896ea1b72 (MD5) Previous issue date: 2017 | en |
| dc.description.tableofcontents | Acknowledgments i
Abstracts iii List of Figures viii List of Tables x Chapter 1 Motivation 1 Chapter 2 Introduction 2 2.1 Compiler Toolset Framework . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Core Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Reflection Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.4 Expressions framework . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Chapter 3 Compiler Toolset Framework 5 3.1 The Requirements Of Disassembler . . . . . . . . . . . . . . . . . . .6 3.2 Class Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3 Metadata (Class File Format) . . . . . . . . . . . . . . . . . . . . . . 7 3.4 Metadata System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.5 Intermediate Representation (IR) . . . . . . . . . . . . . . . . . . . . 8 3.6 IR Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.7 Design Patterns Of Procyon Disassembler . . . . . . . . . . . . . . . 10 3.7.1 Factory Pattern - Signature Creation . . . . . . . . . . . . . . 10 3.7.2 Singleton Pattern . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.7.3 Adapter Pattern - Class File Loading . . . . . . . . . . . . . . 12 3.7.4 Visitor Pattern - Constant Pool Printing . . . . . . . . . . . . 14 3.7.5 Visitor Pattern - Generic Type Reification . . . . . . . . . . . 16 3.7.6 Visitor Pattern - Instruction Analysis . . . . . . . . . . . . . . 17 3.8Pros & Cons Of Disassembler Design . . . . . . . . . . . . . . . . . . 18 3.8.1 Advantages Of Procyon Disassembler . . . . . . . . . . . . . . 18 3.8.2 Disadvantages Of Procyon Disassembler . . . . . . . . . . . . 18 3.9 Redesign Of Disassembler . . . . . . . . . . . . . . . . . . . . . . . . 18 3.10 The Requirements Of Decompiler . . . . . . . . . . . . . . . . . . . . 19 3.10.1 Create An Initial AST . . . . . . . . . . . . . . . . . . . . . . 20 3.10.2 Run Transformations On The AST . . . . . . . . . . . . . . . 21 3.10.3 36 Kinds Of AST Transformations . . . . . . . . . . . . . . . 21 3.11 Generate Java Code. . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.12 Design Patterns Of Procyon Decompiler . . . . . . . . . . . . . . . . 23 3.12.1 Visitor Pattern - AST Transformations . . . . . . . . . . . . . 23 3.12.2 Visitor Pattern - Java Code Generation . . . . . . . . . . . . . 25 3.12.3 Facade Pattern - AST Builder . . . . . . . . . . . . . . . . . . 27 3.13 Pros & Cons Of Decompiler Design . . . . . . . . . . . . . . . . . . . 27 3.13.1 Advantages Of Procyon Decompiler . . . . . . . . . . . . . . . 28 3.13.2 Disadvantages Of Procyon Decompiler . . . . . . . . . . . . . 28 3.14 Redesign Of Decompiler . . . . . . . . . . . . . . . . . . . . . . . . . 28 Chapter 4 Core Framework 29 4.1 The Requirements Of Core Framework . . . . . . . . . . . . . . . . . 30 Chapter 5 Reflection Framework 31 5.1 The Requirements Of Reflection Framework . . . . . . . . . . . . . . 32 Chapter 6 Expressions Framework 33 6.1 The Requirements Of Expressions Framework . . . . . . . . . . . . . 34 Chapter 7 Conclusions 35 | |
| dc.language.iso | en | |
| dc.subject | 程式例外錯誤訊息 | zh_TW |
| dc.subject | 程式設計框架 | zh_TW |
| dc.subject | 設計模型 | zh_TW |
| dc.subject | 逆向軟體工程 | zh_TW |
| dc.subject | 原始碼 | zh_TW |
| dc.subject | 反編譯器 | zh_TW |
| dc.subject | framework | en |
| dc.subject | exceptions | en |
| dc.subject | source code | en |
| dc.subject | reverse-engineering | en |
| dc.subject | design patterns | en |
| dc.subject | decompiler | en |
| dc.title | 透過對Java反編譯器的重新設計來做可能的改善 | zh_TW |
| dc.title | Possible Improvements In Java Decompiler Through Redesigning | en |
| dc.type | Thesis | |
| dc.date.schoolyear | 105-2 | |
| dc.description.degree | 碩士 | |
| dc.contributor.oralexamcommittee | 吳佳麟,鄭有進,劉立頌,郭忠義 | |
| dc.subject.keyword | 反編譯器,程式例外錯誤訊息,原始碼,逆向軟體工程,設計模型,程式設計框架, | zh_TW |
| dc.subject.keyword | decompiler,exceptions,source code,reverse-engineering,design patterns,framework, | en |
| dc.relation.page | 36 | |
| dc.identifier.doi | 10.6342/NTU201702564 | |
| dc.rights.note | 有償授權 | |
| dc.date.accepted | 2017-08-07 | |
| dc.contributor.author-college | 電機資訊學院 | zh_TW |
| dc.contributor.author-dept | 資訊工程學研究所 | zh_TW |
| 顯示於系所單位: | 資訊工程學系 | |
文件中的檔案:
| 檔案 | 大小 | 格式 | |
|---|---|---|---|
| ntu-106-1.pdf 未授權公開取用 | 3.07 MB | Adobe PDF |
系統中的文件,除了特別指名其著作權條款之外,均受到著作權保護,並且保留所有的權利。
