WO2017213320A1 - 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법 - Google Patents

더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법 Download PDF

Info

Publication number
WO2017213320A1
WO2017213320A1 PCT/KR2017/000056 KR2017000056W WO2017213320A1 WO 2017213320 A1 WO2017213320 A1 WO 2017213320A1 KR 2017000056 W KR2017000056 W KR 2017000056W WO 2017213320 A1 WO2017213320 A1 WO 2017213320A1
Authority
WO
WIPO (PCT)
Prior art keywords
code
important
dummy
memory
generating
Prior art date
Application number
PCT/KR2017/000056
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 (주)케이사인
Publication of WO2017213320A1 publication Critical patent/WO2017213320A1/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/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/007Encryption, En-/decode, En-/decipher, En-/decypher, Scramble, (De-)compress
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code

Abstract

애플리케이션 코드 은닉 장치는 애플리케이션 코드를 중요코드 및 중요코드 이외의 일반코드로 분리하는 중요코드 분리부, 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 중요코드 호출기 생성부, 중요코드를 분석하는 코드 분석부, 중요코드에 대응하는 더미코드를 생성하는 더미코드 생성부, 중요코드를 암호화하는 코드 암호화부, 더미코드 및 암호화된 중요코드를 배치시키고, 더미코드 및 암호화된 중요코드의 위치 정보를 생성하는 코드 배치부, 암호화된 중요코드를 복호화하기 위한 코드 복호화기를 생성하는 코드 복호화기 생성부, 복호화된 중요코드 및 더미코드를 메모리에 적재하는 로더를 생성하는 로더 생성부, 메모리에 적재된 복호화된 중요코드를 호출하기 위한 복호화된 코드 호출기를 생성하는 복호화된 코드 호출기 생성부 및 복호화된 중요코드의 실행 과정에서, 더미코드 및 실행된 중요코드를 메모리에서 해제하는 언로더를 생성하는 언로더 생성부를 포함한다.

Description

더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
본 발명은 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법에 관한 것으로, 보다 구체적으로 역공학 저항성을 향상시킨 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법에 관한 것이다.
애플리케이션 코드 난독화 기술은 소프트웨어를 보호하기 위한 기술 중 하나로써, 프로그램을 분석하기 어렵게 만들어 공격자가 프로그램의 핵심 알고리즘을 알아내거나 위변조하는 것을 방해하는 기술이다.
패킹 기술은 애플리케이션 코드 난독화와 유사하게 프로그램의 코드를 보호하는 기술이며, 패킹된 코드의 원래 내용은 정적으로 분석되는 것이 사실 상 불가능하게 된다.
종래의 패킹 방식에서는, 원본 애플리케이션 전체가 패킹되고 이를 언패킹하는 새로운 애플리케이션으로 대체된다. 따라서, 공격자가 해당 애플리케이션의 패킹 여부를 쉽게 파악할 수 있으며, 한번 적재된 원본 코드는 실행이 끝날 때까지 유지되기 때문에, 한 번의 메모리 덤프에 무력화되기 쉽다.
본 발명은 종래 애플리케이션 코드 은닉 장치 및 그 방법이 가지는 문제점들을 해결하기 위한 것으로, 본 발명이 이루고자 하는 목적은 상기 애플리케이션 코드를 일반코드 및 중요코드로 분리하고, 상기 중요코드만을 패킹하여 패킹 단위의 크기를 줄이고, 상기 중요코드를 메모리에 적재하여 실행한 후 더미코드를 이용하여 상기 중요코드를 대체하여 역공학 저항성을 향상시킨 애플리케이션 코드 은닉 장치를 제공하는 것이다.
본 발명이 이루고자 하는 다른 목적은 상기 애플리케이션 코드 은닉 장치를 이용하는 애플리케이션 코드 은닉 방법을 제공하는 것이다.
상기한 본 발명의 목적을 실현하기 위한 일 실시예에 따른 더미코드를 사용하는 애플리케이션 코드 은닉 장치는 중요코드 분리부, 중요코드 호출기 생성부, 코드 분석부, 더미코드 생성부, 코드 암호화부, 코드 배치부, 코드 복호화기 생성부, 로더 생성부, 복호화된 코드 호출기 생성부 및 언로더 생성부를 포함한다. 상기 중요코드 분리부는 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리한다. 상기 중요코드 호출기 생성부는 상기 중요코드를 호출하기 위한 중요코드 호출기를 생성한다. 상기 코드 분석부는 상기 중요코드를 분석한다. 상기 더미코드 생성부는 상기 중요코드에 대응하는 더미코드를 생성한다. 상기 코드 암호화부는 상기 중요코드를 암호화한다. 상기 코드 배치부는 상기 더미코드 및 상기 암호화된 중요코드를 배치시키고, 상기 더미코드 및 상기 암호화된 중요코드의 위치 정보를 생성한다. 상기 코드 복호화기 생성부는 상기 암호화된 중요코드를 복호화하기 위한 코드 복호화기를 생성한다. 상기 로더 생성부는 상기 복호화된 중요코드 및 상기 더미코드를 메모리에 적재하는 로더를 생성한다. 상기 복호화된 코드 호출기 생성부는 상기 메모리에 적재된 상기 복호화된 중요코드를 호출하기 위한 복호화된 코드 호출기를 생성한다. 상기 언로더 생성부는 상기 복호화된 중요코드의 실행 과정에서 상기 더미코드 및 상기 실행된 중요코드를 상기 메모리에서 해제하는 언로더를 생성한다.
본 발명의 일 실시예에 있어서, 상기 코드 분석부는 상기 중요코드를 복수의 서브 중요코드로 분리할 수 있다.
본 발명의 일 실시예에 있어서, 상기 더미코드 생성부는 상기 분리된 서브 중요코드에 대응하는 복수의 분리된 서브 더미코드를 생성할 수 있다.
본 발명의 일 실시예에 있어서, 상기 코드 분석부는 상기 중요코드를 클래스 단위의 복수의 서브 중요코드로 분리할 수 있다.
본 발명의 일 실시예에 있어서, 상기 더미코드는 상기 중요코드와 동일한 시그니쳐를 갖고, 상기 중요코드와 상이한 오퍼레이션 코드를 가질 수 있다.
본 발명의 일 실시예에 있어서, 상기 코드 복호화기 생성부에 의해 생성되는 상기 코드 복호화기, 상기 로더 생성부에 의해 생성되는 상기 로더, 상기 복호화된 코드 호출기 생성부에 의해 생성되는 상기 복호화된 코드 호출기 및 상기 언로더 생성부에 의해 생성되는 상기 언로더는 네이티브 코드 영역에 배치될 수 있다.
본 발명의 일 실시예에 있어서, 상기 일반코드 및 상기 중요코드 호출기는 바이트 코드 영역에 배치될 수 있다.
본 발명의 일 실시예에 있어서, 상기 암호화된 중요코드 및 상기 더미코드는 상기 네이티브 코드 영역, 상기 바이트 코드 영역, 애플리케이션 데이터 영역의 리소스(RESOURCES) 영역 및 상기 애플리케이션 데이터 영역의 애셋(ASSETS) 영역 중 하나에 배치될 수 있다.
본 발명의 일 실시예에 있어서, 상기 암호화된 중요코드 및 상기 더미코드는 상기 네이티브 코드 영역, 상기 바이트 코드 영역, 상기 애플리케이션 데이터 영역의 상기 리소스(resources) 영역 및 상기 애플리케이션 데이터 영역의 상기 애셋(assets) 영역에서 서로 다른 영역에 배치될 수 있다.
본 발명의 일 실시예에 있어서, 상기 코드 배치부는 상기 암호화된 중요코드의 제1 위치 및 상기 더미코드의 제2 위치를 상기 로더 생성부에 전달할 수 있다.
본 발명의 일 실시예에 있어서, 상기 일반코드의 실행 중에 상기 중요코드 호출기는 상기 중요코드를 호출하고, 상기 중요코드가 호출되면 상기 코드 복호화기는 상기 암호화된 중요코드를 복호화하여 상기 로더에 전달하며, 상기 언로더는 상기 중요코드의 실행 전에 상기 메모리에 상기 더미코드가 존재하는 경우 상기 더미코드를 상기 메모리로부터 해제하고, 상기 로더는 상기 복호화된 중요코드를 상기 메모리에 적재하며, 상기 복호화된 코드 호출기는 상기 메모리에 적재된 상기 중요코드가 실행되도록 하고 상기 중요코드의 실행 결과를 보관할 수 있다.
본 발명의 일 실시예에 있어서, 상기 중요코드가 실행된 후 상기 언로더는 상기 메모리에 적재된 상기 중요코드를 상기 메모리에서 해제하고, 상기 로더는 상기 중요코드에 대응하는 상기 더미코드를 상기 메모리에 적재하며, 상기 복호화된 코드 호출기가 보관하던 상기 중요코드의 상기 실행 결과를 상기 일반코드로 전달할 수 있다.
상기한 본 발명의 다른 목적을 실현하기 위한 일 실시예에 따른 애플리케이션 코드 은닉 방법은 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리하는 단계, 상기 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 단계, 상기 중요코드를 분석하는 단계, 상기 중요코드에 대응하는 더미코드를 생성하는 단계, 상기 중요코드를 암호화하는 단계, 상기 더미코드 및 상기 암호화된 중요코드를 배치시키고, 상기 더미코드 및 상기 암호화된 중요코드의 위치 정보를 생성하는 단계, 상기 암호화된 중요코드를 복호화하기 위한 코드 복호화기를 생성하는 단계, 상기 복호화된 중요코드 및 상기 더미코드를 메모리에 적재하는 로더를 생성하는 단계, 상기 메모리에 적재된 상기 복호화된 중요코드를 호출하기 위한 복호화된 코드 호출기를 생성하는 단계 및 상기 복호화된 중요코드의 실행 과정에서, 상기 더미코드 및 상기 실행된 중요코드를 상기 메모리에서 해제하는 언로더를 생성하는 단계를 포함한다.
본 발명의 일 실시예에 있어서, 상기 중요코드를 분석하는 단계는 상기 중요코드를 복수의 서브 중요코드로 분리할 수 있다.
본 발명의 일 실시예에 있어서, 상기 더미코드를 생성하는 단계는 상기 분리된 서브 중요코드에 대응하는 복수의 분리된 서브 더미코드를 생성할 수 있다.
본 발명의 일 실시예에 있어서, 상기 애플리케이션 코드 은닉 방법은 상기 일반코드의 실행 중에 상기 중요코드 호출기는 상기 중요코드를 호출하는 단계, 상기 중요코드가 호출되면 상기 코드 복호화기는 상기 암호화된 중요코드를 복호화하여 상기 로더에 전달하는 단계, 상기 중요코드의 실행 전에 상기 메모리에 상기 더미코드가 존재하는 경우 상기 언로더는 상기 더미코드를 상기 메모리로부터 해제하는 단계, 상기 로더는 상기 복호화된 중요코드를 상기 메모리에 적재하는 단계 및 상기 복호화된 코드 호출기는 상기 메모리에 적재된 상기 중요코드가 실행되도록 하며 상기 중요코드의 실행 결과를 보관하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 있어서, 상기 애플리케이션 코드 은닉 방법은 상기 중요코드가 실행된 후 상기 언로더는 상기 메모리에 적재된 상기 중요코드를 상기 메모리에서 해제하는 단계, 상기 로더는 상기 중요코드에 대응하는 상기 더미코드를 상기 메모리에 적재하는 단계 및 상기 복호화된 코드 호출기가 보관하던 상기 중요코드의 상기 실행 결과를 상기 일반코드로 전달하는 단계를 더 포함할 수 있다.
본 발명에 따른 애플리케이션 코드 은닉 장치 및 이를 이용하는 애플리케이션 코드 은닉 방법은 애플리케이션 코드를 일반코드 및 중요코드로 분리하므로, 상기 애플리케이션 코드의 패킹의 단위를 줄여 애플리케이션 코드가 패킹된 것인지 아닌지에 대한 판단을 어렵게 할 수 있다.
또한, 상기 중요코드 및 더미코드를 모바일 장치의 내부 또는 외부의 다양한 영역에 은닉하므로, 정적 분석 저항성을 향상시킬 수 있다.
또한, 중요코드를 메모리에 적재하여 실행한 후 그에 대응하는 더미코드를 이용하여 상기 중요코드를 대체하므로 메모리 덤프에 의한 원본 코드 획득을 어렵게 한다. 따라서, 애플리케이션 코드의 동적 분석 저항성을 크게 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 코드 은닉 장치를 나타내는 블록도이다.
도 2는 도 1의 애플리케이션 코드 은닉 장치의 동작을 나타내는 개념도이다.
도 3은 도 2의 코드 배치부의 동작의 일 예를 나타내는 개념도이다.
도 4는 도 2의 코드 배치부의 동작의 다른 예를 나타내는 개념도이다.
도 5는 도 1의 애플리케이션 코드 은닉 장치에 의해 수행되는 중요코드의 로딩 및 실행 과정을 나타내는 개념도이다.
도 6은 도 1의 애플리케이션 코드 은닉 장치에 의해 수행되는 중요코드의 언로딩 및 더미코드 대체 과정을 나타내는 개념도이다.
본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로 사용될 수 있다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미이다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미인 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
한편, 어떤 실시예가 달리 구현 가능한 경우에 특정 블록 내에 명기된 기능 또는 동작이 순서도에 명기된 순서와 다르게 일어날 수도 있다. 예를 들어, 연속하는 두 블록이 실제로는 실질적으로 동시에 수행될 수도 있고, 관련된 기능 또는 동작에 따라서는 상기 블록들이 거꾸로 수행될 수도 있다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 코드 은닉 장치를 나타내는 블록도이다. 도 2는 도 1의 애플리케이션 코드 은닉 장치의 동작을 나타내는 개념도이다.
도 1 및 도 2를 참조하면, 상기 애플리케이션 코드 은닉 장치는 중요코드 분리부(100), 중요코드 호출기 생성부(200), 코드 분석부(300), 복호화된 코드 호출기 생성부(400), 코드 암호화부(500), 더미코드 생성부(600), 코드 배치부(700), 코드 복호화기 생성부(800), 로더 생성부(900) 및 언로더 생성부(950)를 포함한다.
상기 중요코드 분리부(100)는 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리한다.
상기 중요코드 분리부(100)는 애플리케이션 코드를 입력 받는다. 예를 들어, 상기 중요코드 분리부(100)는 제1 형식의 애플리케이션 코드를 입력 받는다. 예를 들어, 상기 제1 형식은 바이트 코드(Byte Code)일 수 있다. 상기 애플리케이션 코드는 자바 코드(JAVA)일 수 있다. 예를 들어, 상기 애플리케이션 코드는 달빅 실행 코드(Dalvik Executable, .dex)일 수 있다.
상기 중요코드 분리부(100)는 상기 애플리케이션 코드를 중요코드(70) 및 상기 중요코드(70) 이외의 일반코드(10)로 분리한다. 예를 들어, 상기 중요코드(70)는 애플리케이션의 위변조 공격으로부터 보호될 필요가 있는 코드를 의미할 수 있다. 상기 일반코드(10)는 바이트 코드 영역(A1)에 배치된다.
상기 중요코드 호출기 생성부(200)는 상기 중요코드(70)를 호출하기 위한 중요코드 호출기(20)를 생성한다.
예를 들어, 상기 중요코드 호출기(20)는 상기 중요코드(70)의 시그니쳐를 이용하여 상기 중요코드(70)를 호출할 수 있다. 예를 들어, 상기 중요코드(70)의 시그니쳐는 함수의 파라미터 정보일 수 있다.
예를 들어, 중요코드(70)에 해당하는 A함수를 호출하기 위해 사용되는 파라미터가 (integer, integer)인 경우, 상기 중요코드(70)의 시그니쳐는 상기 (integer, integer)를 기초로 생성될 수 있다. 예를 들어, 중요코드(70)에 해당하는 B함수를 호출하기 위해 사용되는 파라미터가 (text, text, integer)인 경우, 상기 중요코드(70)의 시그니쳐는 상기 (text, text, integer)를 기초로 생성될 수 있다. 이와는 달리, 상기 중요코드(70)의 시그니쳐는 상기 함수의 파라미터 정보가 아닌 다른 정보를 이용하여 생성될 수 있다.
상기 중요코드 호출기 생성부(200)에 의해 생성된 상기 중요코드 호출기(20)는 상기 바이트 코드 영역(A1)에 배치된다. 상기 중요코드 호출기(20)는 상기 중요코드(70)의 시그니쳐를 이용하여 메모리에 적재되는 중요코드(70)를 호출하게 된다.
상기 코드 분석부(300)는 상기 중요코드(70)를 분석한다. 상기 코드 분석부(300)는 상기 중요코드(70)를 분석하여 상기 중요코드(70)의 보호 방식을 결정할 수 있다.
상기 코드 분석부(300)는 상기 중요코드(70)의 보호 방식에 대한 정보를 상기 복호화된 코드 호출기 생성부(400), 상기 코드 암호화부(500) 및 상기 더미코드 생성부(600)에 출력할 수 있다.
상기 더미코드 생성부(600)는 상기 중요코드(70)에 대응하는 더미코드(80)를 생성한다. 상기 더미코드(80)는 상기 중요코드(70)를 대체할 때, 상기 애플리케이션의 실행에 오류를 일으키지 않는 코드일 수 있다.
예를 들어, 상기 더미코드(80)는 상기 중요코드(70)와 동일한 시그니쳐를 갖고, 상기 중요코드(70)와 상이한 오퍼레이션 코드를 가질 수 있다. 상기 더미코드(80)가 상기 중요코드(70)와 동일한 시그니쳐를 갖고, 상기 중요코드(70)와 상이한 오퍼레이션 코드를 갖는 경우, 공격자는 애플리케이션이 상기 중요코드(70)의 시그니쳐와 상기 더미코드(80)의 시그니쳐가 동일하기 때문에 상기 중요코드(70)를 분석하고 있다고 생각하지만 실제로는 다른 내용의 코드를 분석하게 되어 공격자의 분석을 방해하고 지연시킬 수 있다.
이와는 달리, 상기 더미코드(80)는 상기 중요코드(70)와 다른 시그니쳐를 가질 수 있다.
예를 들어, 상기 코드 분석부(300)는 상기 중요코드(70)를 복수의 서브 중요코드로 분리할 수 있다. 예를 들어, 상기 코드 분석부(300)는 상기 중요코드(70)를 클래스 단위의 복수의 서브 중요코드로 분리할 수 있다. 예를 들어, 상기 코드 분석부(300)는 상기 중요코드(70)를 함수 단위의 복수의 서브 중요코드로 분리할 수 있다.
이 때, 상기 더미코드 생성부(600)는 상기 분리된 서브 중요코드에 대응하는 복수의 분리된 서브 더미코드를 생성할 수 있다. 예를 들어, 상기 서브 중요코드의 개수는 상기 서브 더미코드의 개수와 동일할 수 있다.
상기 코드 분석부(300)가 상기 중요코드(70)를 클래스 단위 또는 함수 단위로 분리하는 경우, 상기 패킹의 단위가 작아져 메모리에 적재되는 코드의 크기가 작아지고, 상기 중요코드(70)가 작은 단위로 적재 및 해제를 반복하면서 상기 애플리케이션의 중요코드(70)가 실행되어 동적 리버싱을 매우 어렵게 할 수 있다.
상기 코드 암호화부(500)는 상기 코드 분석부(300)로부터 상기 중요코드(70)의 보호 방식에 대한 정보를 수신한다. 상기 코드 암호화부(500)는 상기 중요코드(70)를 암호화한다. 상기 중요코드(70)의 상기 암호화로 인해 상기 애플리케이션 코드의 정적 분석 저항성이 증가한다.
상기 코드 배치부(700)는 상기 더미코드 생성부(600)로부터 상기 더미코드(80)를 수신하고, 상기 코드 암호화부(500)로부터 상기 암호화된 중요코드(75)를 수신한다.
상기 코드 배치부(700)는 상기 더미코드(80) 및 상기 암호화된 중요코드(75)를 배치시킨다. 상기 코드 배치부(700)는 상기 더미코드(80) 및 상기 암호화된 중요코드(75)의 위치 정보를 생성한다.
상기 코드 배치부(700)는 상기 더미코드(80) 및 상기 암호화된 중요코드(75)의 위치 정보를 상기 로더 생성부(900)에 출력한다. 예를 들어, 상기 코드 배치부(700)는 상기 암호화된 중요코드(75)의 제1 위치 및 상기 더미코드(80)의 제2 위치를 상기 로더 생성부(900)에 전달할 수 있다.
상기 코드 복호화기 생성부(800)는 상기 코드 암호화부(500)의 상기 중요코드(70)의 암호화 정보를 수신한다. 상기 코드 복호화기 생성부(800)는 상기 암호화된 중요코드(75)를 복호화하기 위한 코드 복호화기(40)를 생성한다.
상기 로더 생성부(900)는 상기 코드 배치부(700)로부터 상기 암호화된 중요코드(75)의 제1 위치 및 상기 더미코드(80)의 제2 위치를 수신한다. 상기 로더 생성부(900)는 상기 복호화된 중요코드(70) 및 상기 더미코드(80)를 메모리에 적재하는 로더(50)를 생성한다. 상기 로더(50)는 상기 코드 배치부(700)로부터 수신한 상기 제1 위치 및 상기 제2 위치를 기초로 상기 복호화된 중요코드(70) 및 상기 더미코드(80)를 상기 메모리에 적재할 수 있다.
상기 복호화된 코드 호출기 생성부(400)는 상기 메모리에 적재된 상기 복호화된 중요코드(70)를 호출하기 위한 복호화된 코드 호출기(30)를 생성한다.
상기 언로더 생성부(950)는 상기 복호화된 중요코드(70)의 실행 과정에서, 상기 더미코드(80) 및 상기 실행된 중요코드(70)를 상기 메모리에서 해제하는 언로더(60)를 생성한다.
예를 들어, 상기 일반코드(10) 및 상기 중요코드 호출기(20)는 바이트 코드 영역(A1)에 배치될 수 있다.
예를 들어, 상기 코드 복호화기 생성부(800)에 의해 생성되는 상기 코드 복호화기(40), 상기 로더 생성부(900)에 의해 생성되는 상기 로더(50), 상기 복호화된 코드 호출기 생성부(400)에 의해 생성되는 상기 복호화된 코드 호출기(30) 및 상기 언로더 생성부(950)에 의해 생성되는 상기 언로더(60)는 네이티브 코드 영역(A3)에 배치될 수 있다.
상기 애플리케이션 코드가 상기 애플리케이션 코드 은닉 장치에 입력되면, 상기 중요코드 분리부(100)는 상기 애플리케이션 코드를 상기 일반코드(10) 및 상기 중요코드(70)로 분리한다. 상기 중요코드 호출기 생성부(200)는 상기 분리된 중요코드(70)를 호출하기 위한 모듈을 생성한다.
상기 분리된 중요코드(70)는 상기 코드 분석부(300)에 입력되고, 상기 코드 분석부(300), 상기 코드 암호화부(500) 및 상기 더미코드 생성부(600)를 거치게 되며, 그 결과 상기 암호화된 중요코드(75) 및 상기 더미코드(80)가 생성된다.
상기 코드 배치부(700)는 상기 암호화된 중요코드(75) 및 상기 더미코드(80)를 여러 위치에 배치시킬 수 있다. 예를 들어, 상기 암호화된 중요코드(75) 및 상기 더미코드(80)는 상기 바이트 코드 영역(A1)의 제1 데이터 영역(DATA1)에 배치될 수 있다. 예를 들어, 상기 암호화된 중요코드(75) 및 상기 더미코드(80)는 상기 애플리케이션 데이터 영역(A2)의 애셋(ASSETS) 폴더에 배치될 수 있다. 예를 들어, 상기 암호화된 중요코드(75) 및 상기 더미코드(80)는 상기 애플리케이션 데이터 영역(A2)의 리소스(RESOURCES) 폴더에 배치될 수 있다. 예를 들어, 상기 암호화된 중요코드(75) 및 상기 더미코드(80)는 상기 네이티브 코드 영역(A3)의 제2 데이터 영역(DATA2)에 배치될 수 있다.
이 때, 상기 암호화된 중요코드(75) 및 상기 더미코드(80)는 동일한 영역 내에 배치될 수 있다. 이와는 달리, 상기 암호화된 중요코드(75) 및 상기 더미코드(80)는 서로 다른 영역 내에 배치될 수 있다.
도 3은 도 2의 코드 배치부(700)의 동작의 일 예를 나타내는 개념도이다.
도 3을 참조하면, 상기 암호화된 중요코드(75) 및 상기 더미코드(80)는 서로 다른 영역 내에 배치된 경우를 예시한다.
상기 코드 배치부(700)는 상기 암호화된 중요코드(75)는 상기 네이티브 코드 영역(A3)에 배치하였고, 상기 암호화된 중요코드(75)에 대응되는 상기 더미코드(80)는 상기 애플리케이션 데이터의 상기 애셋 폴더에 배치하였다.
도 4는 도 2의 코드 배치부(700)의 동작의 다른 예를 나타내는 개념도이다.
도 4를 참조하면, 상기 암호화된 중요코드(75A, 75B) 및 상기 더미코드(80A, 80B)는 서로 같은 영역 내에 배치되거나 서로 다른 영역 내에 배치된 경우를 예시한다.
상기 코드 배치부(700)는 암호화된 제1 중요코드(75A) 및 상기 암호화된 제1 중요코드(75A)에 대응하는 제1 더미코드(80A)는 동일한 영역에 배치하였다. 상기 코드 배치부(700)는 상기 암호화된 제1 중요코드(75A) 및 상기 제1 더미코드(80A)는 상기 네이티브 코드 영역(A3)에 배치하였다.
상기 코드 배치부(700)는 암호화된 제2 중요코드(75B) 및 상기 암호화된 제2 중요코드(75B)에 대응하는 제2 더미코드(80B)는 서로 다른 영역에 배치하였다. 상기 코드 배치부(700)는 상기 암호화된 제2 중요코드(75B)는 외부 서버에 배치하였고, 상기 제2 더미코드(80B)는 상기 애플리케이션 데이터의 리소스 폴더에 배치하였다.
이와 같이, 상기 코드 배치부(700)는 상기 애플리케이션 코드 은닉 방법이 수행되는 모바일 장치 내부 또는 상기 모바일 장치와 통신이 가능한 외부 장치의 다양한 영역에 상기 암호화된 중요코드 및 이에 대응하는 상기 더미코드를 은닉할 수 있다.
도 5는 도 1의 애플리케이션 코드 은닉 장치에 의해 수행되는 중요코드(70)의 로딩 및 실행 과정을 나타내는 개념도이다.
도 1 내지 도 5를 참조하면, 상기 일반코드(10)의 실행 중에 상기 중요코드 호출기(20)는 상기 중요코드(70)를 호출한다 (단계 S1).
상기 중요코드(70)가 호출되면 상기 코드 복호화기(40)는 상기 암호화된 중요코드(75)를 복호화하여 상기 로더(50)에 전달한다 (단계 S2).
상기 복호화된 중요코드(70)가 상기 메모리에 적재되기 전에 상기 메모리에 상기 더미코드(80)가 존재할 경우에 상기 언로더(60)가 상기 더미코드(80)를 상기 메모리로부터 해제한다 (단계 S3). 이와는 달리, 상기 복호화된 중요코드(70)가 상기 메모리에 적재되기 전에 상기 메모리에 상기 더미코드(80)가 존재하지 않는 경우에 상기 언로더(60)는 동작하지 않을 수 있다.
상기 로더(50)는 상기 복호화된 중요코드(70)를 상기 메모리에 적재한다 (단계 S4).
상기 복호화된 코드 호출기(30)는 상기 메모리에 적재된 상기 중요코드(70)가 실행되도록 하며 상기 중요코드(70)의 실행 결과를 보관한다 (단계 S5).
도 6은 도 1의 애플리케이션 코드 은닉 장치에 의해 수행되는 중요코드(70)의 언로딩 및 더미코드(80) 대체 과정을 나타내는 개념도이다.
상기 중요코드가 실행된 후 상기 언로더(60)는 상기 메모리에 적재된 상기 중요코드(70)를 상기 메모리에서 해제한다 (단계 S6).
상기 로더(50)는 상기 중요코드(70)에 대응하는 상기 더미코드(80)를 상기 메모리에 적재한다 (단계 S7).
상기 복호화된 코드 호출기(30)는 보관하고 있던 상기 중요코드(70)의 상기 실행 결과를 상기 일반코드(10)로 전달한다 (단계 S8).
본 실시예에 따르면, 실행 코드 전체를 대상으로 패킹 및 언패킹을 하는 대신 중요코드 또는 서브 중요코드 단위로 패킹 및 언패킹을 수행하므로, 상기 애플리케이션 코드가 패킹된 것인지 아닌지에 대한 판단을 어렵게 한다.
또한, 상기 중요코드 및 더미코드를 상기 모바일 장치의 내부 또는 외부의 다양한 영역에 은닉하므로, 정적 분석 저항성을 크게 향상시킬 수 있다.
또한, 중요코드 또는 서브 중요코드를 메모리에 적재하여 실행한 후 그에 대응하는 더미코드를 이용하여 상기 중요코드 또는 상기 서브 중요코드를 대체하므로 메모리 덤프에 의한 원본 코드 획득을 어렵게 한다. 따라서, 애플리케이션 코드의 동적 분석 저항성을 크게 향상시킬 수 있다.
본 발명은 애플리케이션 코드의 은닉을 수행하는 임의의 전자 장치에 적용될 수 있다. 상기 전자 장치는 휴대 전화, 스마트 폰, 노트북 컴퓨터, 태블릿 컴퓨터, 디지털 방송 단말, PDA, PMP, 네비게이션 장치 디지털 카메라, 캠코더, 디지털 TV, 셋-탑 박스, 음악 재생기, 휴대용 게임 콘솔, 스마트 카드, 프린터 등을 포함할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.
<부호의 설명>
10: 일반코드 20: 중요코드 호출기
30: 복호화된 코드 호출기 40: 코드 복호화기
50: 로더 60: 언로더
70: 중요코드 75: 암호화된 중요코드
80: 더미코드 100: 중요코드 분리부
200: 중요코드 호출기 생성부 300: 코드 분석부
400: 복호화된 코드 호출기 생성부 500: 코드 암호화부
600: 더미코드 생성부 700: 코드 배치부
800: 코드 복호화기 생성부 900: 로더 생성부
950: 언로더 생성부

Claims (17)

  1. 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리하는 중요코드 분리부;
    상기 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 중요코드 호출기 생성부;
    상기 중요코드를 분석하는 코드 분석부;
    상기 중요코드에 대응하는 더미코드를 생성하는 더미코드 생성부;
    상기 중요코드를 암호화하는 코드 암호화부;
    상기 더미코드 및 상기 암호화된 중요코드를 배치시키고, 상기 더미코드 및 상기 암호화된 중요코드의 위치 정보를 생성하는 코드 배치부;
    상기 암호화된 중요코드를 복호화하기 위한 코드 복호화기를 생성하는 코드 복호화기 생성부;
    상기 복호화된 중요코드 및 상기 더미코드를 메모리에 적재하는 로더를 생성하는 로더 생성부;
    상기 메모리에 적재된 상기 복호화된 중요코드를 호출하기 위한 복호화된 코드 호출기를 생성하는 복호화된 코드 호출기 생성부; 및
    상기 복호화된 중요코드의 실행 과정에서, 상기 더미코드 및 상기 실행된 중요코드를 상기 메모리에서 해제하는 언로더를 생성하는 언로더 생성부를 포함하는 더미 코드를 사용하는 애플리케이션 코드 은닉 장치.
  2. 제1항에 있어서, 상기 코드 분석부는 상기 중요코드를 복수의 서브 중요코드로 분리하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  3. 제2항에 있어서, 상기 더미코드 생성부는 상기 분리된 서브 중요코드에 대응하는 복수의 분리된 서브 더미코드를 생성하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  4. 제2항에 있어서, 상기 코드 분석부는 상기 중요코드를 클래스 단위의 복수의 서브 중요코드로 분리하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  5. 제1항에 있어서, 상기 더미코드는 상기 중요코드와 동일한 시그니쳐를 갖고, 상기 중요코드와 상이한 오퍼레이션 코드를 갖는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  6. 제1항에 있어서, 상기 코드 복호화기 생성부에 의해 생성되는 상기 코드 복호화기, 상기 로더 생성부에 의해 생성되는 상기 로더, 상기 복호화된 코드 호출기 생성부에 의해 생성되는 상기 복호화된 코드 호출기 및 상기 언로더 생성부에 의해 생성되는 상기 언로더는 네이티브 코드 영역에 배치되는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  7. 제6항에 있어서, 상기 일반코드 및 상기 중요코드 호출기는 바이트 코드 영역에 배치되는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  8. 제7항에 있어서, 상기 암호화된 중요코드 및 상기 더미코드는 상기 네이티브 코드 영역, 상기 바이트 코드 영역, 애플리케이션 데이터 영역의 리소스(resources) 영역 및 상기 애플리케이션 데이터 영역의 애셋(assets) 영역 중 하나에 배치되는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  9. 제8항에 있어서, 상기 암호화된 중요코드 및 상기 더미코드는 상기 네이티브 코드 영역, 상기 바이트 코드 영역, 상기 애플리케이션 데이터 영역의 상기 리소스(resources) 영역 및 상기 애플리케이션 데이터 영역의 상기 애셋(assets) 영역에서 서로 다른 영역에 배치되는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  10. 제7항에 있어서, 상기 코드 배치부는 상기 암호화된 중요코드의 제1 위치 및 상기 더미코드의 제2 위치를 상기 로더 생성부에 전달하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  11. 제1항에 있어서, 상기 일반코드의 실행 중에 상기 중요코드 호출기는 상기 중요코드를 호출하고, 상기 중요코드가 호출되면 상기 코드 복호화기는 상기 암호화된 중요코드를 복호화하여 상기 로더에 전달하며, 상기 언로더는 상기 중요코드의 실행 전에 상기 메모리에 상기 더미코드가 존재하는 경우 상기 더미코드를 상기 메모리로부터 해제하고, 상기 로더는 상기 복호화된 중요코드를 상기 메모리에 적재하며, 상기 복호화된 코드 호출기는 상기 메모리에 적재된 상기 중요코드가 실행되도록 하고 상기 중요코드의 실행 결과를 보관하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  12. 제11항에 있어서, 상기 중요코드가 실행된 후 상기 언로더는 상기 메모리에 적재된 상기 중요코드를 상기 메모리에서 해제하고, 상기 로더는 상기 중요코드에 대응하는 상기 더미코드를 상기 메모리에 적재하며, 상기 복호화된 코드 호출기가 보관하던 상기 중요코드의 상기 실행 결과를 상기 일반코드로 전달하는 것을 특징으로 하는 애플리케이션 코드 은닉 장치.
  13. 애플리케이션 코드를 중요코드 및 상기 중요코드 이외의 일반코드로 분리하는 단계;
    상기 중요코드를 호출하기 위한 중요코드 호출기를 생성하는 단계;
    상기 중요코드를 분석하는 단계;
    상기 중요코드에 대응하는 더미코드를 생성하는 단계;
    상기 중요코드를 암호화하는 단계;
    상기 더미코드 및 상기 암호화된 중요코드를 배치시키고, 상기 더미코드 및 상기 암호화된 중요코드의 위치 정보를 생성하는 단계;
    상기 암호화된 중요코드를 복호화하기 위한 코드 복호화기를 생성하는 단계;
    상기 복호화된 중요코드 및 상기 더미코드를 메모리에 적재하는 로더를 생성하는 단계;
    상기 메모리에 적재된 상기 복호화된 중요코드를 호출하기 위한 복호화된 코드 호출기를 생성하는 단계; 및
    상기 복호화된 중요코드의 실행 과정에서, 상기 더미코드 및 상기 실행된 중요코드를 상기 메모리에서 해제하는 언로더를 생성하는 단계를 포함하는 애플리케이션 코드 은닉 방법.
  14. 제13항에 있어서, 상기 중요코드를 분석하는 단계는 상기 중요코드를 복수의 서브 중요코드로 분리하는 것을 특징으로 하는 애플리케이션 코드 은닉 방법.
  15. 제14항에 있어서, 상기 더미코드를 생성하는 단계는 상기 분리된 서브 중요코드에 대응하는 복수의 분리된 서브 더미코드를 생성하는 것을 특징으로 하는 애플리케이션 코드 은닉 방법.
  16. 제13항에 있어서, 상기 일반코드의 실행 중에 상기 중요코드 호출기는 상기 중요코드를 호출하는 단계;
    상기 중요코드가 호출되면 상기 코드 복호화기는 상기 암호화된 중요코드를 복호화하여 상기 로더에 전달하는 단계;
    상기 중요코드의 실행 전에 상기 메모리에 상기 더미코드가 존재하는 경우 상기 언로더는 상기 더미코드를 상기 메모리로부터 해제하는 단계;
    상기 로더는 상기 복호화된 중요코드를 상기 메모리에 적재하는 단계; 및
    상기 복호화된 코드 호출기는 상기 메모리에 적재된 상기 중요코드가 실행되도록 하며 상기 중요코드의 실행 결과를 보관하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션 코드 은닉 방법.
  17. 제16항에 있어서, 상기 중요코드가 실행된 후 상기 언로더는 상기 메모리에 적재된 상기 중요코드를 상기 메모리에서 해제하는 단계;
    상기 로더는 상기 중요코드에 대응하는 상기 더미코드를 상기 메모리에 적재하는 단계; 및
    상기 복호화된 코드 호출기가 보관하던 상기 중요코드의 상기 실행 결과를 상기 일반코드로 전달하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션 코드 은닉 방법.
PCT/KR2017/000056 2016-06-08 2017-01-03 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법 WO2017213320A1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020160070758A KR101704703B1 (ko) 2016-06-08 2016-06-08 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
KR10-2016-0070758 2016-06-08

Publications (1)

Publication Number Publication Date
WO2017213320A1 true WO2017213320A1 (ko) 2017-12-14

Family

ID=58155432

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2017/000056 WO2017213320A1 (ko) 2016-06-08 2017-01-03 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법

Country Status (3)

Country Link
US (1) US20170357787A1 (ko)
KR (1) KR101704703B1 (ko)
WO (1) WO2017213320A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130085535A (ko) * 2011-12-16 2013-07-30 주식회사 케이티 어플리케이션의 변조 방지 장치 및 검증 장치
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
KR20140072749A (ko) * 2012-12-05 2014-06-13 국방과학연구소 쉘코드 은닉 및 침입 탐지 장치 및 그 방법
KR101490047B1 (ko) * 2013-09-27 2015-02-04 숭실대학교산학협력단 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
KR101619458B1 (ko) * 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111285B2 (en) * 2001-07-17 2006-09-19 Liquid Machines, Inc. Method and system for protecting software applications against static and dynamic software piracy techniques
US20030182460A1 (en) * 2002-03-25 2003-09-25 Atul Khare Managed code modules dynamically invoking unmanaged code modules at arbitrary locations
KR101350390B1 (ko) * 2013-08-14 2014-01-16 숭실대학교산학협력단 코드 난독화 장치 및 그 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130085535A (ko) * 2011-12-16 2013-07-30 주식회사 케이티 어플리케이션의 변조 방지 장치 및 검증 장치
KR20140072749A (ko) * 2012-12-05 2014-06-13 국방과학연구소 쉘코드 은닉 및 침입 탐지 장치 및 그 방법
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
KR101490047B1 (ko) * 2013-09-27 2015-02-04 숭실대학교산학협력단 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
KR101619458B1 (ko) * 2016-03-02 2016-05-10 (주)케이사인 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법

Also Published As

Publication number Publication date
US20170357787A1 (en) 2017-12-14
KR101704703B1 (ko) 2017-02-08

Similar Documents

Publication Publication Date Title
WO2014119936A1 (en) Method of and apparatus for processing software using hash function to secure software, and computer-readable medium storing executable instructions for performing the method
WO2015053509A1 (ko) 동적 라이브러리를 보호하는 방법 및 장치
US8356188B2 (en) Secure system-on-chip
WO2018012693A1 (ko) 주 기억 장치 내부의 코드 수정을 통한 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
WO2015046655A1 (ko) 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
WO2015023024A1 (ko) 애플리케이션 코드 난독화 장치 및 그 방법
WO2017150769A1 (ko) 애플리케이션 코드 난독화 장치 및 이를 이용한 애플리케이션 코드 난독화 방법
WO2015026091A1 (ko) 공통 중간 언어 기반 프로그램을 위한 보안 제공 방법
WO2010087678A2 (ko) 클립보드 보안 시스템 및 방법
US7930537B2 (en) Architecture for encrypted application installation
WO2011025185A2 (ko) 보안 유에스비 저장매체 생성 및 복호화 방법, 그리고 보안 유에스비 저장매체 생성을 위한 프로그램이 기록된 매체
WO2014119915A1 (en) Method for increasing the security of software
US8656191B2 (en) Secure system-on-chip
WO2016024838A1 (ko) 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
WO2016200058A1 (ko) 바이너리 병합 장치, 방법 및 컴퓨터 프로그램
WO2018016830A1 (ko) 파일 암호화 방지 장치 및 방법
WO2014185627A1 (ko) 데이터 프로세싱 시스템 보안 장치와 보안방법
WO2023191216A1 (ko) 데이터 암호화 및 복호화 시스템, 방법
WO2021060745A1 (en) Electronic device for updating firmware by using security integrated circuit and operation method thereof
WO2017213320A1 (ko) 더미 코드를 사용하는 애플리케이션 코드 은닉 장치 및 이를 이용한 애플리케이션 코드 은닉 방법
WO2019177265A1 (ko) 랜섬웨어 대응을 위한 데이터 처리 방법, 이를 실행시키는 프로그램 및 상기 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
WO2015160190A1 (ko) 사용자 인증용 가상 키보드 생성 장치 및 방법
US20150039900A1 (en) Program execution method and decryption apparatus
WO2019083231A1 (ko) 디스플레이장치 및 그 제어방법
WO2020262823A1 (ko) 영상을 처리하는 전자 장치 및 그 영상 처리 방법

Legal Events

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

Ref document number: 17810443

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17810443

Country of ref document: EP

Kind code of ref document: A1