標題: Java程式語言之改進研究
A Study on the Enhancements of the Java Programming Language
作者: 陳建財
Jien-Tsai Chan
楊武
Wuu Yang
資訊科學與工程研究所
關鍵字: 程式語言;屬性文法;Java programming language;obfuscation;attribute grammar;ambiguity;bytecode
公開日期: 2002
摘要: Java程式語言自1994年問世以來,已經變得越來越普遍,有許多應用程式採用Java來開發,特別是網際網路及企業使用之應用軟體。Java是個強調安全性與強固性的程式語言,而這些特性也正是上述的應用軟體所須要的。但是,由於Java的規格書是採文字敘述加上範例解說,並非以正規(formal)的方式做定義,因此暗藏其內的定義不清之處(ambiguities)並不容易發現,而這些定義不清之處卻會降低Java所強調的安全性與強固性。 我們提出了一套基於屬性文法(attribute grammar)的架構,以正規的方式,清楚及嚴謹地定義出Java裡存取權限修飾詞(access modifier)的語意,雖然所定義的只是整個Java規格的一個子集合,在開發這套架構的同時,也找出了所多Java規格裡定義不清或不規則的地方。 所發現到的這些問題可以幫助Java的設計者重新修訂語言,並且避免讓一般的Java程式設計師誤踩這些陷阱。此外,我們更嘗試利用這些發現到的問題,把它們轉化成更強的保護Java bytecode的方法。若對受我們的方法所保護的bytecode進行反編譯,所得到的結果將會是執行結果與原來不一致的程式,或是無法再編譯一次。
Recently, Java programming language becomes very popular. Many applications are implemented in Java, especially the internet and enterprise applications. Java claims itself a secure and robust programming language, which are exactly what those applications need. However, the Java language specification is defined in informal descriptions that may cause ambiguities. Ambiguities are not easy to find out. The ambiguities in Java will decrease the security and robustness of Java. An attribute-grammar framework is proposed to help to define the semantics of access modifiers of Java in a formal way. Although it is only a subset of the whole Java specification, some ambiguities and irregularities are discovered while developing the framework. The discovered problems can help the designer of Java to revise the language and avoid general Java programmers to touch the traps. Furthermore, these problems can be used to protect compiled Java programs—bytecode files. Several techniques based on these problems are proposed to achieve stronger protection for bytecode files. The decompilation result of a bytecode file that is protected by our techniques could be semantic changed and uncompilable.
URI: http://140.113.39.130/cdrfb3/record/nctu/#NT910394001
http://hdl.handle.net/11536/70173
顯示於類別:畢業論文