• 제목/요약/키워드: 소프트웨어 역공학

검색결과 88건 처리시간 0.027초

Windows 상에서 소프트웨어 역공학 방지를 위한 프레임워크 구현 (An Implementation of Framework for Software Protection against Reverse Engineering on Windows)

  • 박영웅;장혜영;조성제
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2010년도 한국컴퓨터종합학술대회논문집 Vol.37 No.1(D)
    • /
    • pp.130-135
    • /
    • 2010
  • 실형코드의 역공학(reverse engineering) 을 방지하기 위해서 패킹기법을 많이 사용하고 있다. 패킹을 적용하면 본래의 코드는 실형 압축되어 감춰지기 때문에 언패킹 과정을 거쳐야 바이너리 분석이 가능하게 된다. 언패킹을 위해 패킹된 프로그램에 스텁코드를 삽입하는데 스텁코드는 언패킹하기 위한 코드와 원본 프로그램의 IAT(Import Address Table) 등 중요한 정보를 담고 있다. 스텁코드를 보호하기 위하여 본 논문에서는 중요한 함수의 코드를 별도의 2차 스텁파일에 저장하고 중요한 함수가 있던 1차 스텁코드에는 더미코드를 삽입하여 역공학 공격을 방지하였다. 또한 본 논문에서 제안하는 프레임워크를 구현하고 성능을 평가하였다.

  • PDF

안드로이드 리소스 도용 방지를 위한 난독화 도구의 설계 및 구현 (Design and Implementation of An Obfuscation Tool for Preventing the Theft of Android Resources)

  • 박희완;김흥수
    • 한국컴퓨터정보학회:학술대회논문집
    • /
    • 한국컴퓨터정보학회 2014년도 제49차 동계학술대회논문집 22권1호
    • /
    • pp.93-97
    • /
    • 2014
  • 소프트웨어는 대부분 바이너리 형태로 배포되기 때문에 역공학 분석이 쉽지 않다. 그러나 안드로이드는 자바를 기반으로 한다. 자바는 클래스 파일의 형태로 배포되는데 클래스 파일은 자바 소스 프로그램의 정보를 대부분 유지하고 있기 때문에 역공학 기술을 적용하기가 타 언어에 비해 쉽다. 이 문제에 대처하기 위해서 프로그램의 기능을 그대로 유지하고, 프로그램을 분석하기 어려운 형태로 변환하는 다양한 난독화 방법이 제안되었다. 안드로이드 환경에서는 안드로이드 SDK와 함께 배포되는 난독화 도구인 프로가드(Proguard)가 가장 널리 사용된다. 그러나 프로가드는 문자열 난독화를 기능을 제공하지 않는다. 본 논문에서는 프로가드의 한계를 보완할 수 있는 문자열 난독화 기법을 제안하고 구현하였다. 본 논문에서 제안하는 문자열 난독화 기법을 먼저 소스 코드에 적용하고, 이후 프로가드의 난독화 기능을 추가로 사용한다면 안드로이드 프로그램을 역공학 분석으로부터 보호하는 효과적인 방법으로 사용될 수 있을 것이다.

  • PDF

안드로이드 콘텐츠 지적재산권 침해 방지를 위한 난독화 도구의 설계 및 구현 (Design and Implementation of An Obfuscation Tool for Preventing the Infringement of Intellectual Property Rights of Android Contents)

  • 김흥수;박희완
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2014년도 춘계학술발표대회
    • /
    • pp.483-486
    • /
    • 2014
  • 소프트웨어는 대부분 바이너리 형태로 배포되기 때문에 역공학 분석이 쉽지 않다. 그러나 안드로이드는 자바를 기반으로 한다. 자바는 클래스 파일의 형태로 배포되는데 클래스 파일은 자바 소스 프로그램의 정보를 대부분 유지하고 있기 때문에 역공학 기술을 적용하기가 타 언어에 비해 쉽다. 이 문제에 대처하기 위해서 프로그램의 기능을 그대로 유지하고, 프로그램을 분석하기 어려운 형태로 변환하는 다양한 난독화 방법이 제안되었다. 안드로이드 환경에서는 안드로이드 SDK와 함께 배포되는 난독화 도구인 프로가드(Proguard)가 가장 널리 사용된다. 그러나 프로가드는 리소스 보호 기능을 제공하지 않는다. 본 논문에서는 프로가드의 한계를 보완할 수 있는 리소스 난독화 기법을 제안하고 구현하였다. 본 논문에서 제안하는 리소스 난독화 기법을 먼저 소스 코드에 적용하고, 이후 프로가드의 난독화 기능을 추가로 사용한다면 안드로이드 프로그램을 역공학 분석으로부터 보호하는 효과적인 방법으로 사용될 수 있을 것이다.

소프트웨어 역공학에서 기능성 검증 기법 (A Functional Verification Techniques in Software Reverse Engineering)

  • 황선명;진영택
    • 한국정보처리학회논문지
    • /
    • 제5권10호
    • /
    • pp.2546-2555
    • /
    • 1998
  • 기존의 절차중심 패러다임으로 개발된 시스템들은 사용자들의 새로운 요구와 변화 그리고 개발 당시의 기술보다 뛰어난 새로운 기술이 개발됨에 따라 수정되어야할 필요가 있다. 특히 재공학 및 역공학 기술로부터 품질이 높은 기존 시스템이 객체지향 시스템으로 변환되었을 때 변화된 시스템의 기능이 변환이전의 시스템과 동일한지 여부의 평가가 필요하다. 본 논문에서는 함수 커버리지를 제안하여 절차 중심의 소프트웨어와 변화된 객체지향 소프트웨어간의 기능적 일치성을 검증하기 위한 방법과 도구를 개발하였다. 이때 동적 분석에 필요한 계측도구의 삽입과정과 검증절차를 통하여 함수 커버리지의 만족 여부를 판단하여 테스트 데이터를 선정하였다.

  • PDF

레거시 시스템의 재사용을 위한 RUP 기반의 효율적 재공학 프로세스 (An Efficient Reengineering Process based on RUP for Reusing Legacy Systems)

  • 최일우;류성열
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제29권9호
    • /
    • pp.619-630
    • /
    • 2002
  • 1980년대 이후, 소프트웨어 위기에 대응하기 위한 다양한 소프트웨어 공학적 기법들이 출현하기 시작 하였고, 현재 소프트웨어의 질적 향상 및 생산성 향상을 꾀하기 위한 개발 지침으로 소프트웨어 컴포넌트 개발 프로세스를 구축하는데 관심이 집중되어지고 있다. 그러나 대부분의 방법론들이 앞으로 구축할 새로운 시스템의 재사용성 확보에 치중할 뿐, 실질적으로 기존 레거시 시스템의 자원을 재사용하여 새로운 시스템을 구축하는 방법은 효율적으로 지원하지 못하고 있는 실정이다. 본 논문에서는 레거시 시스템의 효율적 재사용을 위한 재공학 프로세스(Reengineering Process)로 RUP를 확장, 커스터마이징하여 구성한 RUP+re을 제시한다. RUP+re은 크게 역공학 워크플로우(Reverse Engineering Workflow), 재공학 워크플로우(Re-Engineering Workflow), 순공학 프로세스(Forward Engineering Process)로 구성되어진다. RUP+re의 각 워크플로우와 세부스텝을 제공하고 실사례 연구를 통하여 실질적으로 프로세스를 검증함으로서 레거시 시스템 자원의 재사용을 위한 소프트웨어 재공학 프로세스 구축에 효율적인 지침을 제공한다.

레거시 시스템 진화를 위한 효율적 재공학 프로세스 (An Efficient Reengineering Process for Legacy System Evolution)

  • 최일우;류성열
    • 정보처리학회논문지D
    • /
    • 제10D권5호
    • /
    • pp.845-858
    • /
    • 2003
  • 1980년대 이후, 소프트웨어 위기에 대응하기 위한 다양한 소프트웨어 공학적 기법들이 출현하기 시작 하였고, 현재 소프트웨어의 질적 항상 및 생산성 향상을 꾀하기 위한 개발 지침으로 소프트웨어 개발 프로세스를 적용하는데 관심이 집중되어지고 있다. 그러나 대부분의 방법론들이 앞으로 구축한 새로운 시스템의 재사용성 확보에 치중할 뿐, 기존의 레거시 시스템 자원을 재사용하여 새로운 시스템을 구축하는 재공학 방법은 지원하지 못하고 있는 실정이다. 본 논문에서는 레거시 시스템의 효율적 진화를 위한 재공학 프로세스(Reengineering Process)로 RUP를 확장, 커스터마이징하여 구성한 RUP+re을 제시한다. RUP+re는 Small-h 모델을 바탕으로 크게 역공학 워크플로우(Reverse Engineering Workflow), 변환 워크플로우(Transformation Workflow), 진화 워크플로우(Evolution Workflow)로 구성되어진다. RUP+re의 각 워크플로우와 세부스텝을 제공하고 재공학 사례 연구론 통하여 실질적으로 프로세스를 검증함으로서 레거시 시스템 자원의 진화론 위한 소프트웨어 재공학 프로세스 구축에 효율적인 지침을 제공한다.

VMProtect의 역공학 방해 기능 분석 및 Pin을 이용한 우회 방안 (Analysis of Anti-Reversing Functionalities of VMProtect and Bypass Method Using Pin)

  • 박성우;박용수
    • 정보처리학회논문지:컴퓨터 및 통신 시스템
    • /
    • 제10권11호
    • /
    • pp.297-304
    • /
    • 2021
  • 상용 난독화 도구(프로텍터)들은 소프트웨어 역공학 과정에서 프로그램의 분석을 지연시키고 방해하는 난독화 기술 및 역공학 방해(안티리버싱) 기법을 적용시킴으로써 소프트웨어의 동작 과정을 분석하는데 어려움을 발생시키는데 목적이 있다. 특히, 가상화 탐지와 안티디버깅 기능 같은 경우 분석 도구가 발견되면 정상적인 실행 흐름을 벗어나 프로그램을 종료시킨다. 본 논문에서는 상용 난독화 도구(프로텍터) 중 하나인 VMProtect 3.5.0을 통해 Debugger Detection, Virualization Tools Detection 옵션을 적용시킨 실행 파일의 안티리버싱 기법을 분석하고 Pin을 이용한 우회 방안을 제안한다. 또한, 적용된 안티리버싱 기법을 분석하는 과정에서 Amti-VM 기술과 Anti-DBI 기술에 의해 프로그램이 종료되는 문제가 발생하기 때문에 API 분석을 통해 특정 프로그램 종료 루틴을 알아내어 적용된 안티리버싱 기법의 위치를 예상하고 위치를 바탕으로 안티리버싱 기법 우회 방안 알고리즘 순서도를 작성하였다. 실험에 사용된 소프트웨어들의 버전의 차이로부터 발생하는 호환성 문제, 기법의 변화 등을 고려하여 최신 버전의 소프트웨어(VMProtect, Windows, Pin)에서 Pin 자동화 우회 코드를 작성하고 실험을 진행하여 성공적으로 우회됨을 확인하였다. 제안된 분석 방안을 개선하여 기법이 제시되지 않은 난독화 도구의 안티리버싱 기법을 분석하고 우회 방안을 찾아낼 수 있다.

비주얼 C++소스 코드를 위한 obfuscator 구현 (Implementation of an Obfuscator for Visual C++ Source Code)

  • 장혜영;조성제
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제35권2호
    • /
    • pp.59-69
    • /
    • 2008
  • 자동화된 obfuscation은 보안 목적으로 코드를 이해하기 어렵게 만들어 역공학 공격을 방어하는데 가장 효과적인 방식이라고 알려져 있다. 본 논문에서는 역공학 공격과 같은 소프트웨어 지적재산권의 침해로부터 마이크로소프트사의 비주얼 C++ 소스 프로그램을 보호하기 위한 obfuscation 기법을 제안하고 구현하였다. 즉, 원본 비주얼 C++ 소스 프로그램을 기능은 동일하지만 이해하기에는 훨씬 힘든 또 다른 프로그램으로 변환시켜 주는 도구인 코드 obfuscator를 구현하였다. 비주얼 C++ 소스를 다루기 위해 ANTLR이라는 파서 생성기를 도입하여, '주석 제거', '식별자 스크램블', '변수 분할', '배열 중첩', '클래스 삽입', '루프 조건 확장'. '부가 피연산자 삽입', '무의미 코드 삽입' 등의 변환 방식들을 구현하였다. 또한, 복잡도, 복원력, 비용 등의 측면에서 본 obfuscator의 성능과 유효성을 평가하였다. 원본 소스 코드와 비교하여 실험한 결과, 변환된 소스 코드가 실행시간 오버헤드를 일부 유발시키긴 하지만 프로그램 보호에는 효과적임을 알 수 있었다.

역공학을 이용한 자바 소스 코드의 변화량 분석 및 시각화 도구 개발 (Development of Analysis and Visualization Tool for Java Source Code Changes using Reverse Engineering Technique)

  • 권진욱;최윤자;이우진
    • 정보처리학회논문지D
    • /
    • 제19D권1호
    • /
    • pp.39-48
    • /
    • 2012
  • 소프트웨어 시스템을 효율적으로 유지보수 및 관리하기 위해서는 변경 전후의 시스템의 변경사항을 쉽게 파악할 수 있도록 시각적으로 표현해주는 것이 중요하다. 소프트웨어 변경사항 분석에 대한 연구는 많이 진행되어 왔으나 변경 유형뿐만 아니라 변경 정도를 정량화하고 이를 시각화하여 나타내려는 연구는 많지 않다. 이 연구에서는 자바로 구현된 시스템에 대해 클래스 다이어그램에서의 변경사항 분석 및 정량화 방법과 이를 시각적으로 나타내는 방법에 대해 제시한다. 먼저 소스 코드의 구조적인 변화를 검사하기 위해, 역공학을 이용하여 클래스 다이어그램을 추출한다. 그리고 클래스 다이어그램 정보를 이용하여 변경 유형 및 변경량을 정량화한 다음, 색상 스펙트럼을 이용하여 클래스 다이어그램에 변경량을 시각적으로 나타낸다. 이러한 시각화 기법을 이용하면, 유지보수 관리자가 쉽게 변경된 부분을 파악할 수 있어 유지보수에 소요되는 시간과 노력을 조금이라도 줄일 수 있다.

안드로이드 콘텐츠 저작권 침해 방지를 위한 서버 기반 리소스 난독화 기법의 설계 및 구현 (Design and Implementation of Server-based Resource Obfuscation Techniques for Preventing Copyrights Infringement to Android Contents)

  • 박희완
    • 한국콘텐츠학회논문지
    • /
    • 제16권5호
    • /
    • pp.13-20
    • /
    • 2016
  • 소프트웨어는 대부분 바이너리 파일 포맷으로 배포되기 때문에 역공학 분석이 쉽지 않다. 그러나 안드로이드는 자바를 기반으로 하며 가상머신 위에서 동작한다. 따라서 안드로이드 역시 자바와 유사하게 역공학 도구에 의해서 쉽게 분석될 수 있다. 이 문제를 극복하기 위해서 다양한 난독화 기법이 제안되었다. 안드로이드 환경에서는 안드로이드 SDK에 포함되어 배포되는 난독화 도구인 프로가드(Proguard)가 가장 널리 사용된다. 프로가드는 자바 소스 코드를 역공학 분석으로부터 보호할 수 있다. 그러나 이미지, 사운드, 데이터베이스와 같은 리소스를 보호하는 기능은 가지고 있지 않다. 본 논문에서는 안드로이드 앱의 리소스를 보호할 수 있는 리소스 난독화 기법을 제안하고 구현하였다. 본 논문에서 제안하는 리소스 난독화 기법을 적용하면 효과적으로 리소스 도용을 예방할 수 있을 것으로 기대한다.