Skip navigation

DSpace

機構典藏 DSpace 系統致力於保存各式數位資料(如:文字、圖片、PDF)並使其易於取用。

點此認識 DSpace
DSpace logo
English
中文
  • 瀏覽論文
    • 校院系所
    • 出版年
    • 作者
    • 標題
    • 關鍵字
    • 指導教授
  • 搜尋 TDR
  • 授權 Q&A
    • 我的頁面
    • 接受 E-mail 通知
    • 編輯個人資料
  1. NTU Theses and Dissertations Repository
  2. 電機資訊學院
  3. 資訊工程學系
請用此 Handle URI 來引用此文件: http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/67345
完整後設資料紀錄
DC 欄位值語言
dc.contributor.advisor李允中
dc.contributor.authorKai-Fu Changen
dc.contributor.author張凱富zh_TW
dc.date.accessioned2021-06-17T01:28:39Z-
dc.date.available2017-08-08
dc.date.copyright2017-08-08
dc.date.issued2017
dc.date.submitted2017-08-05
dc.identifier.citation無
dc.identifier.urihttp://tdr.lib.ntu.edu.tw/jspui/handle/123456789/67345-
dc.description.abstract本研究目的在於如何成功將Java bytcode還原成原本的原始碼檔案,然而現今的最新反編譯技術仍無法完全達到此目的。在本篇論文發表的同時,大部分現有的反編譯器在執行的過程中不是產生程式例外錯誤訊息,不然就是無法將原本編譯好的bytecode成功轉換成執行結果相同的高階原始碼、剩餘其他的反編譯器則會直接傾印出類似於組合語言般的程式碼而直接結束反編譯工作的執行。於是在此,為了要達到我們的最終目的,我們對Procyon這個反編譯的程式設計框架執行了逆向軟體工程的分析,而Procyon是我們研究團隊分析認為是目前作為本研究素材的最佳的選擇之一。在我們的研究中,我們透過判別出當作基底的設計模式、重新建構軟體設計需求來分析了Procyon的軟體設計,最後再提出我們認為是項研究進步的重新設計的版本作為本研究的結果。我們的軟體重新設計主要著重於改善執行的程式效率及減少記憶體的浪費,在可預期的將來,我們將實作我們自己的軟體設計將Procyon框架的功能完成,並希望可修改現有的程序錯誤、成功建構一個功能完整的反編譯器來達到研究上的突破。zh_TW
dc.description.abstractThe 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.provenanceMade 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.tableofcontentsAcknowledgments 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.isoen
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.subjectframeworken
dc.subjectexceptionsen
dc.subjectsource codeen
dc.subjectreverse-engineeringen
dc.subjectdesign patternsen
dc.subjectdecompileren
dc.title透過對Java反編譯器的重新設計來做可能的改善zh_TW
dc.titlePossible Improvements In Java Decompiler Through Redesigningen
dc.typeThesis
dc.date.schoolyear105-2
dc.description.degree碩士
dc.contributor.oralexamcommittee吳佳麟,鄭有進,劉立頌,郭忠義
dc.subject.keyword反編譯器,程式例外錯誤訊息,原始碼,逆向軟體工程,設計模型,程式設計框架,zh_TW
dc.subject.keyworddecompiler,exceptions,source code,reverse-engineering,design patterns,framework,en
dc.relation.page36
dc.identifier.doi10.6342/NTU201702564
dc.rights.note有償授權
dc.date.accepted2017-08-07
dc.contributor.author-college電機資訊學院zh_TW
dc.contributor.author-dept資訊工程學研究所zh_TW
顯示於系所單位:資訊工程學系

文件中的檔案:
檔案 大小格式 
ntu-106-1.pdf
  未授權公開取用
3.07 MBAdobe PDF
顯示文件簡單紀錄


系統中的文件,除了特別指名其著作權條款之外,均受到著作權保護,並且保留所有的權利。

社群連結
聯絡資訊
10617臺北市大安區羅斯福路四段1號
No.1 Sec.4, Roosevelt Rd., Taipei, Taiwan, R.O.C. 106
Tel: (02)33662353
Email: ntuetds@ntu.edu.tw
意見箱
相關連結
館藏目錄
國內圖書館整合查詢 MetaCat
臺大學術典藏 NTU Scholars
臺大圖書館數位典藏館
本站聲明
© NTU Library All Rights Reserved