請用此 Handle URI 來引用此文件:
http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/35129
完整後設資料紀錄
DC 欄位 | 值 | 語言 |
---|---|---|
dc.contributor.advisor | 陳俊良 | |
dc.contributor.author | Wei-Yu Hsieh | en |
dc.contributor.author | 謝韋佑 | zh_TW |
dc.date.accessioned | 2021-06-13T06:41:45Z | - |
dc.date.available | 2011-07-28 | |
dc.date.copyright | 2011-07-28 | |
dc.date.issued | 2011 | |
dc.date.submitted | 2011-07-25 | |
dc.identifier.citation | [1] Google. (2011, June) What is Android? | Android Developers. [Online]. http://developer.android.com/guide/basics/what-is-android.html
[2] comScore. (2011, Mar.) Android Takes Lead in U.S. Smartphone Market. [Online]. http://www.comscoredatamine.com/2011/03/android-takes-lead-in-u-s-smartphone-market/ [3] T. Lindholm, and F. Yellin, Java Virtual Machine Specification, 2nd ed.: Prentice Hall, 1999. [4] B. Cheng. (2011, June) Android: Dalvik VM Internals. [Online]. https://sites.google.com/site/developerdaytaiwan/google-developer-day-2008-taiwan/android-dalvik-vm-internals [5] Atanas Neshkov. (2011, June) DJ Java Decompiler - java disassembler decompiler and editor. [Online]. http://members.fortunecity.com/neshkov/dj.html [6] E. Dupuy. (2011, June) JD | Java Decompiler. [Online]. http://java.decompiler.free.fr/ [7] P. Kouznetsov. (2001) JAD Java Decompiler Download Mirror. [Online]. http://www.varaneckas.com/jad [8] P. Pominville, F. Qian, R. Vall’ee-Rai, L. Hendren, and C. Verbrugge, 'A framework for optimizing Java using attributes,' CC 2001, vol. 2027 of Lecture Notes in Computer Science, p. 334+, 2001. [9] J. Meyer, D. Reynaud, and I. Kharon. (2004) Jasmin Home Page. [Online]. http://jasmin.sourceforge.net/ [10] G. Paller. (2011, June) Dedexer user's manual. [Online]. http://dedexer.sourceforge.net/ [11] J. Freke. (10, Dec.) smali - An assembler/disassembler for Android's dex format. [Online]. http://code.google.com/p/smali/ [12] pxb1988. (2011, June) dex2jar. [Online]. http://code.google.com/p/dex2jar/issues/detail?id=13 [13] The Android Open Source Project. (2011, June).dex — Dalvik Executable Format. [Online]. http://developer.android.com/sdk/ [14] R. Vall’ee-Rai, P. Co, E. Gagnon, L. Hendren, P. Lam, and V. Sundaresan, 'Soot - a Java bytecode optimization framework,' Proceedings of CASCON '99, pp. 125-135, 1999. [15] R. Vall’ee-Rai, E. Gagnon, L. Hendren, P. Lam, P. Pominville and V. Sundaresan, 'Optimizing Java bytecode using the Soot frame-work: Is it feasible?,' Proceedings of CC'00, vol. 1781 of Lecture Notes in Computer Science, pp. 18-34, 2000. [16] J. Lhot’ak, O. Lhot’ak and L. Hendren, 'Integrating the Soot compiler infrastructure into an IDE,' Proceedings of the 13th International Conference of Compiler Construction, vol. 2985 of Lecture Notes in Computer Science, pp. 281-297, Apr. 2004. [17] A. Einarsson and J. D. Nielson. (2008, July) A Survivor's Guide to Java Program Analysis with Soot. [Online]. http://www.brics.dk/SootGuide/ [18] E. M. Gagnon and L. J. Hendren, 'Intra-Procedural Inference of Static Types for Java Bytecode,' Technical Report Sable 1998-5, Oct. 1998. [19] E. Gagnon, L. J. Hendren, and G. Marceau, 'Efficient inference of static types for Java bytecode,' Proceedings of Static Analysis Symposium, vol. 1824 of Lecture Notes in Computer Science, pp. 199-219, 2000. [20] B. Bellamy, P. Avgustinov, O. de Moor and D. Sereni, 'Efficient local type inference,' ACM SIGPLAN Notices, vol. 43, no. 10, pp. 475-492, 2008. [21] J. Miecznikowski and L. Hendren, 'Decompiling Java using staged encapsulation,' Proceedings of the Working Conference on Reverse Engineering, pp. 368-374, Oct. 2001. [22] J. Gosling, B. Joy, G. Steele, and G. Bracha, The Java Language Specification.: Addison Wesley, 2005. [23] J. Palsberg and M. I. Schwartzbach, 'Object-oriented type inference,' Proceedings of the Conference on Object-oriented Programming Systems, Languages and Applications, vol. 26, no. 11, pp. 146–161, Nov. 1991. [24] Agesen, O., 'Constraint-based type inference and parametric polymorphism,' Proceedings of the First International Static Analysis Symposium, vol. 864 of Lecture Notes in Computer Science, pp. 78-100, Sep. 1994. [25] Agesen, O., 'The Cartesian product algorithm: Simple and precise type inference of parametric polymorphism,' ECOOP’95: Object-Oriented Programming, 9th European Conference, vol. 952 of Lecture Notes in Computer Science, pp. 2-26, Aug. 1995. [26] T. Lindholm, F. Yellin, The Java Virtual Machine Specification second edition.: Prentice Hall, 1999. [27] P. Lam, F. Qian, O. Lhotak, and E. Bodden. (2010, Mar.) Soot: a Java Optimization Framework. [Online]. http://www.sable.mcgill.ca/soot/ | |
dc.identifier.uri | http://tdr.lib.ntu.edu.tw/jspui/handle/123456789/35129 | - |
dc.description.abstract | 目前Android系統上的應用程式主要是由Java撰寫並編譯成為class檔案,而後再經由Android的dx編譯成dex檔案。dex檔案格式為一個register-based指令集以及為了行動裝置所最佳化而成的格式。目前對於dex的二元轉換工具仍然不夠豐富,而Java二元轉換工具多年來已經累積相當多的成果,因此將dex檔案加入豐富的Java二元轉換工具是目前的主要目標。
由於dex檔案在產生時並未將區域變數的型態資訊寫入,因此若要將dex檔案加入Java二元轉換工具中,其中一個重要的目標就是要將區域變數的型態補足。另外因為Android系統指令對於型態的寬鬆態度,使得型態推斷更加的困難,本論文提出並且實作了一個可以讀取dex檔案並且轉換為中介格式,最後實作出可以將區域變數的型態資訊補足的type inferencer,經由實驗,我們也成功的將數個程式從dex檔案格式反編譯成java檔案格式。 | zh_TW |
dc.description.abstract | Currently, Android applications are mainly written in Java language. After using javac to compile these Java source files into Java class files, we use Android dx compiler to convert these Java class files to dex files furthermore. Dex file is a kind of register-based instruction set and optimized for mobile devices. At present, the binary transformations for dex are not rich, but the binary transformation for Java are developed for many years. Therefore, our main target is joining dex file to Java binary transformations.
Dx compiler would not write local variable type information into dex file in codegen step. If we want to join dex file to Java binary transformation family, the main problem is that we need to infer the local variable type. Furthermore, Android system takes a lazy attitude about type. It causes type inference in dex more difficult. In this thesis, we provide and implement a type inferencer which can read dex file, transform it to the intermediate representation, and infer the local variable type. We also successfully decompile program from dex file format to the java file format by our experimentation. | en |
dc.description.provenance | Made available in DSpace on 2021-06-13T06:41:45Z (GMT). No. of bitstreams: 1 ntu-100-R98922098-1.pdf: 1754306 bytes, checksum: 3540adf81c5b1de57b069c4d732d4b70 (MD5) Previous issue date: 2011 | en |
dc.description.tableofcontents | 口試委員會審定書 #
誌謝 i 中文摘要 ii ABSTRACT iii 目錄 iv 圖目錄 vi 表目錄 vii 1. 簡介 1 1.1 研究動機 1 1.2 目標 3 1.3 論文架構 3 2. 背景知識 5 2.1 Dex檔案格式 5 2.2 dx內部資料結構與轉換過程 9 2.3 Soot 11 3. 型態推斷(Type Inference) 15 3.1 型態推斷的介紹以及分類 15 3.2 Class型態推斷的困難 18 3.2.1 Possible Type問題 18 3.2.2 Local Variable Coalescing問題 20 3.2.3 Intlike問題 21 3.3 Soot Type Inferencer 22 3.3.1 Type Inferencer Stage 1 23 3.3.2 Type Inferencer Stage 2(Intlike) 25 3.4 Dex型態推斷的困難 25 3.4.1 Generic-instruction問題 25 3.4.2 Generic-const-0問題 27 3.5 相關研究 28 4. 型態問題的解法 30 4.1 系統架構 30 4.2 型態推斷部分系統架構 32 4.3 Null Splitter 33 4.4 Primitive Type Inferencer 36 5. 結果 39 6. 結論及未來工作 41 6.1 結論 41 6.2 未來工作 41 參考文獻 42 附錄A: 例外的BasicBlock的連接 45 | |
dc.language.iso | zh-TW | |
dc.title | Android的Dex反編譯器設計與實作:型態推斷部分 | zh_TW |
dc.title | Android’s Dex Decompiler: Type Inference Part | en |
dc.type | Thesis | |
dc.date.schoolyear | 99-2 | |
dc.description.degree | 碩士 | |
dc.contributor.oralexamcommittee | 甘宗左,徐國偉 | |
dc.subject.keyword | 反編譯器,型態推斷,Android,dex,逆向工程, | zh_TW |
dc.subject.keyword | Decompiler,Type Inference,Android,dex,Reversed Engineering, | en |
dc.relation.page | 46 | |
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 目前未授權公開取用 | 1.71 MB | Adobe PDF |
系統中的文件,除了特別指名其著作權條款之外,均受到著作權保護,並且保留所有的權利。