請用此 Handle URI 來引用此文件:
http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/35296
完整後設資料紀錄
DC 欄位 | 值 | 語言 |
---|---|---|
dc.contributor.advisor | 陳俊良 | |
dc.contributor.author | Chin-Chih Wang | en |
dc.contributor.author | 王勁智 | zh_TW |
dc.date.accessioned | 2021-06-13T06:47:07Z | - |
dc.date.available | 2011-08-05 | |
dc.date.copyright | 2011-08-05 | |
dc.date.issued | 2011 | |
dc.date.submitted | 2011-07-22 | |
dc.identifier.citation | [1] (2011, June) Android Open Source Project. [Online]. http://source.android.com/
[2] K. Arnold, J. Gosling, and D. Holmes, The Java™ Programming Language, 4th ed., 2005. [3] T. Lindholm and F. Yellin, The Java Virtual Machine Specification, 2nd ed.: Addison-Wesley, 1999. [4] P. Kouznetsov. (2011, June) Jad - the Fast Java Decompiler. [Online]. http://www.varaneckas.com/jad [5] E. Smith. (2011, June) Mocha, the Java Decompiler. [Online]. http://www.brouhaha.com/~eric/software/mocha/ [6] (2011, June) Online Java Decompiler. [Online]. http://www.tigernt.com/tools/Java/index.shtml [7] J. Meyer and D. Reynaud. (2011, June) Jasmin. [Online]. http://jasmin.sourceforge.net/ [8] (2011, June) GCJ: The GNU Compiler for Java Program Language. [Online]. http://gcc.gnu.org/java/index.html [9] G. Paller. (2011, June) Dedexer user's manual. [Online]. http://dedexer.sourceforge.net/ [10] J. Freke. (2011, June) smali - An assembler/disassembler for Android's dex format. [Online]. http://code.google.com/p/smali/ [11] pxb1988. (2011, June) dex2jar. [Online]. http://code.google.com/p/dex2jar/ [12] D. Octeau, W. Enck, and P. McDaniel. (2009) Decompiling Android Applications. [Online]. http://nsrc.cse.psu.edu/slides/id09/NSRC_ID09_poster_damienocteau.pdf [13] T. Proebsting and S. Watterson, 'Krakatoa: Decompilation in Java (Does Bytecode Reveal Source?),' in Third USENIX Conference on Object-Oriented Technologies (COOTS), 1997. [14] L. Ramshaw, 'Eliminating go to's while preserving program structure,' Journal of the ACM (JACM), vol. 35, no. 4, pp. 893-920, Oct. 1988. [15] R. Cytron, J. Ferrante, B. Rosen, M. Wegman, and F. Zadeck , 'An efficient method of computing static single assignment form,' in POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, 1989, pp. 25-35. | |
dc.identifier.uri | http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/35296 | - |
dc.description.abstract | 隨著Android應用日漸普及,在不久的將來,使用者對於Android應用程式勢必會有不同的最佳化需求,甚至是轉換成不同的檔案格式,例如將Dex檔案轉換回Java檔案。然而,以現階段來說,針對Java及Class檔案開發的二元轉換及最佳化框架資源,是遠比Dex檔案所擁有的豐富。因此,我們希望在Java家族的二元轉換上建立一條路徑,使得Dex檔案也能享受到屬於Class檔案的資源。
我們的研究目標是開發Dex檔案回到Java檔案的反編譯器。本篇論文將專注於控制結構的建立,引用了Class-to-Java反編譯器的Goto Elimination方法,再針對Dex檔案的特性修改,以達到移除goto指令,建立對應控制結構的目標。最後依照建立的控制結構,寫出Java原始檔。 | zh_TW |
dc.description.abstract | Because Android is more and more popular, users will have different optimization request about Android applications in the near future. They also have to transform the file into different format, such as transforming Android dex file to Java source file. However, the resources of binary transformations and optimization frameworks for Java source and Java class file are much more fruitful than those for Android dex file. In this thesis, we want to create a binary transformation path from Android dex file to Java source and Java class file.
Our goal is to develop a Dex-to-Java decompiler. This thesis will focus on control structure creation. We adopt the goto-elimination algorithm of a Class-to-Java decompiler. And then, according to Android dex property, we modify the algorithm in order to remove goto instructions and construct corresponding control structures. Finally, we can write down the Java source file according to these control structures. | en |
dc.description.provenance | Made available in DSpace on 2021-06-13T06:47:07Z (GMT). No. of bitstreams: 1 ntu-100-R98922125-1.pdf: 616681 bytes, checksum: 3caccc340956abd997df42572f45e715 (MD5) Previous issue date: 2011 | en |
dc.description.tableofcontents | 口試委員會審定書 #
誌謝 i 中文摘要 ii ABSTRACT iii 目錄 iv 圖目錄 vi 表目錄 vii 1. 介紹 1 1.1 研究動機 1 1.2 目標 2 1.3 論文架構 2 2. 背景知識 3 2.1 Java家族的二元轉換 3 2.2 Proebsting’s Algorithm 5 2.2.1 Expression Recovery 5 2.2.2 Goto Elimination 6 2.2.3 Code Transformation 9 2.2.4 Expression Recovery的必要性 12 2.3 Class檔案及Dex檔案的差異 13 2.4 SSA形式 16 3. 系統架構 18 3.1 系統概述 18 3.2 系統架構-Control Structure Creator 19 3.2.1 Resorting區塊 20 3.2.2 ExpressionRecovery區塊 22 3.2.3 GotoElimination區塊 22 3.2.4 CodeTransformation區塊 24 3.2.5 JavaWriter 24 4. Dex檔案的Expression Recovery 25 4.1 問題的定義 25 4.1.1 Expression Recovery 25 4.1.2 Stack Machine的Expression Recovery 26 4.1.3 Register Machine的Expression Recovery 28 4.2 設計與實作 28 4.2.1 SSA形式與Phi-function 28 4.2.2 取代方針 29 4.2.3 實作程序 30 5. 結果 34 6. 結論及未來工作 40 6.1 結論 40 6.2 未來工作 40 參考文獻 42 | |
dc.language.iso | zh-TW | |
dc.title | Android的Dex反編譯器設計與實作:控制結構部分 | zh_TW |
dc.title | Android’s Dex Decompiler : Control Structure Part | en |
dc.type | Thesis | |
dc.date.schoolyear | 99-2 | |
dc.description.degree | 碩士 | |
dc.contributor.oralexamcommittee | 甘宗左,徐國偉 | |
dc.subject.keyword | 反編譯器,Goto Elimination,Android,Dex,二元轉換, | zh_TW |
dc.subject.keyword | Decompiler,Goto Elimination,Android,Dex,Binary Transformation, | en |
dc.relation.page | 43 | |
dc.rights.note | 有償授權 | |
dc.date.accepted | 2011-07-25 | |
dc.contributor.author-college | 電機資訊學院 | zh_TW |
dc.contributor.author-dept | 資訊工程學研究所 | zh_TW |
顯示於系所單位: | 資訊工程學系 |
文件中的檔案:
檔案 | 大小 | 格式 | |
---|---|---|---|
ntu-100-1.pdf 目前未授權公開取用 | 602.23 kB | Adobe PDF |
系統中的文件,除了特別指名其著作權條款之外,均受到著作權保護,並且保留所有的權利。