• 제목/요약/키워드: 역컴파일러

검색결과 11건 처리시간 0.011초

가상기계 코드 실행을 위한 역컴파일러 (Decompiler for Executing Virtual Machine Code)

  • 안덕기;오세만
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2006년도 춘계학술발표대회
    • /
    • pp.383-386
    • /
    • 2006
  • 최근 가상기계 시스템은 임베디드 유비쿼터스 컴퓨팅의 필수적인 기술로서, 그 중요성이 더욱 강조되고 있으며, 컴파일러, 어셈블러 그리고 가상기계의 구현으로 구축된다. 이러한 시스템의 구축 과정에서 각 컴포넌트의 신뢰성을 위하여 정확한 검증 방법이 요구되며, 검증의 효율성을 위해서 순차적으로 진행되어야 한다. 본 논문에서는 가상기계 시스템의 컴파일러를 검증하기 위해서, 컴파일 된 가상기계 코드를 역컴파일하여 실행하는 기법을 제안하고, 그러한 기법에 따라 EVM(Embedded Virtual Machine) SIL(Standard Intermediate Language) 역컴파일러를 구현하였다. 구현된 역컴파일러는 EVM이 개발되기 전에 효율적인 실행 시스템으로 이용됨은 물론 EVM ANSI C 컴파일러의 검증 도구로서 이용될 수 있으며, EVM 시스템을 체계적으로 개발할 수 있도록 할 것이다.

  • PDF

ANSI C 컴파일러에서 중간코드의 검증과 분석을 위한 역컴파일러의 개발 (Development of a Decompiler for Verification and Analysis of an Intermediate Code in ANSI C Compiler)

  • 김영근;권혁주;이양선
    • 한국멀티미디어학회논문지
    • /
    • 제10권3호
    • /
    • pp.411-419
    • /
    • 2007
  • EVM(Embedded Virtual Machine)은 모바일 디바이스, 셋톱박스, 디지털 TV에 탑재되어 하드웨어에 독립적으로 수행되는 스택기반 가상기계이며, SIL(Standard Intermediate Language)은 EVM의 중간언어로 객체지향 언어와 순차적인 언어를 위한 연산 코드 집합을 갖고 있다. 기존에는 C 프로그램을 실행하기위해 플랫폼에 의존적인 목적코드로 변환하여 실행하였다. 이런 문제를 해결하기 위해 본 연구팀은 EVM을 개발하면서 목적기계의 코드가 아닌 플랫폼에 독립적인 스택기반의 SIL 코드를 생성하는 ANSI C 컴파일러를 개발하였다. 본 논문에서는 ANSI C 컴파일러가 생성한 SIL 코드를 3-주소 코드 형태의 재 표현된 ANSI C 프로그램으로 변환하는 SIL-to-C 역컴파일러(Decompiler) 시스템을 설계하고 구현하였다. 이와 같은 작업은 ANSI C 컴파일러가 생성한 SIL 코드가 올바른지를 확인할 수 있는 검증 방법을 제시하며, 소프트웨어 오작동 및 버전 호환이 이루어지지 않을 때 소프트웨어의 구조를 변경하고 수정하여 성능을 개선하는 작업을 용이하게 한다.

  • PDF

객체지향 컴파일러의 심벌 테이블 검증을 위한 선언문 복원 기법 (The Declarations Reconstruction Technique for the Symbol Table Verification of the Object-oriented Compiler)

  • 손민성;권혁주;김영근;이양선
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2006년도 추계학술발표대회
    • /
    • pp.669-672
    • /
    • 2006
  • 본 연구팀은 유비쿼터스 게임 플랫폼을 위한 Embedded C++ 컴파일러를 개발하였으며, 컴파일러 개발 과정에서 객체지향언어인 C++과 Java 언어를 모두 수용할 수 있는 심벌 테이블을 설계하였다. 심벌 테이블은 컴파일러의 어휘 분석과 구문 분석 과정을 거친 후 SDT(syntax-directed translation)에 의해 생성된 AST(Abstract Syntax Tree)를 분석하여 인식된 명칭(identifier)과 그 속성(attribute)들을 수집하여 저장하는 자료구조로써, 심벌 테이블에 저장된 속성들은 의미 분석(semantic analysis) 단계에서 수집된 속성과 참조된 명칭의 사용이 타당한지를 검사하고, 코드 생성(code generation) 단계에서 올바른 코드가 생성되도록 하는 중요한 요소이다. 따라서 심벌 테이블의 설계가 올바른지와 입력된 속성이 정확한지에 대한 검증과 분석은 필수 불가결하다. 본 논문에서는 컴파일러 개발과정에서 설계한 심벌 테이블을 검증하고 분석하기 위한 목적으로써 심벌 테이블을 이용하여 선언문을 복원시키는 역번역기(detranslator)에 대하여 기술한다. 구현된 역번역기는 C++ 컴파일러와 Java 컴파일러의 선언문 처리 과정에서 심벌 테이블에 입력된 속성들을 본래의 입력 프로그램으로 역번역한다. 따라서 역번역기를 통하여 심벌 테이블의 완전성과 심벌 테이블에 입력된 속성 정보의 정확성을 쉽게 검증할 수 있으며, 역번역과 함께 출력되는 디버그 정보를 이용하여 효율적으로 컴파일러의 개발과 수정을 할 수 있다.

  • PDF

EVM SIL에서 C 프로그램 생성을 위한 역컴파일러의 설계 및 구현 (Design and Implementation of Decompiler for Generating C Program from EVM SIL)

  • 김영근;권혁주;이양선
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2005년도 춘계학술발표대회
    • /
    • pp.549-552
    • /
    • 2005
  • 기존의 ANSI C 프로그램은 각각의 플랫폼에 따른 컴파일러를 통해서 목적기계의 코드로 변환되고, 실행되어 플랫폼에 의존적인 단점이 있다. 이러한 단점을 보완하는 방법으로는 스택기반의 가상기계와 가상기계의 입력형태인 중간코드를 이용하는 기법이 있다. EVM(Embedded Virtual Machine)은 ANSI C 언어와 SUN사의 Java 언어 등을 모두 수용할 수 있는 임베디드 시스템을 위한 가상기계이며, SIL(Standard Intermediate Language)은 EVM에서 실행되는 중간언어로 다양한 프로그래밍 언어를 수용하기 위해서 객체지향 언어와 순차적인 언어를 모두 수용하기 위한 연산 코드 집합을 갖고 있다. 본 논문에서는 SIL 코드가 올바른 수행을 하는 것인지를 검증하고 원시코드의 분석을 용이하게 하기 위해서 생성된 SIL 코드를 어셈블리 형태와 유사한 재 표현된 ANSI C 언어로 바꾸는 역컴파일러 시스템을 설계하고 구현하였다.

  • PDF

C++ 컴파일러에서 심벌 테이블의 검증과 분석을 위한 역번역기의 설계 및 구현 (Design and Implementation of a Detranslator for Verification and Analysis in C++ Compiler)

  • 손민성;권혁주;이양선
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2006년도 춘계학술발표대회
    • /
    • pp.447-450
    • /
    • 2006
  • 본 논문에서는 C++ 컴파일러 구현과정에서 객체지향 언어의 속성을 처리하기 위한 역번역기(detranslator)를 설계하고 구현하였다. 구현된 역번역기는 C++ 컴파일러의 선언부 처리 과정에서 심벌 테이블에 입력된 속성들을 본래의 C++ 프로그램으로 역번역 한다. 따라서 C++ 컴파일러 개발 과정에서 설계된 심벌 테이블과 심벌테이블에 입력된 정보가 올바른지 쉽게 검증할 수 있다. 심벌 테이블은 C++ 컴파일러의 어휘 분석과 구문 분석 과정에서 인식되는 명칭(identifier)에 대하여 그 속성(attribute)들을 수집하여 저장하는 자료구조로, 심벌 테이블에 저장된 속성들은 의미분석(semantic analysis) 단계에서 참조된 명칭의 사용이 타당한지 검사하는데 사용 되어 코드 생성(code generation) 단계에서 올바른 코드가 생성 되도록 한다. 본 역번역기를 구현함으로써 심벌 테이블이 올바르게 설계 되었는지 검증할 수 있으며, 컴파일 할 때 심벌 테이블에 필요한 모든 속성이 저장되어 있는지 쉽게 확인 할 수 있게 되었다. 그리고 디버그 정보도 함께 출력되어 객체지향 언어를 위한 컴파일러 개발의 정확성을 기할 수 있다.

  • PDF

C++ 컴파일러에서 중간코드의 검증과 분석을 위한 역컴파일러의 설계 및 구현 (Design and Implementation of a Decompiler for Verification and Analysis of Intermediate Code in C++ Compiler)

  • 배성균;김영근;이양선
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2006년도 춘계학술발표대회
    • /
    • pp.1405-1408
    • /
    • 2006
  • C++ 언어는 객체지향 프로그래밍 언어로, 기존의 C++ 프로그램은 각각의 플랫폼에 따른 컴파일러를 통해 목적기계의 코드(object code)로 변환되므로 실행되는 플랫폼에 의존적인 단점이 있다. 이러한 단점을 보완하는 방법으로 스택기반의 가상기계와 가상기계의 입력형태인 중간코드를 이용하는 기법이 있다. EVM(Embedded Virtual Machine)은 ANSI C, ISO/IEC C++ 언어와 SUN사의 Java 언어 등을 모두 수용할 수 있는 임베디드 시스템 기반의 가상기계이며, EVM에서 실행되는 중간코드인 SIL(Standard Intermediate Language)은 객체지향 언어와 순차적인 언어를 모두 수용하기 위한 명령 코드의 집합으로 설계되어 있다. 본 논문에서는 C++ 컴파일러를 통해 생성된 SIL 코드가 올바른지 검증하고 원시코드의 분석을 용이하게 하기 위해서 SIL 코드를 어셈블리 코드와 유사한 형태의 재 표현된 C++ 프로그램으로 역컴파일하는 시스템을 설계하고 구현하였다.

  • PDF

론웍스 네트워크의 자가 진단을 지원하는 흠 제어 네트워크 구성 관리 서버의 구조

  • 이창은;박준희;손영성;문경덕
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2003년도 봄 학술발표논문집 Vol.30 No.1 (C)
    • /
    • pp.142-144
    • /
    • 2003
  • 본 논문에서는 홈 자동화 네트워크으로 가장 각광을 받고있는 론웍스(Lonworks) 시스템을 구성 관리하는 홈 서버 플랫폼의 새로운 구조를 제안한다. Echelon사에서 제안하는 Lonworks 시스템의 구성관리 도구로서의 LonMaker는 자체적으로 개발한 LNS (Lonworks Network Service)라고 하는 비 표준화된 구성 관리 기술을 통해서 네트워크를 관리하도록 지원하며, 상기한 LNS를 인프라로 활용하는 도구로서, LNS는 빌딩 혹은 가정 내에 Lonworks 네트워크로 연결되어 있는 디바이스들에 대한 정보를 DB화하여 구축된 자료를 기반으로 하여 디바이스들간에 연동이 가능하도록 지원한다. 그러나 고가이며, 구성 관리를 한 디바이스 개수당 가격을 별도로 지불해야 하는 로열티가 있고, 이 역시도 하드웨어 제약사양인 뉴런칩(Neuron Chip)을 사용해야 한다는 점에서 개발자로 하여금 많은 부담을 주고 있다. 이에 본 논문에서는 홈 자동화 네트워크 개발 시에 노드 구조를 각 응용목적에 맞도록 보다 유연성 있게 구현할 수 있도록 하는 네트워크 구성 관리 기능을 갖춘 흠 서버 플랫폼을 제안한다 제안된 흠 서버 플랫폼을 통해 제어 네트워크의 다양화와 고성능 처리의 장점을 얻을 수 있었고, 기존의 고가의 론웍스 LonMaker 소프트웨어를 사용하지 않고도 단지 리눅스 상의 무료 컴파일러인 gcc 컴파일러를 통해 홈 서버 노드를 구성할 수 있으므로 시스템 개발에 대한 비용을 많이 줄일 수 있으며, 리눅스 OS를 사용하는 홈 자동화 홈 서버 시스템으로의 파급효과가 클 것이다.

  • PDF

비균일 단일루프에서의 효율적인 루프 분할 방법 (An Efficient Loop Splitting Method on Single Loop with Non-uniform Dependences)

  • 정삼진
    • 한국콘텐츠학회논문지
    • /
    • 제5권4호
    • /
    • pp.204-211
    • /
    • 2005
  • 본 논문은 비균일 단일루프의 병렬성을 향상시키기 위해서 지금까지 개발된 최소 종속 거리 분할 방법, Polychronopoulous 분할 방법, 그리고 최초 종속 분할 방법과 같은 세 가지 루프 분할 방법을 소개하며, 기존의 분할 방법의 문제점들을 제시한다. 그리고, 기존의 세 가지 루프 분할 방법 중에서 가장 효과적인 최초 종속 분할 방법을 확장하여 병렬성을 향상시킨 보다 강력한 루프 분할 방법을 제안한다 제안된 알고리즘은 역 종속성일 경우와 gcd(최대공약수)값이 1보다 클 경우와 같이 최초 종속 분할 방법에서 해결하지 못한 문제점들을 해결하였다.

  • PDF

자바 애플릿 보안을 위한 역컴파일 방지 기법에 관한 연구 (A Study on the protection technique of a Applet decompilation in Java Environment)

  • 손태식;서정택;장준교;김동규
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2000년도 가을 학술발표논문집 Vol.27 No.2 (1)
    • /
    • pp.626-628
    • /
    • 2000
  • Java는 간결하고 객체 지향적이며 플랫폼 독립적으로 실행 가능한 특성을 지니고 있어, 웹 상에서의 증대된 표현능력과 유연성을 제공해 왔다. 하지만 이렇게 개방적이고 넓은 수용 가능성은 보안에 있어 많은 위협 취약점을 발생시키게 한다. 특히 현재 네트웍을 통해 널리 사용되는 애플릿은 그 자체가 사용자의 시스템에 전송되어 실행되므로, 만일 악의의 사용자가 그 애플릿 파일을, 역 컴파일러를 사용해 소스 코드를 얻어낸다면, 애플릿 서비스를 하는 시스템 및 네트웍에 대한 보안 문제 및 경제적 피해는 물론이고, 애플릿 개발자 및 다른 사용자들에게 있어 많은 문제를 일으킬 수 있다. 따라서 본 논문에서는 현재 자바 애플릿 역컴파일에 의한 보안 취약성 및 문제점을 진단하고, 거기에 대처할 수 있는 대응 기법에 대한 연구를 통해 보다 나은 자바 애플릿 역컴파일 방지 기법을 제시하려고 한다. 본 논문에 제안된 방법은 역컴파일 방지를 위해 클래스 파일에 혼란 코드를 삽입하는 방법으로서, 그 기법 및 사용 방법을 제시하고 역컴파일 방지 도구의 모델을 제안한다. 또한 앞으로의 연구는 여기서 제안된 자바 애플릿 역컴파일 방지 도구 모델의 세부적 구현으로 진행되어야 하겠다.

  • PDF

기호 형태의 값-집합 분석을 이용한 ARM 위치 독립적 코드의 정교한 역어셈블리 기법 (A Disassembly Technique of ARM Position-Independent Code with Value-Set Analysis Having Symbol-Form Domain)

  • 하동수;오희국
    • 정보보호학회논문지
    • /
    • 제28권5호
    • /
    • pp.1233-1246
    • /
    • 2018
  • 스마트 모바일의 보급에 따라, 컴퓨터 보안에서 ARM 아키텍처 명령어로 구성된 위치 독립적 코드의 역어셈블리 기법이 중요해지고 있다. 그러나 대부분의 기존 기법들은 x86 아키텍처 대상으로 연구되었으며, 위치 종속적 코드의 문제 해결과 범용성에 초점이 맞추어져 있다. 따라서, ARM 아키텍처의 고정 길이 명령어와 위치 독립적 코드의 특징이 제대로 반영되지 않아, 바이너리 계측과 같이 바이너리 자체를 직접 수정하는 수준의 고도화된 응용 보안 기술에 적용하기에는 수집되는 주소 정보의 정확도가 낮다. 본 논문에서, 우리는 ARM 명령어로 구성된 위치 독립적인 코드의 특성을 반영한 역어셈블리 기법을 제안한다. 정확하고 추적 가능한 주소의 수집을 위해, 도메인이 기호화된 값-집합 분석을 설계하였다. 또한, 역어셈블의 주요 문제점을 해결하기 위해, 컴파일러가 생성하는 코드의 특징을 활용한 휴리스틱을 고안하였다. 우리 기법의 정확도와 유효성을 검증하기 위해, 안드로이드 8.1 빌드에 포함된 669개의 공유라이브러리 및 실행 파일을 대상으로 실험하였으며, 그 결과 완전한 역어셈블의 비율이 91.47%로 나왔다.