• 제목/요약/키워드: executable software

검색결과 79건 처리시간 0.024초

실행코드 암호화 및 무결성 검증을 적용한 안드로이드앱 보호 기법 (A Technique for Protecting Android Applications using Executable Code Encryption and Integrity Verification)

  • 심형준;조상욱;정윤식;이찬희;한상철;조성제
    • 한국소프트웨어감정평가학회 논문지
    • /
    • 제10권1호
    • /
    • pp.19-26
    • /
    • 2014
  • 본 논문에서는 안드로이드 애플리케이션(앱)을 역공학 공격으로부터 방어하는 기법을 제안한다. 이 기법에서 서버는 안드로이드 패키지 파일인 APK 내에 있는 원본 실행코드(DEX)를 암호화하고, 실행 시 이를 복호화 할 수 있는 스텁(stub) 코드를 APK에 삽입하여 배포한다. 스텁 코드는 자신에 대한 공격을 탐지하기 위해 무결성 검증 코드를 포함한다. 사용자가 해당 APK를 설치·실행할 때, 스텁 코드는 자체의 무결성을 검증한 후, 암호화된 원본 실행코드를 복호화하고, 이를 동적 로딩(dynamic loading)하여 실행한다. 앱의 원본 실행코드는 암호화되어 배포되므로 지적재산권을 효과적으로 보호할 수 있다. 또한, 스텁 코드에 대해 무결성을 검증하므로, 제안 기법의 우회 가능성을 차단한다. 우리는 15개의 안드로이드 앱에 제안 기법을 적용하여 그 유효성을 평가하였다. 실험 결과, 13개의 앱이 정상적으로 동작함을 확인하였다.

네트워크 고장감내 소프트웨어 스트리밍 기술의 설계 및 구현 (Design and Implementation of Network Fault-Tolerant Application Software Streaming)

  • 심정민;김원영;최완
    • 한국콘텐츠학회논문지
    • /
    • 제6권10호
    • /
    • pp.126-133
    • /
    • 2006
  • 소프트웨어 스트리밍은 사용자가 자신의 컴퓨터에 설치되어 있지 않고 서버에 있는 응용 프로그램을 스트리밍 받아 바로 사용할 수 있게 하는 가상화 기술이다. 이 기술을 이용하면 사용자는 응용 프로그램이 마치 로컬 컴퓨터에 설치된 것처럼 바로 사용할 수 있으며, 별도의 다운로드나 설치 과정을 요구하지 않는다. 소프트웨어 스트리밍은 네트워크를 기반으로 하기 때문에 제공되는 서비스는 네트워크 성능 및 상태에 영향을 받는다. 특히, 네트워크 고장이 발생하면 스트리밍이 더 이상 불가능하기 때문에 스트리밍 중인 응용 프로그램이 고장나거나 심한 경우 시스템 전체가 고장나게 된다. 파레토의 원리(Pareto Principle)에 의하면, 대부분의 사용자들은 자주 사용하는 몇 가지 기능을 주로 사용한다. 이러한 원리에 따라 네트워크 고장 감지와 지능적인 스트리밍 기술을 제공한다면, 네트워크 고장이 발생하더라도 사용자들은 이미 스트리밍된 응용 프로그램의 기능을 중단 없이 사용할 수 있을 것이다. 본 논문에서는 네트워크 고장이 발생하더라도 로컬 컴퓨터에 스트리밍된 기능을 사용자들이 지속적으로 사용 할 수 있게 하는 네트워크 고장감내 소프트웨어 스트리밍(에버그린)의 개념 및 기술을 제안한다. 또한, 에버그린 기술의 구현에 대한 자세한 내용에 대해 논의한다.

  • PDF

실시간 임베디드 소프트웨어 모델링을 위한 xUML 확장에 관한 연구 (A Study on Extension of Executable UML for Modeling Real-time Embedded Software)

  • 김우열;김영철
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2006년도 춘계학술발표대회
    • /
    • pp.231-234
    • /
    • 2006
  • 현재까지는 실시간 임베디드 소프트웨어 개발을 위한 효율적인 소프트웨어 모델링 언어가 부족하다. 그런데 모델 자체가 코드처럼 수행 가능한 통합 모델링언어를 xUML(Executable UML)이라 한다[2,4,7]. 이는 기존의 UML x.x에 실행과 관련된 개념과 시간에 관련된 규칙을 더한 것이다. 다시 말해 xUML의 모델은 실행과 테스트, 디버깅이 가능하다[2,4]. 본 논문에서는 기존의 UML x.x버전들과 xUML이 실시간 임베디드 소프트웨어를 모델링 하는데 적합한지를 비교/분석한 후, 임베디드 소프트웨어 모델링에 xUML을 적용하고자 부족한 면을 보완 및 확장하였다. 확장된 xUML의 노테이션은 병렬과 실시간 처리까지도 표현이 가능하도록 제안하였다. 사례 연구로서 두개의 터치센서로 동작하는 실시간 임베디드 시스템의 모델링을 보여준다.

  • PDF

함수 수준 특징정보 기반의 오픈소스 소프트웨어 모듈 탐지 (Detection of an Open-Source Software Module based on Function-level Features)

  • 김동진;조성제
    • 정보과학회 논문지
    • /
    • 제42권6호
    • /
    • pp.713-722
    • /
    • 2015
  • OSS(Open-Source Software)의 사용 증가와 함께 라이선스 위반, 취약한 소스코드 재사용 등에 의한 분쟁 및 피해가 빈번해지고 있다. 이에, 실행파일(바이너리) 수준에서 프로그램에 OSS 모듈이 포함되었는지 여부를 확인하는 기술이 필요해졌다. 본 논문에서는 바이너리에서 함수 수준의 특징정보를 사용하여 OSS 모듈을 탐지하는 기법을 제안한다. 기존 소프트웨어 특징정보(버스마크) 기반 도용 탐지 기법들은 프로그램 전체 간 유사성을 비교하기 때문에 프로그램의 일부로 포함된 OSS 모듈들을 탐지하는데 부적합하다. 본 논문에서는, 함수 수준의 실행명령어, 제어 흐름 그래프(Control Flow Graph)와 개선된 함수 수준 구조적 특징정보를 추출하고 유사성을 비교하여 OSS 모듈의 임의 사용 여부를 탐지한다. 제안기법의 효율성과 각 특징정보들의 OSS 탐지 성능을 평가하기 위해, 특징정보량, OSS 모듈 탐지 시간 및 정확도, 컴파일러 최적화에 대한 강인성을 실험하였다.

기존 프로그래밍 원시코드에서 자바 바이트 코드로의 변환 (Program Translation from Conventional Programming Source to Java Bytecode)

  • Jeon-Geun Kang;Haeng-Kon Kim
    • 한국컴퓨터산업학회논문지
    • /
    • 제3권8호
    • /
    • pp.963-980
    • /
    • 2002
  • 소프트웨어 재공학은 기존 시스템의 유지보수 문제에 대한 해결책으로 많은 연구가 이루어 지고 있다. 재공학은 역공학과 순공학을 이용하여 기존 시스템에 대한 이해와 새로운 시스템의 개발을 의미하며 기존 시스템에서의 컴퍼넌트들로부터 필요한 기능을 가져와 재구성 하는 것이다. 본 논문에서는 기존의 프로시져 언어에 의해 컴파일된 바이너리 코드를 입력으로 받아서 웹 기반 자바 바이트 코드로 변환한다. 즉 바이너리-바이너리 단계에서 수행되는 소프트웨어 시스템을 제안한다. 이를 위해 먼저 Pascal-L 에 의해 작성된 기존의 프로그램 언어를 Jasmin 이라는 어셈블리 코드로 먼저 번역하고 사용자 읽기 가능한 자바 바이트 코드 상태인 Jasmin 어셈블리가 실제 자바 코드로 변환된다. 이 시스템은 결국 기존의 원시코드가 번역기를 통해 실행 가능한 바이너리 코드 형식으로 실행된다. 이 번역과정은 먼저 주어진 바이너리코드에서 언어구조를 식별하는 과정과 변수 객체의 위치를 분석하고 초기화 하는 과정 그리고 주어진 바이너리 코드를 Jasmin 코드로의 매핑하는 단계등으로 구성된다.

  • PDF

Secure and Efficient Code Encryption Scheme Based on Indexed Table

  • Cho, Sung-Kyu;Shin, Dong-Hwi;Jo, Hea-Suk;Choi, Dong-Hyun;Won, Dong-Ho;Kim, Seung-Joo
    • ETRI Journal
    • /
    • 제33권1호
    • /
    • pp.60-70
    • /
    • 2011
  • Software is completely exposed to an attacker after it is distributed because reverse engineering is widely known. To protect software, techniques against reverse engineering are necessary. A code encryption scheme is one of the techniques. A code encryption scheme encrypts the binary executable code. Key management is the most important part of the code encryption scheme. However, previous schemes had problems with key management. In an effort to solve these problems in this paper, we survey the previous code encryption schemes and then propose a new code encryption scheme based on an indexed table. Our scheme provides secure and efficient key management for code encryption.

A BEHAVIOR-PRESERVING TRANSLATION FROM FBD DESIGN TO C IMPLEMENTATION FOR REACTOR PROTECTION SYSTEM SOFTWARE

  • Yoo, Junbeom;Kim, Eui-Sub;Lee, Jang-Soo
    • Nuclear Engineering and Technology
    • /
    • 제45권4호
    • /
    • pp.489-504
    • /
    • 2013
  • Software safety for nuclear reactor protection systems (RPSs) is the most important requirement for the obtainment of permission for operation and export from government authorities, which is why it should be managed with well-experienced software development processes. The RPS software is typically modeled with function block diagrams (FBDs) in the design phase, and then mechanically translated into C programs in the implementation phase, which is finally compiled into executable machine codes and loaded on RPS hardware - PLC (Programmable Logic Controller). Whereas C Compilers are fully-verified COTS (Commercial Off-The-Shelf) software, translators from FBDs to C programs are provided by PLC vendors. Long-term experience, experiments and simulations have validated their correctness and function safety. This paper proposes a behavior-preserving translation from FBD design to C implementation for RPS software. It includes two sets of translation algorithms and rules as well as a prototype translator. We used an example of RPS software in a Korean nuclear power plant to demonstrate the correctness and effectiveness of the proposed translation.

소스코드와 실행코드의 상관관계 분석을 통한 최악실행시간 측정 방법 (Measuring Method of Worst-case Execution Time by Analyzing Relation between Source Code and Executable Code)

  • 서용진;김현수
    • 인터넷정보학회논문지
    • /
    • 제17권4호
    • /
    • pp.51-60
    • /
    • 2016
  • 내장 소프트웨어는 실시간성 및 실행 환경으로부터의 독립성을 요구사항으로 갖는다. 실시간성 요구사항은 탑재된 태스크의 최악 실행 시간으로부터 영향을 받는다. 따라서 실시간성을 보장하기 위해서는 정적 분석 기반의 최악 실행 시간 분석 방법을 사용하여 프로그램의 최악 실행 시간을 파악하여야 한다. 그러나 기존의 최악 실행 시간 분석은 실행 환경으로부터 독립성을 고려하지 않는다. 이에 우리는 실행 환경으로부터 독립성을 제공하기 위해 소스코드로부터 실행 시간을 측정하는 방법을 제시한다. 이를 위해 실행 코드가 아닌 소스코드로부터 생성된 제어 흐름 그래프를 통해 실행 시간을 측정한다. 또한 소스코드로부터 생성된 제어 흐름 그래프에는 실행 시간 정보가 존재하지 않기 때문에, 이를 제공하기 위해 소스코드의 문장과 실행코드의 명령어와의 관계를 분석한다. 결과적으로 실행 시간 측정이 가능한 제어 흐름 그래프를 생성할 수 있다. 이를 통해 프로세서로부터 종속적인 부분을 매개변수화할 수 있기 때문에, 최악 실행 시간 분석 도구의 유연성을 향상시킬 수 있다.

코레어그래피 기반 웹 서비스 조합의 구현 적합성 평가 및 테스트 방법 (Conformity Assessment and Test Method for Implementation of Web Services Compositions based on Choreography)

  • 국승학;서용진;김현수
    • 인터넷정보학회논문지
    • /
    • 제13권1호
    • /
    • pp.83-98
    • /
    • 2012
  • 최근 웹 서비스 기반 서비스 지향 구조가 분산된 애플리케이션의 효율적인 통합을 위한 방법으로 널리 활용되고 있다. 서비스 지향 구조에서의 코레어그래피는 기업 간 비즈니스 프로세스 환경에서 메시지 교환에 초점을 맞춘 협업 방식으로 참여하는 서비스들 사이의 작업 진행 순서와 메시지 교환 프로토콜을 정의함으로써 거시적인 측면에서 전체 프로세스를 모델링하기 위해 사용된다. 그러나 이러한 코레어그래피는 웹 서비스 조합을 실행시키는 방법이 아니기 때문에 구현 모델로 변환 후 사용된다. 따라서 코레어그래피 모델을 실행시키기 위한 구현 모델은 기능적인 측면에서 코레어그래피 모델을 정확하게 구현하였는지 반드시 평가되어야 한다. 이에 본 논문에서는 코레어그래피 모델과 구현 모델의 서비스 조합 적합성을 평가하는 방법과 수행을 통한 동작의 일치성을 보장하기 위한 테스트 방법을 제시한다.

웹기반 컴파일과 실행을 지원하는 C언어 교육콘텐츠 개발 (C-language Learning Contents Supporting Web-based Compiling and Running)

  • 김성현;김영국
    • 한국콘텐츠학회:학술대회논문집
    • /
    • 한국콘텐츠학회 2006년도 추계 종합학술대회 논문집
    • /
    • pp.796-800
    • /
    • 2006
  • 본 논문에서는 프로그래밍 언어 학습에서 기존의 상용 소프트웨어 개발도구를 이용한 교육에서 벗어나 이해와 실습 중심의 학습이 보다 편리하고 효과적으로 진행될 수 있도록 웹 기반 온라인 학습 콘텐츠를 개발하였다. 프로그래밍 언어 학습은 소스코드를 작성하고 컴파일 후 실행시키는 과정을 거치면서 원리를 깨우쳐 가는 것이 일반적이며 대부분 Microsoft사의 통합개발환경(Visual Studio)이나 상용 소프트웨어 패키지를 각각의 실습 PC에 설치해서 수업을 진행하고 있다. 이 방법은 실습하는 모든 PC에 프로그램을 설치해야하고 구입비용이 적지 않으며 프로그램이 설치되어 있지 않은 곳에서의 학습은 어렵다. 이를 해결하기 위해 리눅스서버와 오픈소스 소프트웨어를 활용하여 웹 브라우저 상에서 직접 코드를 입력해서 컴파일하고 결과를 확인할 수 있는 프로그래밍 언어 학습 콘텐츠를 개발하였다.

  • PDF