팀명
HOLO
팀원 명단
김수빈
지도교수
이성호 교수님
작품 배경 및 목적
JNI란 Java 가상머신(JVM) 위에서 실행되고 있는 Java 코드가 Native 코드(C, C++)와 상호
작용하기 위한 프로그래밍 프레임워크이다. JNI는 Native 코드 호출을 통하여 고성능 계산을
하거나 시스템 리스소에 직접 접근하여 프로그램의 성능을 높인다. 하지만 JNI는 아래와 같은
문제점이 있다.
- NULL 값 전달 오류 미처리
- 오류의 비정상적 발생
- 공식 문서의 Undefined Behavior
위 문제점 보안을 위해 JVM에서는 –Xcheck:jni 빌드 옵션을 제공한다. -Xcheck:jni는 JNI의
요청을 처리하기 전 JNI 함수에 전달된 매개 변수의 유효성을 검사한다. 하지만 해당 옵션에도
아래와 같은 문제점이 있다.
- 정확한 기준이 없는 검사
- 인자에 대한 올바름 검사 미비
- JVM 마다 다른 실행 결과
따라서 Java 정보(class, method, field) 오류 검출 코드를 추가한 실행 오류 탐지용 jni.h 자
동 제작 시스템을 구현을 목표로 한다. 이는 Java 정보를 포함하여 인자에 대한 실행 오류 탐 지, 명확한 기준으로 실행 오류 결과 반환, JVM의 종류와 관계없이 동일 실행 결과 반환을 통 하여 JNI와 -Xcheck:jni의 문제점을 해결한다.
작품 내용
JNIwiz는 Java 정보(class, method, field) 오류 검출 코드를 추가한 실행 오류 탐지용 jni.h
자동 제작 시스템이다. JNIwiz는 자바 정보 분석기와 JNI 헤더 파일 합성기 두 부분으로 나누 어진다. WALA 기반의 자바 정적 분석 도구를 개발하여, Java 프로그램을 구성하는 class, method, field 정보 추출하는 자바 정보 분석기를 제작한다. Java 프로그램에서 추출한 정 보를 기반으로, LLVM과 소스코드 instrumentation 기법을 활용하여 실행 시점의 오류 탐지 를 위한 JNI 헤더 파일 자동 생성하는 JNI 헤더 파일 합성기를 제작한다.따라서 JNIwiz는 자바 정보 분석기와 JNI 헤더 파일 합성기를 사용하여 실행 오류 탐지용 jni.h를 제작한다.실행 오류 탐지용 jni.h는 NULL 인자를 확인하며, Java 정보 기반으로 C++에서 요구한 인자를 확 인한다.이는 Java 정보 호출 오류의 위험 제거로 안정적인 개발 지원하며, 명확한 오류 기준 제공으로 개발의 효율성을 상승시킨다.또한 JVM의 종류와 무관하게 동일한 결과 반환으로 호환성을 향상시켜 개발의 전체적인 품질과 성능을 향상시킨다.
Comments