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

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

Info

Publication number
WO2015023023A1
WO2015023023A1 PCT/KR2013/008744 KR2013008744W WO2015023023A1 WO 2015023023 A1 WO2015023023 A1 WO 2015023023A1 KR 2013008744 W KR2013008744 W KR 2013008744W WO 2015023023 A1 WO2015023023 A1 WO 2015023023A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
native
general
obfuscated
self
Prior art date
Application number
PCT/KR2013/008744
Other languages
English (en)
French (fr)
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 EP13891571.5A priority Critical patent/EP2897072B1/en
Priority to JP2015542937A priority patent/JP5996809B2/ja
Priority to US14/360,306 priority patent/US8984299B1/en
Publication of WO2015023023A1 publication Critical patent/WO2015023023A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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

Abstract

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

Description

코드 난독화 장치 및 그 방법
본 발명은 코드 난독화 장치 및 그 방법에 관한 것으로서, 더욱 상세하게는 안드로이드 애플리케이션의 위변조 방지를 위한 자가변환 기반의 난독화 장치 및 그 방법에 관한 것이다.
기존의 난독화 장치 및 그 방법은, 자바 가상 머신에서 동작하는 애플리케이션을 대상으로 애플리케이션을 구성하는 코드 구조를 변경함으로써 난독화를 적용한다. 여기서 난독화가 적용된 애플리케이션은 난독화 적용 전과 동일하게 자바 가상 머신에서 동작하는 명령어 집합과 목적파일 구조로 구성된다.
하지만, 기존의 난독화 장치 또는 방법에 의하는 경우, 가상 머신에서 동작하는 관리되는 코드(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)로 변환함으로써, 관리되는 코드의 역공학 취약성 중의 하나인 구조화된 코드 정보를 제거하여 상대적으로 역공학을 난해하게 만들어 역공학을 방지할 수 있다.
또한, 네이티브 코드로 변환된 중요 코드를 보호하기 위해서 자가변환 기반의 코드 보호 기법과 위변조 탐지 기술을 적용함으로써 역공학 분석에 대한 저항성을 향상시킨다.
이제까지 본 발명에 대하여 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 따라서 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허청구범위에 기재된 내용 및 그와 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.

Claims (10)

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

Priority Applications (3)

Application Number Priority Date Filing Date Title
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 コード難読化装置及びその方法
US14/360,306 US8984299B1 (en) 2013-08-14 2013-09-30 Apparatus for code obfuscation and method thereof

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO2015023023A1 true WO2015023023A1 (ko) 2015-02-19

Family

ID=50145291

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2013/008744 WO2015023023A1 (ko) 2013-08-14 2013-09-30 코드 난독화 장치 및 그 방법

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)

Families Citing this family (23)

* 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
KR101566145B1 (ko) 2014-10-23 2015-11-06 숭실대학교산학협력단 모바일 기기 및 상기 모바일 기기의 동작 방법
KR101518420B1 (ko) * 2014-11-11 2015-05-07 주식회사 에스이웍스 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
NO20141445A1 (no) * 2014-12-01 2016-06-02 Protectoria As Sikring av applikasjoner installert i lokalt endepunktutstyr
DE102014019090A1 (de) * 2014-12-18 2016-06-23 Giesecke & Devrient Gmbh Verfahren zum Bereitstellen einer sicherheitskritischen Softwareapplikation auf einer Computereinheit
KR101628923B1 (ko) * 2014-12-24 2016-06-22 고려대학교 산학협력단 코드 변환 방법 및 코드 변환 장치
KR101521765B1 (ko) * 2015-01-08 2015-05-20 숭실대학교산학협력단 분간이 난해한 식별자 변환을 이용한 코드 난독화 장치 및 방법
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 라인 가부시키가이샤 어플리케이션의 코드 난독화를 위한 시스템 및 방법
KR101710796B1 (ko) * 2015-08-24 2017-02-28 숭실대학교산학협력단 난독화된 모바일 애플리케이션의 식별자 역난독화 장치 및 그 방법
US9992818B2 (en) * 2015-10-06 2018-06-05 Medtronic Minimed, Inc. Protocol translation device
KR101619458B1 (ko) 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법
KR101704703B1 (ko) * 2016-06-08 2017-02-08 (주)케이사인 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
KR101845155B1 (ko) 2016-06-30 2018-04-03 라인 가부시키가이샤 어플리케이션 패키지를 제공하는 방법 및 시스템, 그리고 어플리케이션을 실행하는 방법 및 시스템
KR101688814B1 (ko) * 2016-07-11 2016-12-22 (주)케이사인 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
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 创新先进技术有限公司 一种数据混淆规则的生成方法、装置及设备
KR20210154017A (ko) * 2020-06-11 2021-12-20 라인플러스 주식회사 클래스 분산 및 순차적 메모리 적재를 이용한 파일 보호 방법 및 시스템
JP2022175938A (ja) * 2021-05-14 2022-11-25 株式会社デンソーテン 画像処理装置、画像処理方法及び画像処理プログラム

Citations (4)

* 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 プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
KR101234591B1 (ko) 2011-05-13 2013-02-19 주식회사 인프라웨어테크놀러지 Jni를 이용한 안드로이드 난독화 방법
KR101265099B1 (ko) * 2011-06-15 2013-05-20 주식회사 터보테크 소프트웨어 보안 처리방법 및 기록매체

Family Cites Families (11)

* 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
CN102598017B (zh) * 2009-11-13 2016-03-09 爱迪德技术有限公司 提高Java字节码的防窜改能力的系统和方法
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 (4)

* 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 プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法
KR101234591B1 (ko) 2011-05-13 2013-02-19 주식회사 인프라웨어테크놀러지 Jni를 이용한 안드로이드 난독화 방법
KR101265099B1 (ko) * 2011-06-15 2013-05-20 주식회사 터보테크 소프트웨어 보안 처리방법 및 기록매체

Also Published As

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

Similar Documents

Publication Publication Date Title
WO2015023023A1 (ko) 코드 난독화 장치 및 그 방법
KR101490047B1 (ko) 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
CN106778103B (zh) 一种安卓应用程序防逆向破解的加固方法、系统及解密方法
US10089464B2 (en) De-obfuscating scripted language for network intrusion detection using a regular expression signature
KR101328012B1 (ko) 애플리케이션 코드 난독화 장치 및 그 방법
WO2015026091A1 (ko) 공통 중간 언어 기반 프로그램을 위한 보안 제공 방법
KR101521765B1 (ko) 분간이 난해한 식별자 변환을 이용한 코드 난독화 장치 및 방법
CN107408072B (zh) 用于随机化指令的方法、介质和装置
CN107430650B (zh) 保护计算机程序以抵御逆向工程
CN105608391B (zh) 多elf文件保护方法及系统
CN108399319B (zh) 源代码保护方法、应用服务器及计算机可读存储介质
Shioji et al. Code shredding: byte-granular randomization of program layout for detecting code-reuse attacks
KR20140004819A (ko) 안드로이드 난독화 기법을 이용한 어플리케이션 위변조 탐지 방법
Lim et al. Structural analysis of packing schemes for extracting hidden codes in mobile malware
Cho et al. DexMonitor: dynamically analyzing and monitoring obfuscated Android applications
WO2015093671A1 (ko) Arm 프로세서 기반의 파일 난독화 방법
KR20090084529A (ko) 악성 스크립트 코드 복호화 방법 및 시스템
Sun et al. Selwasm: A code protection mechanism for webassembly
KR102358101B1 (ko) 프로그램 보안 적용방법
CN108259182B (zh) 一种Android应用重打包检测方法及装置
CN112800416A (zh) 一种用于调用链的安全防护系统及方法
Park et al. Multi-partitioned bytecode wrapping scheme for minimizing code exposure on android
Jung et al. AVPASS: automatically bypassing android malware detection system
Xu et al. Recommendable Schemes of Anti-decompilation for Android Applications
Feng et al. The research on security reinforcement of Android applications

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 14360306

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13891571

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2013891571

Country of ref document: EP

ENP Entry into the national phase

Ref document number: 2015542937

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE