• 제목/요약/키워드: Java Bytecode

검색결과 69건 처리시간 0.108초

바이트코드 분석을 위한 중간코드에 관한 연구 (A Study on Informediated code for Analyzing Bytecodes)

  • 김경수;유원희
    • 한국컴퓨터정보학회논문지
    • /
    • 제11권1호
    • /
    • pp.107-117
    • /
    • 2006
  • 자바 언어는 객체지향 언어이며 다양한 개발 환경과 이식성에 맞는 언어로써 각광을 받고 있다. 하지만 자바 언어는 실행속도가 느리다는 단점을 가지고 있다. 이러한 이유는 자바 프로그래밍 환경에서 자바 가상 기계 코드인 바이트코드가 인터프리터 방식으로 사용되기 때문이다. 따라서 프로그램의 수행에는 실행속도가 현저히 저하되는 단점이 발생하게 된다. 또한 자바 언어는 컴파일러를 통해 생성된 클래스 파일에 프로그램의 수행과 관련된 정보가 숨겨져 있다. 클래스 파일의 분석으로 바이트코드를 위한 효율적인 분석 및 최적화를 할 수 있다. 본 논문에서는 자바 클래스 파일의 정보들을 이용해 자바 바이트코드 분석을 하려한다. 분석을 위해 정적 단일 배정문 형태로 변환하게 되는데 정적 단일 배정문 형태는 정의-사용체인에서 변형된 형태이다. 정적 단일 배정문 형태는 각각의 타입들을 오직 한번만 배정하고 재명명함으로써 프로그램을 정적으로 분석 할 수 있게 한다. 정적 단일 배정문 형태는 최적화와 분석을 위한 효과적인 중간 코드이다.

  • PDF

안드로이드 환경에서 클래스 반사와 예외 처리를 이용한 임의 코드 수행 방법 및 코드 은닉 방법 (Code Obfuscation using Java Reflection and Exception in Android)

  • 김지윤;고남현;박용수
    • 한국컴퓨터정보학회:학술대회논문집
    • /
    • 한국컴퓨터정보학회 2014년도 제50차 하계학술대회논문집 22권2호
    • /
    • pp.369-370
    • /
    • 2014
  • 본 논문에서는 안드로이드 환경에서 클래스 반사(Reflection)과 예외처리를 이용하여 안드로이드 보호 시스템을 우회하여 임의의 코드를 수행할 수 있는 방법을 제시한다. 일반적인 자바 환경과는 달리 안드로이드 환경에서는 보안 강화를 위해 APK 파일 내 루트 디렉토리의 클래스 파일만을 반사를 통해 동적 로딩이 가능하다. 하지만, 본 논문에서는 클래스 반사와 예외 처리를 이용하여 임의의 디렉토리 내 파일을 로딩 및 동적 실행할 수 있는 방법을 보이며 이 방법은 저자가 알기로는 기존에 알려지지 않은 방법이다. 이를 기반으로, 본 논문에서는 AES 암호와 동적 로딩을 이용하여, 모바일 어플리케이션의 내부 코드를 은폐하는 기법을 제안한다. 제안기법을 활용 시, 첫째 공격자의 입장에서는 내부 코드를 은폐하여 백신을 우회하는 악성코드 제작이 가능하고, 둘째, 프로그램 제작자의 입장에서는 핵심 알고리즘을 은폐하여 저작권을 보호하는 코드 제작이 가능하다. 안드로이드 버전 4.4.2(Kitkat)에서 프로토타입을 구현하여 제안 기법의 실효성을 보였다.

  • PDF

CTOC에서 코드 최적화 수행 (Processing of Code Optimization in CTOC)

  • 김기태;유원희
    • 한국멀티미디어학회논문지
    • /
    • 제10권5호
    • /
    • pp.687-697
    • /
    • 2007
  • 자바 바이트코드는 많은 장점을 가지고 있지만, 수행속도가 느리고 프로그램 분석이나 최적화에 적절한 표현이 아니라는 단점이 존재한다. 따라서 네트워크와 같은 실행 환경에서 효율적으로 수행되기 위해서는 최적화된 코드로 변환이 필요하다. 따라서 우리는 최적화된 코드로의 변환을 위해 CTOC를 구현하였다. 최적화 과정에서 CTOC는 정적으로 값과 타입을 결정하기 위해 변수를 배정에 따라 분리하는 SSA From을 사용하였다. 하지만 SSA Form변환 과정에서 ${\phi}$-함수의 추가에 의해 오히려 노드의 수가 증가되는 문제점이 발생하였다. 이를 해결하기 위해 본 논문에서는 SSA Form에서 복사 전파와 죽은 코드 제거 최적화를 수행한다. 또한 기존의 SSA Form은 표현식보다는 주로 변수에 관련된 것이라는 단점이 존재한다. 따라서 본 논문에서는 SSA Form 형태의 표현식에 대해 복사 전파와 죽은 코드 제거와 같은 최적화를 적용한 후 다시 중복된 표현식을 제거하는 과정을 추가로 수행한다.

  • PDF

자바 바이트코드를 위한 최적화기의 설계 및 구현 (Design and Implementation of a Java Bytecode Optimizer)

  • 황순명;오세만
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2000년도 추계학술발표논문집 (상)
    • /
    • pp.211-214
    • /
    • 2000
  • 자바 클래스 파일은 각 플랫폼에 독립적인 중간 코드 형태의 바이트코드와 자료 구조로 구성됨으로서 네트워크를 통하여 플랫폼에 독립적으로 인터프리티브 컴파일링 시스템에서 실행된다. 그러나 클래스 파일을 생성하는 자바 컴파일러는 각 플랫폼에 독립적인 바이트코드 표현에 제약을 받기 때문에 효율적인 코드를 생성하는데 한계가 있다. 또한 자바 가상 기계에서 동적 링킹을 지원하기 위하여 고안된 상수 풀(constant pool)의 크기가 상대적으로 큰 특징을 갖는다. 따라서 자바 클래스 파일이 네트워크와 같은 실행 환경에서 효과적으로 실행되기 위해서는 작은 크기와 효율적인 코드에 대한 변환이 요구된다. 본 논문에서는 자바 클래스 파일이 인터넷 및 분산환경 시스템에서 효율적으로 실행되기 위해서 클래스 파일의 크기를 줄이는 방법과 자바 컴파일러가 생성한 바이트코드에 대해 최적화를 수행하는 최적화 방법론을 제시하고, 코드 최적화기를 설계 및 구현한다. 최적화된 클래스 파일은 코드 크기를 줄이고, 효율적인 코드를 생성함으로서 네트워크 상의 전송 속도뿐만 아니라 가상 기계에서 좀 더 빠르게 실행할 수 있다.

  • PDF

자바 바이트코드 최적화기의 설계 (Design of a Java Bytecode Optimizer)

  • 황순명;오세만
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2000년도 봄 학술발표논문집 Vol.27 No.1 (A)
    • /
    • pp.56-58
    • /
    • 2000
  • 자바 클래스 파일은 각 플랫폼에 독립적인 중간 코드 형태의 바이트코드와 자료 구조로 구성됨으로서 네트워크를 통하여 플랫폼에 독립적으로 인터프리티브 컴파일링 시스템에서 실행된다. 그러나 클래스 파일을 생성하는 자바 컴파일러는 각 플랫폼에 독립적인 바이트코드 표현에 제약을 받기 때문에 효율적인 코드를 생성하는데 한계가 있다. 또한, 자바 가상 기계에서 동적 링킹을 지원하기 위하여 고안된 상수 풀(constant pool)의 크기가 상대적으로 큰 특징을 갖는다. 따라서 자바 클래스 파일이 네트워크와 같은 실행 환경에서 효과적으로 실행되기 위해서는 작은 크기와 효율적인 코드에 대한 변환이 요구된다. 본 논문에서는 자바 클래스 파일이 인터넷 및 분산환경 시스템에서 효율적으로 실행되기 위해서 클래스 파일의 크기를 줄이는 방법과 자바 컴파일러가 생성한 바이트코드에 대해 최적화를 수행하는 최적화 방법론을 제시하고, 코드 최적화기를 설계한다. 최적화된 클래스 파일은 코드 크기를 줄이고, 효율적인 코드를 생성함으로서 네트워크상의 전송 속도뿐만 아니라 가상 기계에서 좀 더 빠르게 실행할 수 있다.

  • PDF

다중스레드 모델의 스레드 코드를 자바 바이트 코드로 변환하기 위한 번역기 설계 (Design of Translator for generating Java Bytecode from Thread code of Multithreaded Models)

  • 김기태;이갑래;양창모;유원희
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2000년도 봄 학술발표논문집 Vol.27 No.1 (A)
    • /
    • pp.68-70
    • /
    • 2000
  • 다중스레드 모델은 데이터플로우 모델의 내부적인 병렬성, 비동기적 자료 가용성과 폰 노이만 모델의 실행 지역성을 결합하여 병렬처리 시스템의 성능을 향상 시켰다. 이 모델은 프로그램의 실행을 위하여 컴파일러에 의해 생성된 스레드를 수행하며, 스레드의 생성 방법에 따라 자원 활용 빈도나 동기화 빈도와 같은 스레드의 질이 결정 되는 특징이 있다. 하지만 다중스레드 모델은 실행 모델이 특정 플랫폼에 제한되는 단점을 가지고 있다. 이에 반해 자바는 플랫폼에 독립적인 특징을 가지고 있어 다중스레드 모델의 스레드 코드를 실행 단위인 자바 언어로 변환하면 다중스레드 모델의 특징을 여러 플랫폼에서 수정 없이 사용할 수 있게 된다. 자바는 원시 언어를 중간 언어 형태의 바이트 코드로 변환하여 각 아키텍처에 맞게 설계된 자바 가상 머신이 설치된 시스템에서 자바 언어를 수행한다. 이러한 자바 언어의 바이트 코드는 번역기의 중간 언어와 같은 역할을 수행하고, 자바 가상 머신은 번역기의 후위부와 같은 역할을 한다. 본 논문은 다중스레드 코드가 플랫폼에 독립적인 특성을 갖출 수 있도록 다중스레드 코드를 자바 가상 머신에서 실행 가능하도록 한다. 즉, 다중스레드 모델의 스레드 코드를 자바 바이트 코드로 변환하는 번역기를 설계, 구현하고, 자바 가상 머신의 실행을 분석한다.

  • PDF

자바 바이트코드를 GVM 코드로 번역하기 위한 언어적 특성 처리 (Han fling the Language Dependent Features for Translating Java Bytecode to GVM Code)

  • 고영관;고석훈;오세만
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2002년도 봄 학술발표논문집 Vol.29 No.1 (B)
    • /
    • pp.337-339
    • /
    • 2002
  • 휴대용 무선기기의 성능 향상과 동적인 응용프로그램 실행의 필요성에 따라 모바일 응용프로그램은 기존의 네이티브 애플리케이션 제작 방법에서 가상기계(Virtual Machine)를 탑재하여 실행하는 가상기계애플리케이션 제작 방법으로 변환하였다. 가상기계를 이용한 애플리케이션의 실행은 플랫폼 독립적인 실행이 가능하며 또한 효과적인 다운로드 솔루션을 통한 동적인 응용프로그램의 실행이 가능하다. 이러한 배경으로 KVM과 CVM(General Virtual Machine)등의 가상기계가 출현하였다. 그러나 각 플랫폼에서 맞는 애플리케이션은 서로 호환되지 않으므로 가상기계 언어간의 번역을 통해 목적 가상기계에서의 실행이 요구되며 자바 바이트코드를 순수 국내 기술로 개발된 GVM 코드로 번역하는 것이 바람직하다. 본 논문에서는 KVM에서 실행가능한 자바 바이트코드를 CVM에서 실행하기 위해 바이트코드를 GVM코드인 SAL(Sinji Assembly Language)로 번역하는 번역기를 설계하고 구현한다. 이를 위해 자바의 언어 독립적 특성 외에 언어 의존적인 특성을 처리하기 위한 방법을 제안하며 언어 의존적인 특성을 배열과 문자열, 클래스와 객체, 예외, 스레드로 분류하여 처리한다.

  • PDF

자바가상기계에서 데이터 이동 분석 (Analysis of Data Transfers in Java Virtual Machine)

  • 양희재
    • 한국정보통신학회:학술대회논문집
    • /
    • 한국해양정보통신학회 2005년도 춘계종합학술대회
    • /
    • pp.835-838
    • /
    • 2005
  • 스택 기반 구조를 갖는 자바가상기계(JVM)에서는 전체 동작의 상당 부분이 데이터 이동에 소요되는 것으로 알려지고 있다. 따라서 효율적인 JVM의 개발을 위해서는 JVM 내부에서 데이터가 어떻게 이동되는지를 분석할 필요가 있다. 본 논문에서는 오퍼랜드 스택, 지역변수배열, 힙, 그리고 상수 풀 사이에서 데이터의 이동에 대해 바이트코드 수준에서 분석 조사하였다.

  • PDF

다중스레드 모델의 스레드 코드를 분산환경에서 실행 가능한 자바 바이트 코드로 변환하기 위한 번역기 설계 (Design of Translator for generating Java Bytecode in Distributed environment from Thread code of Multithreaded Models)

  • 김기태;조선문;고훈준;이갑래;유원희
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2001년도 봄 학술발표논문집 Vol.28 No.1 (A)
    • /
    • pp.49-51
    • /
    • 2001
  • 다중스레드 모델은 데이터플로우 모델의 내부적인 병렬성, 비동기적 자료 가용성과 폰 노이만 모델의 실행 지역성을 결합하여 병렬처리 시스템의 성능을 향상시켰다. 이 모델은 프로그램의 실행을 위하여 컴파일러에 의해 생성된 스레드를 수행하며, 스레드의 생성 방법에 따라 자원 활용 빈도나 동기화 빈도와 같은 스레드의 질이 결정되는 특징이 있다. 하지만 다중스레드 모델은 실행 모델이 특정 플랫폼에 제한되는 단점을 가지고 있다. 이에 반해 자바는 플랫폼에 독립거인 특징을 가지고 있어 다중스레드 모델의 스레드 코드를 실행 단위인 자바 언어로 변환하여 다중스레드 모델의 특징을 여러 플랫폼에서 수정 없이 사용할 수 있게 된다. 자바는 분산된 환경에 적합한 언어이기 때문에 본 논문에서 제안한 번역기에 의해 다중스레드 모델의 스레드 코드를 자바 언어로 변환한 후 자바의 원격 매소드 호출을 이용하여 다중스레드 모델의 스레드 코드를 분산된 환경에서 처리하였다. 본 논문은 다중스레드 코드가 로컬 컴퓨터에서 여러 스레드를 생성하여 처리하던 것을 자바의 원격 메소드 호출을 이용하여 분산된 환경에서 실행 가능하도록 한다. 다중스레드 모델의 스레드 코드를 분산 환경에서 실행 가능한 자바 바이트 코드로 변환하는 번역기를 설계, 구현한다.

자바바이트코드의 네트워크 기반 프로파일링 시스템 설계 및 구현 (Design and Implementation of Network-based Profiling System of Java Bytecode)

  • 정준영;정민수;이은정;정연정;윤기송
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 1999년도 가을 학술발표논문집 Vol.26 No.2 (1)
    • /
    • pp.415-417
    • /
    • 1999
  • 네트워크상에 바이트 코드로 존재하고 실행되는 자바 프로그램은 여러 가지 컴퓨팅 환경 요소로 인해 수행병목현상이 나타나고 있다. 더구나 프로그램 성능 향상을 위해 바이트코드를 해석한다는 것은 쉬운 일이 아니다. 본 논문은 자바 바이트코드를 소스코드로 디컴파일하고, 프로그램 문맥의 기본 블록과 제어 구조를 분석하여 프로파일 정보를 얻는다. 그리고 프로파일 정보를 바탕으로 사용자나 개발자에게 의미있는 정보를 제공하여 최적화된 프로그램을 개발할 수 있도록 하는 네트워크 기반 프로파일링 시스템과 프로파일 정보 시각화를 위한 시스템의 프로토타입 설계 및 구현을 다룬다.

  • PDF