• 제목/요약/키워드: 바이너리

검색결과 304건 처리시간 0.028초

JVM 플랫폼에서 .NET 프로그램을 실행하기 위한 MSIL-to-Bytecode 번역기의 설계 및 구현 (Design and Implementation of the MSIL-to-Bytecode Translator to Execute .NET Programs in JVM Platform)

  • 이양선;황대훈;나승원
    • 한국멀티미디어학회논문지
    • /
    • 제7권7호
    • /
    • pp.976-984
    • /
    • 2004
  • 마이크로소프트사는 .NET 플랫폼을 개발하면서 자바 언어에 대응하기 위해 C# 프로그래밍 언어를 만들었다. C#과 같은 .NET 언어로 작성된 프로그램은 컴파일 과정을 거치면서 MSIL 코드를 출력하기 때문에 .NET 플랫폼에서는 실행이 되지만 JVM 플랫폼에서는 실행이 되지 않는다. 자바는 썬 마이크로시스템즈사가 개발한 언어로서 현재 가장 널리 사용되는 프로그래밍 언어 중 하나이며, 컴파일러에 의해 플랫폼에 독립적인 바이트코드를 바이너리 형태로 가지고 있는 클래스 파일을 생성하면 JVM에 의해 하드웨어나 운영체제에 상관없이 실행이 가능한 플랫폼 독립적인 언어이다. 본 논문에서는 .NET 언어로 작성된 프로그램을 컴파일 하여 생성된 MSIL 코드를 자바의 중간 언어인 바이트코드 코드로 변환해 줌으로서 .NET 언어로 구현된 프로그램이 .NET 플랫폼 없이 자바의 플랫폼인 JVM에 의해 실행되도록 하는 MSIL-to-Bytecode 번역기를 설계하고 구현하였다. 이와 같은 작업이 프로그래머로 하여금 프로그래밍 언어의 제약 없이 응용 프로그램을 개발할 수 있는 환경을 제공한다.

  • PDF

AIS-ASM 기반 신규 서비스 도입을 위한 선행 연구 (Preliminary Researches for the Deployment of New AIS-ASM Services)

  • 김건웅;박계각
    • 한국정보통신학회논문지
    • /
    • 제17권7호
    • /
    • pp.1515-1521
    • /
    • 2013
  • AIS는 해양안전 분야의 핵심서비스이다. 그 중 바이너리 메시지를 전달하는 6번 메시지와 8번 메시지를 활용한 다양한 서비스들이 등장하고 있으며, 이에 MSC는 2010년 AIS-ASM 사용에 대한 권고를 발표한 바 있다. AIS-ASM을 통한 해양안전정보 제공은 해양사고 예방이나 안전 제고 등에 기여할 수 있지만, 새로운 서비스가 VDL에 추가 부하를 가져올 수 있으므로 서비스 도입 절차가 반드시 필요하다. 본 논문에서는 AIS-ASM 서비스 분석을 통해 각 서비스를 도입하기 위해 확장되어야 하는 기능 또는 체계들을 정리하고, 지속적으로 수집한 AIS 정보 분석을 통해 현행 AIS 운용 환경을 관찰한 결과를 소개한다. 또한 이를 바탕으로 신규 AIS-ASM 서비스 도입을 위해 수행하여야 하는 선결 연구주제들을 정리한다. VDL 활용 감시시스템, 비정상 AIS 기기 감지 및 제거, 해양안전서비스 가치분석 등이 요구된다.

신뢰성 높은 동적 API 시퀀스를 이용한 소프트웨어 유사성 검사 (Software Similarity Detection Using Highly Credible Dynamic API Sequences)

  • 박성수;한환수
    • 정보과학회 논문지
    • /
    • 제43권10호
    • /
    • pp.1067-1072
    • /
    • 2016
  • 실행코드만으로 소프트웨어 간의 유사성을 비교하거나 표절을 검사하기 위해 소프트웨어만의 고유한 특징인 소프트웨어 버스마크를 이용한다. 일반적으로 소프트웨어 버스마크는 추출 방법에 따라 정적 버스마크와 동적 버스마크로 구분되고, 추출된 방법에 따라 장단점이 뚜렷하게 나타난다. 본 논문에서는 동적 분석을 이용하여 API 시퀀스 버스마크를 추출하고 실행코드 간의 유사성 검사에 이용하는 방법을 제안한다. 제안하는 동적 시퀀스 버스마크는 프로그램이 실행되는 과정에서 호출되는 모든 API 함수 및 시스템 호출을 포함하는 기존의 방법과는 다르게 실행코드 내에 정의되어 있는 API 함수만으로 구성된 API 시퀀스를 이용한다. 추출된 동적 버스마크는 프로그램의 시작에서 종료까지 호출되는 API 시퀀스이며 이를 효율적으로 비교하기 위해 서열정렬 알고리즘을 활용한 유사성 척도를 사용한다. 여러 오픈소스 소프트웨어를 비교하여 버스마크의 신뢰성과 강인성을 검증하였다. 제안하는 동적 API 시퀀스 버스마크는 실행코드의 유사성 검사에 용이하게 활용될 수 있을 것으로 기대된다.

대입문 병합을 이용한 효율적인 자바 난독화 기법 (An Effective Java Obfuscation Technique Using Assignment Statements Merging)

  • 이경호;박희완
    • 한국컴퓨터정보학회논문지
    • /
    • 제18권10호
    • /
    • pp.129-139
    • /
    • 2013
  • 자바 바이트코드는 타겟 머신이 아닌 자바 가상머신 상에서 동작된다. 이러한 자바 바이트코드는 바이너리 코드보다 고수준 표현을 사용하고 있어서 대부분의 자바 바이트 코드는 다시 자바 소스 파일로 바꿀 수도 있다. 난독화란 기본적으로 코드를 이해하기 어렵게 만드는 기술을 의미한다. 자바 코드의 보호를 위해서는 난독화가 사용될 수 있다. 그러나 프로그램을 복잡하게 만드는 난독화 기법은 대부분 프로그램의 크기를 증가시키고 실행 속도 또한 느려지게 만드는 원인이 된다. 본 논문에서는 대입문 병합 기법을 이용한 효율적인 자바 난독화 기법을 새롭게 제안한다. 대입문 병합 기법이 적용되면 대입문에 부작용(side effects)이 추가되어 대입문을 이해하기 어렵게 된다. 추가적으로 바이트코드의 크기가 줄어드는 장점도 있다.

최적화 컴파일된 자바스크립트 함수에 대한 최적화 해제 회피를 이용하는 런타임 가드 커버리지 유도 퍼저 (Runtime-Guard Coverage Guided Fuzzer Avoiding Deoptimization for Optimized Javascript Functions)

  • 김홍교;문종섭
    • 정보보호학회논문지
    • /
    • 제30권3호
    • /
    • pp.443-454
    • /
    • 2020
  • 자바스크립트 엔진은 주로 웹 브라우저에 적재되어 웹 페이지를 표시하는 여러 기능 중 자바스크립트 코드를 입력으로 받아 처리하는 모듈이다. 자바스크립트 엔진 내 취약점은 종단 사용자의 시스템 보안을 위협할 수 있어 많은 퍼징 테스트 연구가 수행되었다. 그중 일부 연구는 자바스크립트 엔진 내 테스트 커버리지를 유도하는 방식으로 퍼징 효율을 높였으나, 최적화되어 동적으로 생성된 기계어 코드에 대한 커버리지 유도 퍼징은 시도되지 않았다. 최적화된 자바스크립트 코드는 예외적인 흐름 발생 시 코드를 해제하는 런타임 가드의 기능으로 인해 퍼징을 통한 충분한 반복 테스트가 어렵다. 본 논문은 이러한 문제점을 해결하기 위해 최적화 해제를 회피하여 최적화된 기계어 코드에 대해 퍼징 테스트를 수행하는 방법을 제안한다. 또한, 동적 바이너리 계측 방식으로 수행된 런타임 가드의 커버리지를 계측하고 커버리지 증가를 유도하는 방식을 제안한다. 실험을 통해, 본 연구가 제안하는 방식이 런타임 가드 커버리지, 시간당 테스트 횟수의 두가지 척도에서 기존의 방식보다 뛰어남을 보인다.

안드로이드 기반 서비스 라이브러리의 동적 재구성 (A Dynamic Service Library Reconfiguration Method of Android Platform)

  • 이영석
    • 한국정보통신학회논문지
    • /
    • 제17권5호
    • /
    • pp.1145-1153
    • /
    • 2013
  • Android 모바일 플랫폼은 플랫폼에 설치된 모든 어플리케이션들의 클래스(class) 파일들을 복사하여 하나의 디렉터리에 보관하고, 해당 디렉터리에서 메모리 맵 파일(memory-mapped file) 방식으로 참조함으로써 서비스 라이브러리를 플랫폼에 추가하기 위해서는 플랫폼의 바이너리(binary) 이미지를 반드시 새롭게 생성하여 플랫폼을 교체해야만 한다. 또한, 이러한 메모리 맵 파일 방식의 참조는 어플리케이션이 참조하는 라이브러리가 중복될 경우 해당 디렉터리에서도 중복되어 포함되므로 디바이스의 저장 공간 낭비를 불러오게 된다. 따라서, Android 모바일 플랫폼상에서 동작하는 각 어플리케이션들의 서비스 라이브러리를 공유 라이브러리 형태로 관리하며, 플랫폼의 버전 관리 및 기능 추가 및 변경을 실시간 및 동적으로 지원할 수 있는 Android 플랫폼용 동적 재구성 기법이 필요하다. 본 논문에서는 Android 모바일 플랫폼을 대상으로 하여, 동적으로 서비스 라이브러리를 추가할 수 있는 플랫폼 동적 재구성 기법을 제안한다.

보로노이 다이어그램에 기반한 개선된 유클리디언 거리 변환 방법 (Improved Euclidean transform method using Voronoi diagram)

  • 장석환;박용섭;김회율
    • 한국통신학회논문지
    • /
    • 제29권12C호
    • /
    • pp.1686-1691
    • /
    • 2004
  • 본 논문에서는 기존의 고속 유클리디언 거리 변환법을 개선한 새로운 계산 방법을 제안한다. 기존의 고속 유클리디언 거리 변환법이 가지고 있는 단점인 특징점의 수에 비례하여 계산량이 늘어나는 단점을 극복하기 위해서, 본 논문에서는 특징점들 중에서 비특징점과 4방향으로 연결되어 있는 특징점만을 이용하여 보로노이 다이어그램을 계산함으로써 유클리디언 거리 변화도(Euclidean distance map)의 계산 시간을 기존의 방법보다 평균 40%로 감소시켰다. 본 논문에서 제안한 방법의 효율성을 검증하기 위해서 크기의 바이너리 영상 16장에서 대해서 기존의 방법과 제안한 방법으로 똑같이 유클리디언 거리 변화도를 계산하여 계산 시간을 비교함으로써 그 효능을 입증하였다.

스택 영역에서의 코드 재사용 공격 탐지 메커니즘 (Detection Mechanism against Code Re-use Attack in Stack region)

  • 김주혁;오수현
    • 한국산학기술학회논문지
    • /
    • 제15권5호
    • /
    • pp.3121-3131
    • /
    • 2014
  • 메모리 관련 취약점은 컴퓨터 시스템 상에서의 가장 위협적인 공격이며 메모리 취약점을 이용한 실제 공격의 또한 증가하고 있다. 따라서 다양한 메모리 보호 메커니즘이 연구되고 운영체제 상에서 구현되었지만, 보호 시스템들을 우회하기 위한 새로운 공격 기법들이 함께 발전하고 있다. 특히, 메모리 관련 공격 기법 중 버퍼 오버플로우 공격은 코드 재사용 공격이라 불리는 Return-Oriented Programming(ROP), Jump-Oriented Programming(JOP)등으로 발전하여 운영체제가 포함하는 메모리 보호 메커니즘을 우회하고 있다. 본 논문에서는 코드 재사용 공격 기법의 특징을 분석하고, 분석된 결과를 이용하여 바이너리 수준에서의 코드 재사용 공격을 탐지할 수 있는 메커니즘을 제안하며, 실험을 통해 제안하는 메커니즘이 코드 재사용 공격을 효율적으로 탐지할 수 있음을 증명한다.

DEX와 ELF 바이너리 역공학 기반 안드로이드 어플리케이션 호출 관계 분석에 대한 연구 (Android Application Call Relationship Analysis Based on DEX and ELF Binary Reverse Engineering)

  • 안진웅;박정수;응웬부렁;정수환
    • 정보보호학회논문지
    • /
    • 제29권1호
    • /
    • pp.45-55
    • /
    • 2019
  • DEX 파일과, SO 파일로 알려진 공유 라이브러리 파일은 안드로이드 어플리케이션의 행위를 결정짓는 중요한 구성요소이다. DEX 파일은 Java 코드로 구현된 실행파일이며, SO 파일은 ELF 파일 형식을 따르며 C/C++와 같은 네이티브 코드로 구현된다. Java 영역과 네이티브 코드 영역은 런타임에 상호작용할 수 있다. 오늘날 안드로이드 악성코드는 지속적으로 증가하고 있으며, 악성코드로 탐지되는 것을 회피하기 위한 다양한 우회 기법을 적용한다. 악성코드 분석을 회피하기 위하여 분석이 어려운 네이티브 코드에서 악성 행위를 수행하는 어플리케이션 또한 존재한다. 기존 연구는 Java 코드와 네이티브 코드를 모두 포함하는 함수 호출 관계를 표시하지 못하거나, 여러 개의 DEX을 포함하는 어플리케이션을 분석하지 못하는 문제점을 지닌다. 본 논문에서는 안드로이드 어플리케이션의 DEX 파일과 SO 파일을 분석하여 Java 코드 및 네이티브 코드에서 호출 관계를 추출하는 시스템을 설계 및 구현한다.

Variational Autoencoder를 활용한 필드 기반 그레이 박스 퍼징 방법 (A Method for Field Based Grey Box Fuzzing with Variational Autoencoder)

  • 이수림;문종섭
    • 정보보호학회논문지
    • /
    • 제28권6호
    • /
    • pp.1463-1474
    • /
    • 2018
  • 퍼징이란 유효하지 않은 값이나 임의의 값을 소프트웨어 프로그램에 입력하여, 보안상의 결함을 찾아내는 소프트웨어 테스팅 기법 중 하나로 이러한 퍼징의 효율성을 높이기 위한 여러 방법들이 제시되어 왔다. 본 논문에서는 필드를 기반으로 퍼징을 수행하면서 커버리지, 소프트웨어 크래쉬와 연관성이 높은 필드가 존재한다는 것에 착안하여, 해당 필드 부분을 집중적으로 퍼징하는 새로운 방식을 제안한다. 이 때, Variational Autoencoder(VAE)라는 딥 러닝 모델을 사용하여 커버리지가 높게 측정된 입력 값들의 특징을 학습하고, 이를 통해 단순 변이보다 학습된 모델을 통해 재생성한 파일들의 커버리지가 균일하게 높다는 것을 보인다. 또한 크래쉬가 발생한 파일들의 특징을 학습하고 재생성 시 드롭아웃을 적용하여 변이를 줌으로써 새로운 크래쉬를 발견할 수 있음을 보인다. 실험 결과 커버리지가 퍼징 도구인 AFL의 큐의 파일들보다 약 10% 정도 높은 것을 확인할 수 있었고 Hwpviewer 바이너리에서 초기 퍼징 단계 시 발생한 두 가지의 크래쉬를 사용하여 새로운 크래쉬 두 가지를 더 발견할 수 있었다.