A Plagiarism Detection Technique for Java Program Using Bytecode Analysis

바이트코드 분석을 이용한 자바 프로그램 표절검사기법

  • 지정훈 (부산대학교 컴퓨터공학과) ;
  • 우균 (부산대학교 컴퓨터공학과) ;
  • 조환규 (부산대학교 컴퓨터공학과)
  • Published : 2008.07.15

Abstract

Most plagiarism detection systems evaluate the similarity of source codes and detect plagiarized program pairs. If we use the source codes in plagiarism detection, the source code security can be a significant problem. Plagiarism detection based on target code can be used for protecting the security of source codes. In this paper, we propose a new plagiarism detection technique for Java programs using bytecodes without referring their source codes. The plagiarism detection procedure using bytecode consists of two major steps. First, we generate the token sequences from the Java class file by analyzing the code area of methods. Then, we evaluate the similarity between token sequences using the adaptive local alignment. According to the experimental results, we can find the distributions of similarities of the source codes and that of bytecodes are very similar. Also, the correlation between the similarities of source code pairs and those of bytecode pairs is high enough for typical test data. The plagiarism detection system using bytecode can be used as a preliminary verifying tool before detecting the plagiarism by source code comparison.

대부분의 표절검사 시스템들은 소스코드를 이용해 유사도를 계산하고 표절 프로그램을 찾아낸다. 소스코드를 이용하여 표절검사를 수행할 경우, 소스코드 보안문제가 발생할 수 있다. 목적 코드를 이용한 표절검사는 소스코드 보안문제에 대한 좋은 대안이 될 수 있다. 본 논문에서는 자바 프로그램의 표절검사에 대하여 소스코드 없이 바이트코드를 이용해 표절검사를 수행하는 방법을 제시한다. 바이트코드를 이용한 표절검사는 크게 두 단계로 진행된다 먼저, 자바 클래스 파일로부터 메소드의 코드영역을 분석해 토큰 시퀀스를 생성한 다음 적응적 지역정렬을 이용해 유사도를 계산한다. 실험 결과, 소스코드와 바이트코드의 유사도는 비슷한 분포를 보였다. 또한, 소스코드 쌍과 바이트코드 쌍의 유사도 상관관계가 충분히 높게 측정되었다. 본 논문에서 제안한 바이트코드 표절검사 시스템은 소스코드를 이용해 직접 표절을 검사하기 전 단계에서 1차적인 검증도구로 활용할 수 있다.

Keywords

References

  1. S. Mann and Z. Frew. Similarity and originality in code: plagiarism and normal variation in student assignments. In ACE'06: Proceedings of the 8th Australian conference on Computing education, pages 143-150, 2006
  2. M. Joy and M. Luck. Plagiarism in programming assignments. IEEE Transactions of Education, 42(2):129-133, 1999 https://doi.org/10.1109/13.762946
  3. C. Daly and J. Horgan. Patterns of plagiarism. SIGCSE Bull., 37(1):383-387, 2005
  4. A. Aiken. Moss(measure of software similarity) plagiarism detection system. 1998
  5. M. J. Wise. Detection of similarities in student programs: Yap'ing may be preferable to plague'ing. SIGCSE Bull., 24(1):268-271, 1992 https://doi.org/10.1145/135250.134564
  6. L. Prechelt, G. Malpohl, and M. Philippsen. Finding plagiarisms among a set of programs with JPlag. Journal of Universal Computer Science, 8(11):1016-1038, 2002
  7. D. Gitchell and N. Tran. Sim: a utility for detecting similarity in computer programs. SIGCSE Bull., 31(1):266-270, 1999 https://doi.org/10.1145/384266.299783
  8. B. S. Baker and U. Manber, Deducing Similarities in Java Sources from Bytecodes, In Proceedings of the USENIX Annual Technical Conference. 179-190. 1998
  9. J. Ji, G. Woo, and H. Cho. A source code linearization technique for detecting plagiarized programs. In ITiCSE'07: Proceedings of the 12th annual SIGCSE conference on Innovation and technology in computer science education, pages 73-77, 2007
  10. 지정훈, 우균, 조환규. 제한된 프로그램 소스 집합에서 표절 탐색을 위한 적응적 알고리즘. 정보과학회논문지: 소프트웨어 및 응용, 33(12), 1090-1102, 2006
  11. A. Parker and J. O. Hamblen. Computer algorithms for plagiarism detection. IEEE Transaction on Education, 32(2):94-99, 1989 https://doi.org/10.1109/13.28038
  12. J. Ji, G. Woo, S. Park and H. Cho. Understanding evolution process of program source for investigating software authorship and plagiarism. In Proceedings of the 2nd International Conference on Digital Information Management, MLDM Poster, pages 55-69, 2007
  13. K. L. Verco and M. J. Wise. Software for detecting suspected plagiarism: Comparing structure and attribute-counting systems. In Proceedings of the 1st Australian Conference on Computer Science Education, pages 130-134, Sydney, Australia, 1996
  14. X. Chen, B. Francia, M. Li, B. McKinnon, and A. Seker. Shared information and program plagiarism detection. IEEE Transactions on Information Theory, 50(7):1545-1551, 2004 https://doi.org/10.1109/TIT.2004.830793
  15. 강은미, 황미녕, 조환규. 유전체 서열의 정렬 기법을 이용한 소스 코드 표절 검사. 정보과학회논문지: 컴퓨팅의 실제, 9(3):352-367, 2003
  16. J. Son, S. Park and S. Park. Program plagiarism detection using parse tree kernels. In Proceedings of the 9th Pacific Rim International Conference on Artificial Intelligence (PRICAI 2006), Volume 4099 of Lecture Notes in Computer Science, pages 1000-1004. Springer, 2006
  17. 류창건, 김형준, 박병준, 최혜정, 조환규. 한글 말뭉치를 이용한 한글 표절 탐색 모델 개발. 한국정보과학회 2007 추계 학술발표 논문집, 34(2A), 58-59, 2007
  18. C. Arwin and M. Tahaghoghi. Plagiarism detection across programming languages. In Proceedings of the 29th Australasian Computer Science Conference. 48(171), 277-286. 2006
  19. T. F. Smith and M. S. Waterman, Identification of common molecular subsequences, Journal of Molecular Biology 147, 195-197, 1981 https://doi.org/10.1016/0022-2836(81)90087-5
  20. JavaCC : Java Compiler Compiler, https://javacc.dev.java.net/