§ 瀏覽學位論文書目資料
  
系統識別號 U0002-2006200918460100
DOI 10.6846/TKU.2009.00708
論文名稱(中文) 移除動態繫結的程式碼混亂化
論文名稱(英文) Obfuscation Based on Removing Dynamic Binding
第三語言論文名稱
校院名稱 淡江大學
系所名稱(中文) 資訊管理學系碩士班
系所名稱(英文) Department of Information Management
外國學位學校名稱
外國學位學院名稱
外國學位研究所名稱
學年度 97
學期 2
出版年 98
研究生(中文) 賴政良
研究生(英文) Jeng-Liang Lai
學號 695630128
學位類別 碩士
語言別 繁體中文
第二語言別
口試日期 2009-06-07
論文頁數 60頁
口試委員 指導教授 - 廖賀田
委員 - 張昭憲
委員 - 黃承龍
委員 - 楊欣哲
關鍵字(中) 動態繫結
程式碼混亂化
關鍵字(英) Dynamic-binding
Code-Obfuscation
第三語言關鍵字
學科別分類
中文摘要
物件導向語言Java已是非常流行的程式語言,但它的類別檔(class file)中含有大量的程式資訊,因而容易被逆編譯(de-compile)。本論文提出一套程式碼混亂器。它以去除動態繫結(dynamic binding)為手段來進行混亂化(obfuscation),使混亂後的程式碼更不容易被研讀,也使智慧財產能得到更好的保護。
英文摘要
Java, the object-oriented language, is a very popular programming language. But its class file, containing vast code information, is easy to be de-compiled. An obfuscation tool based on removing dynamic binding is proposed in this paper. After the obfuscation, code is more difficult to be studied, and the intellectual property will be protected in a better manner.
第三語言摘要
論文目次
目次頁
壹、	導論	1
  一、	研究動機	1
  二、	相關研究	3
  三、	論文概觀	4
貳、	物件導向基本概念	6
  一、	物件導向簡介	6
   (一)	類別	6
   (二)	物件	7
   (三)	封裝	7
   (四)	繼承	7
   (五)	動態繫結	8
  二、	Java語言名詞簡介	9
   (一)	super關鍵字	9
   (二)	介面與實作	9
   (三)	成員屬性或欄位	9
   (四)	成員函數或方法	10
   (五)	建構元	11
   (六)	函數覆寫(overriding)	11
   (七)	函數多載(overloading)	11
   (八)	套件(package)	12
   (九)	存取權限	12
參、	混亂化演算法	14
  一、	繼承攔截	15
   (一)	建立攔截類別	15
   (二)	調整繼承關係	16
   (三)	建立外部保護型存取欄位	17
   (四)	為外部實體函數建立攔截純上轉函數	17
  二、	去虛擬準備程序	18
   (一)	虛擬函數掏空	19
  三、	去除植根於內部的實體函數	24
   (一)	發配法去虛擬	24
   (二)	虛擬函數剝離法	28
  四、	去除植根於外部的實體函數	36
   (一)	內發配法去虛擬	36
   (二)	全發配法去虛擬	40
   (三)	剝離法去虛擬	44
肆、	系統測試與評估	48
伍、	結論與展望	58

 
表目錄
表1 實體函數抄製類別函數之前	21
表2 函數掏空過程	22
表3 函數掏空結果	23
表4 靜態發配函數之程式碼	26
表5更換內部實體函數呼叫之前	27
表6更換內部實體函數呼叫之後	27
表7 建立攔截指標類別	30
表8 建立內部類別的指標類別	30
表9 建立發配表關係	32
表10 建立攔截指標函數	33
表11 建立指標函數	34
表12 上提函數植根點	35
表13 建立植根於外部的發配函數	38
表14 實體函數攔截覆寫	39
表15 建立發配函數與預發配函數	41
表16 建立攔截指標函數	45
表17 建立實體函數攔截覆寫	47
表18植根內部虛擬函數系實驗結果,時間單位(ms)	51
表19演算法效能比較圖(植根內部虛擬函數系)	51
表20 植根外部虛擬函數系的實驗結果	52
表21各演算法效能比較圖(植根外部虛擬函數系)	53

 
圖目錄
圖1 繼承攔截前類別繼承樹示意圖	15
圖2 繼承攔截後類別繼承樹示意圖	16
圖3 實體函數植根類別說明圖	19
圖4 植根於內部的實體函數	25
圖5 植根於內部的實體函數	29
圖6 植根於外部的實體函數	37
圖7 植根於外部的實體函數	44
圖8 程式碼混亂器運作架構圖	48
參考文獻
鄭立婷、劉定衡等,“天文觀星系統--Twinkle Sky”,第十屆全國大專院校資訊管理實務專題暨資訊服務創新競賽,中華民國資訊管理學會,經濟部工業局合辦,http://www.csim.org.tw,2005/12/17。
郭肇安,“Java的語法樹與直譯機制”,淡江大學資訊管理學系碩士論文,2006/6。

Alex Kalinovsky, “Covert Java: Techniques for Decompiling, Patching, and Reverse Engineering”, Sams, May 2004.
Bjarne Stroustrup, “The C++ Programming Language 3rd Edition”, Addison-Wesley, May 1998.

C. Collberg, C. Thomborson, and D. Low, “A Taxonomy of Obfuscating Transformations”, Technical Report #148, Department of Computer Science, University of Auckland, July 1997.

C. Collberg, C. Thomborson, and D. Low, “Breaking abstractions and unstructuring data structures”, Proc. IEEE International Conference on Computer Languages p 28-38, May 1998.

C. S. Collberg, and C. Thomborson, “Watermarking, Tamper-proofing, and Obfuscation - Tools for software protection”, In IEEE Transactions on Software Engineering, volume 28, pages 735–746, August 2002.

Dr. Java, “Marvin Obfuscator”, http://www.drjava.de/obfuscator/, 2009

Grady Booch, “Object-Oriented Analysis and Design”, Addison-Wesley 1994.

Hidetoshi Ohuchi, “Jarg”, http://jarg.sourceforge.net/, 2003.

K. Arnold, J. Gosling, and D. Holmes, “The Java Programming Language 4th edition”, Addison-Wesley, November 2005.

K. Walrath, M. Campione, A. Huml, S. Zakhour, “The JFC Swing Tutorial: A Guide to Constructing GUIs, 2nd Edition”, Prentice Hall PTR, February 2004.

L. Ertaul, S. Venkatesh, “Novel Obfuscation Algorithms for Software Security”, Proceedings of the 2005 International Conference on Software Engineering Research and Practice, SERP’05, Las Vegas, June 2005.

PreEmptive, “DashO”, http://www.preemptive.com/products/dasho/index.html, 2009.

Retrologic Systems, “RetroGuard”, http://www.retrologic.com/retroguard-main.html, 2009.

Robert W. Sebesta, “Concept of Programming Language eighth edition” 2007

Sheng Liang, "Java Native Interface: Programmer's Guide and Specification" June, 1999

Stanley B. Lippman, “Inside the C++ Object Model”, Addison-Wesley 1996

Sun Microsystems, Inc., “Java SE HotSpot at a Glance”, http://java.sun.com/javase/technologies/hotspot/, 2008.

TIOBE Software BV, “TIOBE Programming Community Index for September 2009”, http://www.tiobe.com/tpci.htm

T. Lindholm, and F. Yellin, “The Java Virtual Machine Specification 2nd Edition”, Addison-Wesley April 1999.

yWorks,“yGuard”, 
http://www.yworks.com/en/products_yguard_about.htm, 2009.

Zelix Pty Ltd, “Zelix KlassMaster”, http://www.zelix.com/klassmaster/features.html, 2009.
論文全文使用權限
校內
校內紙本論文立即公開
同意電子論文全文授權校園內公開
校內電子論文於授權書繳交後1年公開
校外
同意授權
校外電子論文於授權書繳交後1年公開

如有問題,歡迎洽詢!
圖書館數位資訊組 (02)2621-5656 轉 2487 或 來信