JNIwiz: JNI 상호작용 실행 오류 탐지기 자동 합성
- 김수빈
- 2023년 11월 6일
- 2분 분량
최종 수정일: 2023년 11월 14일
팀명
HOLO
팀원 명단
김수빈
지도교수
이성호 교수님
작품 배경 및 목적
JNI란 Java 가상머신(JVM) 위에서 실행되고 있는 Java 코드가 Native 코드와 상호 작용하 기 위한 프로그래밍 프레임워크이다. JNI는 Native 코드 호출을 통하여 고성능 계산을 하거 나 시스템 리스소에 직접 접근하여 프로그램의 성능을 높인다. 하지만 JNI에는 여러가지 문제 점이 존재한다. JNI는 인자로 NULL 값이 전달되어도 오류 처리를 하지 않는다. 그리고 JNI는 오류가 발생해야 하는 경우들에 대해서 코드를 계속 실행시켜 오류의 시각적인 확인이 어렵 다. 또한, JNI로 상호작용하는 이종 언어 간 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