[go: up one dir, main page]

KR101350390B1 - 코드 난독화 장치 및 그 방법 - Google Patents

코드 난독화 장치 및 그 방법 Download PDF

Info

Publication number
KR101350390B1
KR101350390B1 KR1020130096514A KR20130096514A KR101350390B1 KR 101350390 B1 KR101350390 B1 KR 101350390B1 KR 1020130096514 A KR1020130096514 A KR 1020130096514A KR 20130096514 A KR20130096514 A KR 20130096514A KR 101350390 B1 KR101350390 B1 KR 101350390B1
Authority
KR
South Korea
Prior art keywords
code
native
self
obfuscated
general
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
KR1020130096514A
Other languages
English (en)
Inventor
이정현
정진혁
Original Assignee
숭실대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 숭실대학교산학협력단 filed Critical 숭실대학교산학협력단
Priority to KR1020130096514A priority Critical patent/KR101350390B1/ko
Priority to PCT/KR2013/008744 priority patent/WO2015023023A1/ko
Priority to US14/360,306 priority patent/US8984299B1/en
Priority to EP13891571.5A priority patent/EP2897072B1/en
Priority to JP2015542937A priority patent/JP5996809B2/ja
Application granted granted Critical
Publication of KR101350390B1 publication Critical patent/KR101350390B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1066Hiding content

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 코드 난독화 장치 및 그 방법에 관한 것이다. 본 발명의 코드 난독화 장치는 안드로이드 애플리케이션의 실행 코드를 입력받는 입력부; 상기 입력된 실행 코드를 분석하여 애플리케이션 위변조 공격으로부터 보호될 필요가 있는 중요 코드와 상기 중요 코드 이외의 일반 코드로 구분하는 코드 분석부; 상기 중요 코드를 C 코드로 변환시켜 네이티브 코드를 생성하는 코드 컨버터부; 상기 네이티브 코드 및 상기 일반 코드를 난독화하는 난독화부; 상기 난독화된 네이티브 코드에 위변조 탐지 코드를 추가하여 암호화한 뒤 로딩 루틴을 추가시켜 자가변환된 네이티브 코드를 생성하는 자기 코드 보호부; 및 상기 자가변환된 네이티브 코드와 상기 난독화된 일반 코드를 결합하는 코드 결합부를 포함한다.
이와 같이 본 발명에 따르면, 난독화 대상이 되는 애플리케이션의 중요 코드 부분을 CPU 명령어 집합으로 재구성하고 중요 코드를 관리되는 코드에서 네이티브 코드(Native Code)로 변환함으로써, 관리되는 코드의 역공학 취약성 중의 하나인 구조화된 코드 정보를 제거하여 상대적으로 역공학을 난해하게 만들어 역공학을 방지할 수 있다.
또한, 네이티브 코드로 변환된 중요 코드를 보호하기 위해서 자가변환 기반의 코드 보호 기법과 위변조 탐지 기술을 적용함으로써 역공학 분석에 대한 저항성을 향상시킨다.

Description

코드 난독화 장치 및 그 방법{A APPARATUS FOR CODE OBFUSCATION AND METHOD THEREOF}
본 발명은 코드 난독화 장치 및 그 방법에 관한 것으로서, 더욱 상세하게는 안드로이드 애플리케이션의 위변조 방지를 위한 자가변환 기반의 난독화 장치 및 그 방법에 관한 것이다.
기존의 난독화 장치 및 그 방법은, 자바 가상 머신에서 동작하는 애플리케이션을 대상으로 애플리케이션을 구성하는 코드 구조를 변경함으로써 난독화를 적용한다. 여기서 난독화가 적용된 애플리케이션은 난독화 적용 전과 동일하게 자바 가상 머신에서 동작하는 명령어 집합과 목적파일 구조로 구성된다.
하지만, 기존의 난독화 장치 또는 방법에 의하는 경우, 가상 머신에서 동작하는 관리되는 코드(Managed Code)가 가지는 역공학 취약성은 난독화 이후에도 동일하게 남아있게 되는 문제점이 있다.
관리되는 코드가 가지는 역공학 취약성은 다음과 같은데, 컴파일된 목적 코드에 클래스 명, 멤버 변수 명, 메소드 명 등 소소 코드 정보가 포함되며 코드가 명시적으로 구조화되어 있어서 역공학을 통해 특정 로직을 찾거나 분석하는 것이 용이하다.
안드로이드 애플리케이션도 상기 자바 머신에서 동작하는 애플리케이션과 비슷하게 달빅 가상머신(Dalvik Virtual Machine)에서 동작하는 관리되는 코드로 구성되며 DEX(Dalvik Executable) 파일 형식으로 저장된다. 따라서 안드로이드 애플리케이션은 동일한 관리되는 코드의 역공학 취약성이 존재한다.
본 발명의 배경이 되는 기술은 대한민국 등록특허공보 제10-1234591호(2013.2.19. 공고)에 기재되어 있다.
본 발명이 해결하고자 하는 과제는, 난독화 대상이 되는 애플리케이션의 중요 코드 부분을 CPU 명령어 집합으로 재구성하고 중요 코드를 관리되는 코드에서 네이티브 코드(Native Code)로 변환함으로써, 관리되는 코드의 역공학 취약성 중의 하나인 구조화된 코드 정보를 제거하여 상대적으로 역공학을 난해하게 만들어 역공학을 방지한다.
또한, 네이티브 코드로 변환된 중요 코드를 보호하기 위해서 자가변환 기반의 코드 보호 기법과 위변조 탐지 기술을 적용함으로써 역공학 분석에 대한 저항성을 향상시킨다.
상기한 바와 같은 목적을 달성하기 위한 본 발명의 하나의 실시예에 따른 코드 난독화 장치는, 안드로이드 애플리케이션의 실행 코드를 입력받는 입력부; 상기 입력된 실행 코드를 분석하여 애플리케이션 위변조 공격으로부터 보호될 필요가 있는 중요 코드와 상기 중요 코드 이외의 일반 코드로 구분하는 코드 분석부; 상기 중요 코드를 C 코드로 변환시켜 네이티브 코드를 생성하는 코드 컨버터부; 상기 네이티브 코드 및 상기 일반 코드를 난독화하는 난독화부; 상기 난독화된 네이티브 코드에 위변조 탐지 코드를 추가하여 암호화한 뒤 로딩 루틴을 추가시켜 자가변환 기법이 적용된 네이티브 코드를 생성하는 자기 코드 보호부; 및 상기 자가변환 기법이 적용된 네이티브 코드와 상기 난독화된 일반 코드를 결합하는 코드 결합부를 포함한다.
또한, 상기 코드 결합부에 의해 결합된 상기 자가변환 기법이 적용된 네이티브 코드와 상기 난독화된 일반 코드를 클라이언트로 전송하는 전송부를 더 포함할 수 있다.
또한, 상기 자가변환 기법이 적용된 네이티브 코드는 CPU 환경에서 동작하고, 상기 난독화된 일반 코드는 달빅 가상 머신에서 실행될 수 있다.
또한, 상기 코드 분석부는, 기 저장된 중요 코드 모델을 이용하여 상기 입력된 실행 코드와 매칭되는 실행 코드를 상기 중요 코드로 판단할 수 있다.
또한, 상기 로딩 루틴은, 상기 암호화된 네이티브 코드가 실행될 때 상기 코드의 암호화된 부분을 디코딩할 수 있다.
또한, 상기 위변조 탐지 코드는, 코드 위조 내지 변조 행위로부터 네이티브 코드를 보호할 수 있다.
본 발명의 하나의 실시예에 따른 코드 난독화 방법은, 안드로이드 애플리케이션의 실행 코드를 입력받는 단계; 상기 입력된 실행 코드를 분석하여 애플리케이션 위변조 공격으로부터 보호될 필요가 있는 중요 코드와 상기 중요 코드 이외의 일반 코드로 구분하는 단계; 상기 중요 코드를 C 코드로 변환시켜 네이티브 코드를 생성하는 단계; 상기 네이티브 코드 및 상기 일반 코드를 난독화하는 단계; 상기 난독화된 네이티브 코드에 위변조 탐지 코드를 추가하여 암호화한 뒤 로딩 루틴을 추가시켜 자가변환된 네이티브 코드를 생성하는 단계; 및 상기 자가변환된 네이티브 코드와 상기 난독화된 일반 코드를 결합하는 단계를 포함한다.
본 발명인 코드 난독화 장치 및 그 방법에 따르면, 난독화 대상이 되는 애플리케이션의 중요 코드 부분을 CPU 명령어 집합으로 재구성하고 중요 코드를 관리되는 코드에서 네이티브 코드(Native Code)로 변환함으로써, 관리되는 코드의 역공학 취약성 중의 하나인 구조화된 코드 정보를 제거하여 상대적으로 역공학을 난해하게 하여 역공학을 방지할 수 있다.
또한, 네이티브 코드로 변환된 중요 코드를 보호하기 위해서 자가변환 기반의 코드 보호 기법과 위변조 탐지 기술을 적용함으로써 역공학 분석에 대한 저항성을 향상시킨다.
도 1은 본 발명의 실시예에 따른 코드 난독화 장치의 구성도이다.
도 2는 본 발명의 실시예에 따른 코드 난독화 방법의 순서도이다.
도 3은 본 발명의 실시예에 따른 난독화 및 암호화된 애플리케이션 파일의 구성도이다.
이하에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
먼저, 본 발명의 코드 난독화 장치에 대하여 설명한다.
도 1은 본 발명의 실시예에 따른 코드 난독화 장치의 구성도이다.
도 1을 참조하면, 본 발명의 실시예에 따른 코드 난독화 장치(100)는, 입력부(110), 코드 분석부(120), 코드 컨버터부(130), 난독화부(140), 자기 코드 보호부(150) 및 코드 결합부(160)를 포함하고, 전송부(170)를 더 포함할 수 있다.
입력부(110)는 안드로이드 애플리케이션의 실행 코드를 입력받는다. 여기서 입력부는 키패드 형태로서 입력 인터페이스부가 구비될 수 있다.
코드 분석부(Code Structure Analyzer, 120)는 APK(Android Package) 파일 내에 압축되어 있는 실행 파일인 DEX 파일을 분석하여 사용자 입력에 따라 중요 코드를 기존 코드로부터 분리한다.
코드 컨버터부(Dalvik to C Code Converter,130)는 일반 코드와 분리된 중요 코드를 분석하여 C 코드로 재구성하여 매니지드 코드(Managed Code)를 네이티브 코드(Native Code)로 변환한다.
난독화부(Obfuscator, 140)는 네이티브 코드 난독화부(Native Code Obfuscator, 141)와 매니지드 코드 난독화부(Managed Code Obfuscator, 142)를 포함할 수 있다. 네이티브 코드 난독화부(142)는 네이티브 코드로 변환된 중요 코드에 대해 네이티브 환경에서 난독화 기법을 적용한다. 또한, 매니지드 코드 난독화부(142)는 일반 코드에 대해 매니지드 환경에서 난독화 기법을 적용한다.
자기 코드 보호부(Self Code Protector, 150)는, 난독화된 네이티브 코드를 정적 분석으로부터 보호하기 위해 위변조 탐지 코드(Tamper-Detection Code)를 추가하고, 자가변환 기반의 코드 보호 기법을 적용하여 코드를 암호화한다. 그리고 자기 코드 보호부(150)는 상기 암호화된 네이티브 코드에 로딩 루틴을 추가하여 자가변환된 네이티브 코드를 생성한다.
코드 결합부(160)는, 난독화된 일반 코드와 자가변환된 네이티브 코드를 다시 APK 파일로 패키징한다.
전송부(170)는, 코드 결합부(160)에 의해 패키징된 코드(자가변환된 네이티브 코드와 난독화된 일반 코드)를 클라이언트로 전송한다. 이때 전송부(170)는 패키징된 코드를 직접 클라이언트로 전달할 수도 있고, 안드로이드 마켓 등에 업로드를 하여, 클라이언트가 다운로드 받을 수 있도록 할 수 있다.
이하에서는 도 2 및 도 3을 통하여 본 발명의 실시예에 따른 코드 난독화 방법에 대하여 설명하기로 한다.
도 2는 본 발명의 실시예에 따른 코드 난독화 방법의 순서도이고, 도 3은 본 발명의 실시예에 따른 난독화되어 결합된 애플리케이션 파일의 구성도이다.
도 2를 참조하면, 입력부(110)는 안드로이드 애플리케이션의 실행 코드를 입력 받는다(S210). 여기서 실행 코드가 입력되는 과정은 입력 인터페이스를 통해서 사용자가 안드로이드 애플리케이션 파일인 APK(Android Package) 파일을 지정하는 행위, 지정된 APK 파일의 압축을 해제하는 행위, 안드로이드 애플리케이션의 실행 파일인 DEX 파일을 지정하는 행위를 포함할 수 있다.
안드로이드 애플리케이션은 확장자가 apk 형태인 파일로 배포된다. 여기서 apk는 Android Package를 의미하는데, 안드로이드 애플리케이션의 빌드 과정에서 여러 가지 파일의 컴파일 또는 링크 과정을 거치면서 압축 파일 형태의 확장자가 apk인 파일(이하 APK 파일)이 생성된다. 실행 코드는 안드로이드 애플리케이션 파일인 APK 파일 내에 압축되어 있는 dex 확장자를 갖는 실행 파일(이하 DEX 파일)의 코드를 의미한다.
코드 분석부(120)는 입력부(110)로 입력된 실행 코드를 분석하여 애플리케이션 위변조 공격으로부터 보호될 필요가 있는 중요 코드와 상기 중요 코드를 제외하는 일반 코드로 구분한다(S220).
코드 구분을 위해 코드 분석부(120)는 기 저장된 중요 코드 모델을 이용하여 상기 입력된 실행 코드에서 중요 코드 모델과 매칭되는 코드를 중요 코드로 판단한다. 여기서 입력된 실행 코드는 DEX 파일을 구성하는 코드이다. 또한, 중요 코드린 사용자의 관점에서 공격자의 위변조 행위로부터 보호될 필요가 있는 코드를 말한다. 중요 코드와 반대되는 개념으로 중요 코드 이외의 코드를 일반 코드로 칭한다.
코드 컨버터부(Dalvik to C Code Converter,130)는, 일반 코드와 분리된 중요 코드를 분석하여 C 코드로 재구성하여 매니지드 코드(Managed Code)를 네이티브 코드(Native Code)로 변환한다(S230).
변환된 네이티브 코드는 ELF(Executable and Linkable Format) 형태로 저장된다. ELF 형태는 코드의 구조가 명시적으로 구분되지 않아 DEX 형태에 비해 코드 위변조를 위한 동적 분석 또는 정적 분석에 상대적으로 쉽게 노출되지 않는 장점이 있다. 또한, ELF 형태는 명령어 구성이 Dalvik 명령어에 비해 기계어에 가까운 낮은 수준의 CPU 명령어로 구성되어 있어서 공격자의 동적 분석 및 정적 분석을 어렵게 한다.
네이티브 코드 난독화부(141)는 네이티브 코드로 변환된 중요 코드에 대해 네이티브 환경에서 적용 가능한 난독화 기법을 적용한다(S240).
자기 코드 보호부(Self Code Protector, 150)는 난독화된 네이티브 코드를 정적 분석으로부터 보호하기 위해 위변조 탐지 코드(Tamper-detection Code)를 추가하고, 자가변환 기반의 코드 보호 기법을 적용하여 코드를 암호화한다. 그리고 자기 코드 보호부(150)는 상기 암호화된 네이티브 코드에 로딩 루틴을 추가하여 자가변환된 네이티브 코드를 생성한다(S250).
그 밖에 네이티브 코드에 추가된 위변조 탐지 코드는 동적으로 애플리케이션의 위변조를 검사함으로써, 공격자의 코드 추가 또는 변조행위를 탐지할 수 있다. 위변조 탐지 코드에 의하여 공격자의 위변조 행위가 탐지되는 경우, 위변조 탐지 코드는 실행상태에 있는 애플리케이션을 강제 종료시킴으로써 공격자의 코드 분석 행위를 중지시킬 수 있다. 또한, 위변조 탐지 코드는 자가변환 기법에 의해 보호되어 공격자의 위변조 탐지 루틴의 우회 가능성을 감소시킨다.
자기 코드 보호부(150)에 의해 추가된 로딩 루틴은 특정 코드가 실행될 때 특정 코드의 암호화 부분을 디코딩한다. 즉, 암호화된 특정 코드는 실행시 호출되는 루틴만 한시적으로 디코딩된다. 따라서, 암호화된 코드가 노출되는 시간적인 범위를 줄임으로써 공격자에 의한 코드 위변조 행위를 방지할 수 있다.
매니지드 코드 난독화부(142)는 매니지드 코드로 변환된 일반 코드에 대해 매니지드 환경에서 적용 가능한 난독화 기법을 적용한다(S255). 즉, 난독화부(140)는 하드웨어적으로 네이티브 코드 난독화부(141)와 매니지드 코드 난독화부(142)로 분리될 수 있으며, 네이티브 환경과 매니지드 환경이라는 서로 다른 환경에서 중요 코드 또는 일반 코드를 분리하여 난독화한다.
그리고 코드 결합부(160)는, 도 3과 같이 난독화된 일반 코드(Obfuscated General Code)에 해당되는 매니지드 코드 섹션(Managed Code Section)과 로딩 루틴(Loading Routine)이 추가된 자가변환된 중요 코드에 해당되는 네이티브 코드 섹션(Native Code Section)으로 APK 파일을 패키징한다(S260).
도 3에서 난독화된 안드로이드 애플리케이션 파일의 코드 부분이 매니지드 코드 섹션(Managed Code Section)과 네이티브 코드 섹션(Native Code Section)으로 구분된다. 매니지드 코드 섹션(Managed Code Section)은 난독화부(140)에 의해 난독화된 일반 코드(Obfuscated General Code)를 포함하고, 네이티브 코드 섹션(Native Code Section)은 암호화된 코드(Encrypted Code) 및 로딩 루틴(Loading Routine)을 포함한다.
자기 코드 보호부(150)에 의해 암호화된 코드(Encrypted Code)는 네이티브 코드가 암호화된 비밀코드(Secrete Code), 네이티브 코드에 포함되어 전송되는 비밀 데이터(Secrete Data) 및 위변조 방지 코드(Tamper-Detection Code)를 포함한다.
전송부(170)는, 코드 결합부(160)에 의해 결합된 자가변환된 네이티브 코드와 난독화된 일반 코드를 클라이언트로 전송한다(S270). 여기서 전송되는 파일의 형태는 클라이언트에서 다운로드 받아 설치할 수 있는 형태가 되며, 네이티브 코드와 일반 코드를 포함하는 APK 파일일 수 있다.
이와 같이 본 발명의 실시예에 따르면, 난독화 대상이 되는 애플리케이션의 중요 코드 부분을 CPU 명령어 집합으로 재구성하고 중요 코드를 관리되는 코드에서 네이티브 코드(Native Code)로 변환함으로써, 관리되는 코드의 역공학 취약성 중의 하나인 구조화된 코드 정보를 제거하여 상대적으로 역공학을 난해하게 만들어 역공학을 방지할 수 있다.
또한, 네이티브 코드로 변환된 중요 코드를 보호하기 위해서 자가변환 기반의 코드 보호 기법과 위변조 탐지 기술을 적용함으로써 역공학 분석에 대한 저항성을 향상시킨다.
이제까지 본 발명에 대하여 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 따라서 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허청구범위에 기재된 내용 및 그와 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
100: 코드 난독화 장치 110: 입력부
120: 코드 분석부 130: 코드 컨버터부
140: 난독화부 141: 매니지드 코드 난독화부
142: 네이티브 코드 난독화부 150: 자기 코드 보호부
160: 코드 결합부 170: 전송부

Claims (10)

  1. 안드로이드 애플리케이션의 실행 코드를 입력받는 입력부;
    상기 입력된 실행 코드를 분석하여 애플리케이션 위변조 공격으로부터 보호될 필요가 있는 중요 코드와 상기 중요 코드 이외의 일반 코드로 구분하는 코드 분석부;
    상기 중요 코드를 C 코드로 변환시켜 네이티브 코드를 생성하는 코드 컨버터부;
    상기 네이티브 코드 및 상기 일반 코드를 난독화하는 난독화부;
    상기 난독화된 네이티브 코드에 위변조 탐지 코드를 추가하여 암호화한 뒤 로딩 루틴을 추가시켜 자가변환 기법이 적용된 네이티브 코드를 생성하는 자기 코드 보호부; 및
    상기 자가변환 기법이 적용된 네이티브 코드와 상기 난독화된 일반 코드를 결합하는 코드 결합부를 포함하되,
    상기 로딩 루틴은,
    상기 암호화된 네이티브 코드가 실행될 때 상기 네이티브 코드의 암호화된 부분을 디코딩하는 코드 난독화 장치.
  2. 제 1항에 있어서,
    상기 코드 결합부에 의해 결합된 상기 자가 변화 기법이 적용된 네이티브 코드와 상기 난독화된 일반 코드를 클라이언트로 전송하는 전송부를 더 포함하는 코드 난독화 장치.
  3. 제 2항에 있어서,
    상기 자가변환 기법이 적용된 네이티브 코드는 CPU 환경에서 동작하고, 상기 난독화된 일반 코드는 달빅 가상 머신에서 실행되는 코드 난독화 장치.
  4. 청구항 4은(는) 설정등록료 납부시 포기되었습니다.
    제 3항에 있어서,
    상기 코드 분석부는,
    기 저장된 중요 코드 모델을 이용하여 상기 입력된 실행 코드와 매칭되는 실행 코드를 상기 중요 코드로 판단하는 코드 난독화 장치.
  5. 삭제
  6. 코드 난독화 장치를 이용한 코드 난독화 방법에 있어서,
    안드로이드 애플리케이션의 실행 코드를 입력받는 단계;
    상기 입력된 실행 코드를 분석하여 애플리케이션 위변조 공격으로부터 보호될 필요가 있는 중요 코드와 상기 중요 코드 이외의 일반 코드로 구분하는 단계;
    상기 중요 코드를 C 코드로 변환시켜 네이티브 코드를 생성하는 단계;
    상기 네이티브 코드 및 상기 일반 코드를 난독화하는 단계;
    상기 난독화된 네이티브 코드에 위변조 탐지 코드를 추가하여 암호화한 뒤 로딩 루틴을 추가시켜 자가변환 기법이 적용된 네이티브 코드를 생성하는 단계; 및
    상기 자가변환 기법이 적용된 네이티브 코드와 상기 난독화된 일반 코드를 결합하는 단계를 포함하되,
    상기 로딩 루틴은,
    상기 암호화된 네이티브 코드가 실행될 때 상기 네이티브 코드의 암호화된 부분을 디코딩하는 코드 난독화 방법.
  7. 제 6항에 있어서,
    코드 결합부에 의해 결합된 상기 자가변환 기법이 적용된 네이티브 코드와 상기 난독화된 일반 코드를 클라이언트로 전송하는 단계를 더 포함하는 코드 난독화 방법.
  8. 제 7항에 있어서,
    상기 자가변환 기법이 적용된 네이티브 코드는 CPU 환경에서 동작하고, 상기 난독화된 일반 코드는 달빅 가상 머신에서 실행되는 코드 난독화 방법.
  9. 청구항 9은(는) 설정등록료 납부시 포기되었습니다.
    제 8항에 있어서,
    상기 실행 코드를 분석하여 구분하는 단계는,
    기 저장된 중요 코드 모델을 이용하여 상기 입력된 실행 코드와 매칭되는 실행 코드를 상기 중요 코드로 판단하는 코드 난독화 방법.
  10. 삭제
KR1020130096514A 2013-08-14 2013-08-14 코드 난독화 장치 및 그 방법 Active KR101350390B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020130096514A KR101350390B1 (ko) 2013-08-14 2013-08-14 코드 난독화 장치 및 그 방법
PCT/KR2013/008744 WO2015023023A1 (ko) 2013-08-14 2013-09-30 코드 난독화 장치 및 그 방법
US14/360,306 US8984299B1 (en) 2013-08-14 2013-09-30 Apparatus for code obfuscation and method thereof
EP13891571.5A EP2897072B1 (en) 2013-08-14 2013-09-30 Device for obfuscating code and method for same
JP2015542937A JP5996809B2 (ja) 2013-08-14 2013-09-30 コード難読化装置及びその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130096514A KR101350390B1 (ko) 2013-08-14 2013-08-14 코드 난독화 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR101350390B1 true KR101350390B1 (ko) 2014-01-16

Family

ID=50145291

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130096514A Active KR101350390B1 (ko) 2013-08-14 2013-08-14 코드 난독화 장치 및 그 방법

Country Status (5)

Country Link
US (1) US8984299B1 (ko)
EP (1) EP2897072B1 (ko)
JP (1) JP5996809B2 (ko)
KR (1) KR101350390B1 (ko)
WO (1) WO2015023023A1 (ko)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101566145B1 (ko) 2014-10-23 2015-11-06 숭실대학교산학협력단 모바일 기기 및 상기 모바일 기기의 동작 방법
KR101619458B1 (ko) 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법
NO20141445A1 (no) * 2014-12-01 2016-06-02 Protectoria As Sikring av applikasjoner installert i lokalt endepunktutstyr
KR101628923B1 (ko) * 2014-12-24 2016-06-22 고려대학교 산학협력단 코드 변환 방법 및 코드 변환 장치
WO2016096139A1 (de) * 2014-12-18 2016-06-23 Giesecke & Devrient Gmbh Verfahren zum bereitstellen einer sicherheitskritischen softwareapplikation auf einer computereinheit
WO2016111413A1 (ko) * 2015-01-08 2016-07-14 숭실대학교 산학협력단 분간이 난해한 식별자 변환을 이용한 코드 난독화 장치 및 방법
KR101704703B1 (ko) * 2016-06-08 2017-02-08 (주)케이사인 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
KR101710796B1 (ko) * 2015-08-24 2017-02-28 숭실대학교산학협력단 난독화된 모바일 애플리케이션의 식별자 역난독화 장치 및 그 방법
WO2018012693A1 (ko) * 2016-07-11 2018-01-18 (주)케이사인 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
KR101845155B1 (ko) 2016-06-30 2018-04-03 라인 가부시키가이샤 어플리케이션 패키지를 제공하는 방법 및 시스템, 그리고 어플리케이션을 실행하는 방법 및 시스템
KR20240050511A (ko) 2022-10-11 2024-04-19 라온시큐어(주) 코드 가상화 시스템 및 방법
KR20240050513A (ko) 2022-10-11 2024-04-19 라온시큐어(주) 코드 가상화 시스템 및 방법
KR20240050512A (ko) 2022-10-11 2024-04-19 라온시큐어(주) 코드 가상화 시스템 및 방법

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
US9208348B1 (en) * 2014-01-15 2015-12-08 Symantec Corporation Systems and methods for managing encrypted files within application packages
US9659156B1 (en) * 2014-03-20 2017-05-23 Symantec Corporation Systems and methods for protecting virtual machine program code
US9547758B2 (en) * 2014-05-19 2017-01-17 Nxp B.V. Program cable obfuscation based upon recently executed program code
KR101518420B1 (ko) * 2014-11-11 2015-05-07 주식회사 에스이웍스 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
EP3057019A1 (en) * 2015-02-13 2016-08-17 Thomson Licensing Method and device for protecting an application and method and device for executing a protected application thus protected
KR101740134B1 (ko) 2015-08-10 2017-05-26 라인 가부시키가이샤 어플리케이션의 코드 난독화를 위한 시스템 및 방법
US9992818B2 (en) * 2015-10-06 2018-06-05 Medtronic Minimed, Inc. Protocol translation device
CN107292131A (zh) * 2017-06-21 2017-10-24 北京深思数盾科技股份有限公司 软件保护方法和装置
EP3467691B1 (en) * 2017-10-05 2020-08-26 Eshard Method of selecting software files
CN109409037B (zh) * 2018-09-29 2022-04-29 创新先进技术有限公司 一种数据混淆规则的生成方法、装置及设备
KR102803025B1 (ko) * 2020-06-11 2025-05-07 라인플러스 주식회사 클래스 분산 및 순차적 메모리 적재를 이용한 파일 보호 방법 및 시스템
JP7734510B2 (ja) * 2021-05-14 2025-09-05 株式会社デンソーテン 画像処理装置、画像処理システム及び画像処理プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006072584A (ja) * 2004-08-31 2006-03-16 Fuji Xerox Co Ltd 実行プログラム生成装置、実行プログラム生成方法、プログラム処理装置、プログラム処理方法及びプログラム
JP2006164184A (ja) * 2004-12-10 2006-06-22 Ntt Docomo Inc プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
KR101265099B1 (ko) * 2011-06-15 2013-05-20 주식회사 터보테크 소프트웨어 보안 처리방법 및 기록매체

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6643775B1 (en) * 1997-12-05 2003-11-04 Jamama, Llc Use of code obfuscation to inhibit generation of non-use-restricted versions of copy protected software applications
GB0024918D0 (en) * 2000-10-11 2000-11-22 Sealedmedia Ltd Method of providing java tamperproofing
US7150003B2 (en) * 2002-11-25 2006-12-12 Matsushita Electric Industrial Co., Ltd. Class coalescence for obfuscation of object-oriented software
US7148154B2 (en) 2003-08-20 2006-12-12 Asm Japan K.K. Method of forming silicon-containing insulation film having low dielectric constant and low film stress
JP2007233426A (ja) * 2004-04-05 2007-09-13 Matsushita Electric Ind Co Ltd アプリケーション実行装置
US8200983B1 (en) * 2006-09-09 2012-06-12 9Rays.Net, Inc. System and method for tamper-proofing executable binary assemblies
WO2011057393A1 (en) * 2009-11-13 2011-05-19 Irdeto Canada Corporation System and method to protect java bytecode code against static and dynamic attacks within hostile execution environments
KR101234591B1 (ko) 2011-05-13 2013-02-19 주식회사 인프라웨어테크놀러지 Jni를 이용한 안드로이드 난독화 방법
KR101944010B1 (ko) * 2012-02-24 2019-01-30 삼성전자 주식회사 애플리케이션의 변조 감지 방법 및 장치
US8892876B1 (en) * 2012-04-20 2014-11-18 Trend Micro Incorporated Secured application package files for mobile computing devices
US9501382B2 (en) * 2013-06-25 2016-11-22 Purdue Research Foundation Systems and methods of detecting power bugs
RU2653985C2 (ru) * 2013-06-28 2018-05-15 Закрытое акционерное общество "Лаборатория Касперского" Способ и система обнаружения вредоносного программного обеспечения путем контроля исполнения программного обеспечения запущенного по сценарию

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006072584A (ja) * 2004-08-31 2006-03-16 Fuji Xerox Co Ltd 実行プログラム生成装置、実行プログラム生成方法、プログラム処理装置、プログラム処理方法及びプログラム
JP2006164184A (ja) * 2004-12-10 2006-06-22 Ntt Docomo Inc プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
KR101265099B1 (ko) * 2011-06-15 2013-05-20 주식회사 터보테크 소프트웨어 보안 처리방법 및 기록매체

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101566145B1 (ko) 2014-10-23 2015-11-06 숭실대학교산학협력단 모바일 기기 및 상기 모바일 기기의 동작 방법
NO20141445A1 (no) * 2014-12-01 2016-06-02 Protectoria As Sikring av applikasjoner installert i lokalt endepunktutstyr
WO2016096139A1 (de) * 2014-12-18 2016-06-23 Giesecke & Devrient Gmbh Verfahren zum bereitstellen einer sicherheitskritischen softwareapplikation auf einer computereinheit
WO2016104918A1 (ko) * 2014-12-24 2016-06-30 고려대학교 산학협력단 코드 변환 방법 및 코드 변환 장치
KR101628923B1 (ko) * 2014-12-24 2016-06-22 고려대학교 산학협력단 코드 변환 방법 및 코드 변환 장치
WO2016111413A1 (ko) * 2015-01-08 2016-07-14 숭실대학교 산학협력단 분간이 난해한 식별자 변환을 이용한 코드 난독화 장치 및 방법
KR101710796B1 (ko) * 2015-08-24 2017-02-28 숭실대학교산학협력단 난독화된 모바일 애플리케이션의 식별자 역난독화 장치 및 그 방법
KR101619458B1 (ko) 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법
WO2017150769A1 (ko) * 2016-03-02 2017-09-08 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법
KR101704703B1 (ko) * 2016-06-08 2017-02-08 (주)케이사인 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
KR101845155B1 (ko) 2016-06-30 2018-04-03 라인 가부시키가이샤 어플리케이션 패키지를 제공하는 방법 및 시스템, 그리고 어플리케이션을 실행하는 방법 및 시스템
WO2018012693A1 (ko) * 2016-07-11 2018-01-18 (주)케이사인 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
KR20240050511A (ko) 2022-10-11 2024-04-19 라온시큐어(주) 코드 가상화 시스템 및 방법
KR20240050513A (ko) 2022-10-11 2024-04-19 라온시큐어(주) 코드 가상화 시스템 및 방법
KR20240050512A (ko) 2022-10-11 2024-04-19 라온시큐어(주) 코드 가상화 시스템 및 방법

Also Published As

Publication number Publication date
EP2897072A4 (en) 2016-11-09
EP2897072A1 (en) 2015-07-22
JP2016503541A (ja) 2016-02-04
WO2015023023A1 (ko) 2015-02-19
JP5996809B2 (ja) 2016-09-21
US20150095656A1 (en) 2015-04-02
US8984299B1 (en) 2015-03-17
EP2897072B1 (en) 2019-07-17

Similar Documents

Publication Publication Date Title
KR101350390B1 (ko) 코드 난독화 장치 및 그 방법
KR101328012B1 (ko) 애플리케이션 코드 난독화 장치 및 그 방법
KR101490047B1 (ko) 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
CN111177749B (zh) 加密源代码文件处理方法、装置、计算机设备和存储介质
CN104318135B (zh) 一种基于可信执行环境的Java代码安全动态载入方法
US20170024230A1 (en) Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine
CN104298932A (zh) 一种so文件的调用方法及装置
CN104268444A (zh) 一种云OS Java源代码保护方法
CN107430650B (zh) 保护计算机程序以抵御逆向工程
CN102576391A (zh) 嵌入在shell代码中的软件许可
CN110138818B (zh) 传递参数的方法、网站应用、系统、装置以及服务后端
CN112613037B (zh) 一种代码校验方法及装置
CN112100582A (zh) 一种应用强对称加密保护软件分发安全的方法
Lim et al. Structural analysis of packing schemes for extracting hidden codes in mobile malware
Sun et al. Selwasm: A code protection mechanism for webassembly
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
KR101557455B1 (ko) 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법
KR20140139392A (ko) 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치
CN114943062A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
KR101667774B1 (ko) 스크립트 프로그램을 위한 보안 제공 장치 및 방법
Groß et al. Protecting JavaScript apps from code analysis
KR102177920B1 (ko) 원본코드 패킹장치 및 원본코드 패킹방법
Xu et al. Recommendable Schemes of Anti-decompilation for Android Applications
Chen et al. Mobile application reinforcement method based on control flow and data flow confusion

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20130814

PA0201 Request for examination
A302 Request for accelerated examination
PA0302 Request for accelerated examination

Patent event date: 20130816

Patent event code: PA03022R01D

Comment text: Request for Accelerated Examination

Patent event date: 20130814

Patent event code: PA03021R01I

Comment text: Patent Application

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20130911

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20131213

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20140106

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20140107

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20170102

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20180102

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20180102

Start annual number: 5

End annual number: 5

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 6

PR1001 Payment of annual fee

Payment date: 20190107

Start annual number: 6

End annual number: 6

FPAY Annual fee payment

Payment date: 20200106

Year of fee payment: 7

PR1001 Payment of annual fee

Payment date: 20200106

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20210104

Start annual number: 8

End annual number: 8

PR1001 Payment of annual fee

Payment date: 20221215

Start annual number: 10

End annual number: 10

PR1001 Payment of annual fee

Payment date: 20231207

Start annual number: 11

End annual number: 11