跳到主要內容

臺灣博碩士論文加值系統

(18.97.9.175) 您好!臺灣時間:2024/12/08 10:24
字體大小: 字級放大   字級縮小   預設字形  
回查詢結果 :::

詳目顯示

我願授權國圖
: 
twitterline
研究生:張凱富
研究生(外文):Kai-Fu Chang
論文名稱:透過對Java反編譯器的重新設計來做可能的改善
論文名稱(外文):Possible Improvements In Java Decompiler Through Redesigning
指導教授:李允中李允中引用關係
口試日期:2017-07-26
學位類別:碩士
校院名稱:國立臺灣大學
系所名稱:資訊工程學研究所
學門:工程學門
學類:電資工程學類
論文種類:學術論文
論文出版年:2017
畢業學年度:105
語文別:英文
論文頁數:36
中文關鍵詞:反編譯器程式例外錯誤訊息原始碼逆向軟體工程設計模型程式設計框架
外文關鍵詞:decompilerexceptionssource codereverse-engineeringdesign patternsframework
相關次數:
  • 被引用被引用:0
  • 點閱點閱:232
  • 評分評分:
  • 下載下載:0
  • 收藏至我的研究室書目清單書目收藏:0
本研究目的在於如何成功將Java bytcode還原成原本的原始碼檔案,然而現今的最新反編譯技術仍無法完全達到此目的。在本篇論文發表的同時,大部分現有的反編譯器在執行的過程中不是產生程式例外錯誤訊息,不然就是無法將原本編譯好的bytecode成功轉換成執行結果相同的高階原始碼、剩餘其他的反編譯器則會直接傾印出類似於組合語言般的程式碼而直接結束反編譯工作的執行。於是在此,為了要達到我們的最終目的,我們對Procyon這個反編譯的程式設計框架執行了逆向軟體工程的分析,而Procyon是我們研究團隊分析認為是目前作為本研究素材的最佳的選擇之一。在我們的研究中,我們透過判別出當作基底的設計模式、重新建構軟體設計需求來分析了Procyon的軟體設計,最後再提出我們認為是項研究進步的重新設計的版本作為本研究的結果。我們的軟體重新設計主要著重於改善執行的程式效率及減少記憶體的浪費,在可預期的將來,我們將實作我們自己的軟體設計將Procyon框架的功能完成,並希望可修改現有的程序錯誤、成功建構一個功能完整的反編譯器來達到研究上的突破。
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.
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
QRCODE
 
 
 
 
 
                                                                                                                                                                                                                                                                                                                                                                                                               
第一頁 上一頁 下一頁 最後一頁 top