KR20200041524A - 원본코드 패킹장치 및 원본코드 패킹방법 - Google Patents

원본코드 패킹장치 및 원본코드 패킹방법 Download PDF

Info

Publication number
KR20200041524A
KR20200041524A KR1020180121664A KR20180121664A KR20200041524A KR 20200041524 A KR20200041524 A KR 20200041524A KR 1020180121664 A KR1020180121664 A KR 1020180121664A KR 20180121664 A KR20180121664 A KR 20180121664A KR 20200041524 A KR20200041524 A KR 20200041524A
Authority
KR
South Korea
Prior art keywords
code
dummy
encryption
original
key
Prior art date
Application number
KR1020180121664A
Other languages
English (en)
Other versions
KR102177920B1 (ko
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 KR1020180121664A priority Critical patent/KR102177920B1/ko
Publication of KR20200041524A publication Critical patent/KR20200041524A/ko
Application granted granted Critical
Publication of KR102177920B1 publication Critical patent/KR102177920B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Abstract

본 출원은 원본코드 패킹장치 및 원본코드 패킹방법에 관한 것으로서, 본 발명의 일 실시예에 의한 원본코드 패킹장치는 패킹(packing) 요청이 입력되면, 원본코드의 암호화에 사용되는 암호키를 생성하는 암호키생성부; 상기 원본코드를 상기 암호키로 암호화하여, 상기 원본코드를 암호코드로 변환하는 암호코드변환부; 복수의 더미 키(dummy key) 또는 더미 코드(dummy code)를 생성하는 더미 생성부; 상기 암호코드에 대한 복호화 동작을 실행하기 위한 복호코드를 생성하는 복호코드생성부; 및 상기 암호키, 암호코드 및 복호코드를 상기 복수의 더미 키 또는 더미 코드와 결합하여, 상기 원본코드에 대응하는 보안코드를 생성하는 보안코드생성부를 포함할 수 있다.

Description

원본코드 패킹장치 및 원본코드 패킹방법 {Apparatus and method for packing original source code}
본 출원은 더미 코드(dummy code) 또는 더미 키(dummy key)를 활용하여, 패킹(packing)시 원본코드를 보다 안전하게 보호할 수 있는 원본코드 패킹장치 및 원본코드 패킹방법에 관한 것이다.
스마트폰을 비롯한 다양한 모바일 기기가 널리 확산되고 있으나, 이들 기기에 저장된 각종 개인정보에 대한 불법적 접근을 노리는 악성 어플리케이션들이 급속도로 증가하고 있다.
공격자들은, 리버스 엔지니어링을 이용하여 특정 어플리케이션의 소스코드를 추출한 후, 악의적인 코드를 내부에 심어 리패키징하는 방식으로 악성 어플리케이션을 배포하고 있다.
최근 이러한 공격을 방지하기 위하여, 어플리케이션의 실행파일에 대한 코드 난독화 또는 암호화하는 다양한 패킹 기법들이 개발되고 있다.
본 출원은, 더미 코드(dummy code) 또는 더미 키(dummy key)를 활용하여, 패킹(packing)시 원본코드를 보다 안전하게 보호할 수 있는 원본코드 패킹장치 및 원본코드 패킹방법을 제공하고자 한다.
본 출원은, 원본코드를 보호하기 위하여 패킹시마다 상이한 버전의 보안코드를 생성할 수 있는 원본코드 패킹장치 및 원본코드 패킹방법을 제공하고자 한다.
본 발명의 일 실시예에 의한 원본코드 패킹장치는, 패킹(packing) 요청이 입력되면, 원본코드의 암호화에 사용되는 암호키를 생성하는 암호키생성부; 상기 원본코드를 상기 암호키로 암호화하여, 상기 원본코드를 암호코드로 변환하는 암호코드변환부; 복수의 더미 키(dummy key) 또는 더미 코드(dummy code)를 생성하는 더미 생성부; 상기 암호코드에 대한 복호화 동작을 실행하기 위한 복호코드를 생성하는 복호코드생성부; 및 상기 암호키, 암호코드 및 복호코드를 상기 복수의 더미 키 또는 더미 코드와 결합하여, 상기 원본코드에 대응하는 보안코드를 생성하는 보안코드생성부를 포함할 수 있다.
본 발명의 일 실시예에 의한 원본코드 패킹방법은, 패킹(packing) 요청이 입력되면, 원본코드의 암호화에 사용되는 암호키를 생성하는 단계; 상기 원본코드를 상기 암호키로 암호화하여, 상기 원본코드를 암호코드로 변환하는 단계; 복수의 더미 키(dummy key) 또는 더미 코드(dummy code)를 생성하는 단계; 상기 암호코드에 대한 복호화 동작을 실행하기 위한 복호코드를 생성하는 단계; 및 상기 암호키, 암호코드 및 복호코드를 상기 복수의 더미 키 또는 더미 코드와 결합하여, 상기 원본코드에 대응하는 보안코드를 생성하는 단계를 포함할 수 있다.
덧붙여 상기한 과제의 해결수단은, 본 발명의 특징을 모두 열거한 것이 아니다. 본 발명의 다양한 특징과 그에 따른 장점과 효과는 아래의 구체적인 실시형태를 참조하여 보다 상세하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 의한 원본코드 패킹장치 및 원본코드 패킹방법에 의하면, 패킹시 암호키의 키값, 암호키의 위치, 복호코드의 시작위치가 각각 상이하게 생성되므로, 패킹시마다 다른 버전의 보안코드를 생성할 수 있다. 즉, 보안코드에 대한 분석 난이도를 향상시킬 수 있다.
다만, 본 발명의 실시예들에 따른 원본코드 패킹장치 및 원본코드 패킹방법이 달성할 수 있는 효과는 이상에서 언급한 것들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도1은 본 발명의 일 실시예에 의한 원본코드 패킹장치의 동작을 나타내는 개략도이다.
도2는 본 발명의 일 실시예에 의한 원본코드 패킹장치를 나타내는 블록도이다.
도3은 본 발명의 일 실시예에 의한 원본코드 패킹장치가 생성한 보안코드를 나타내는 개략도이다.
도4는 본 발명의 일 실시예에 의한 원본코드 패킹방법을 나타내는 순서도이다.
이하, 첨부된 도면을 참조하여 본 명세서에 개시된 실시 예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 명세서 작성의 용이함만이 고려되어 부여되거나 혼용되는 것으로서, 그 자체로 서로 구별되는 의미 또는 역할을 갖는 것은 아니다. 즉, 본 발명에서 사용되는 '부'라는 용어는 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '부'는 어떤 역할들을 수행한다. 그렇지만 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 '부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '부'들로 결합되거나 추가적인 구성요소들과 '부'들로 더 분리될 수 있다.
또한, 본 명세서에 개시된 실시 예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 명세서에 개시된 실시 예의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 첨부된 도면은 본 명세서에 개시된 실시 예를 쉽게 이해할 수 있도록 하기 위한 것일 뿐, 첨부된 도면에 의해 본 명세서에 개시된 기술적 사상이 제한되지 않으며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
도1은 본 발명의 일 실시예에 의한 원본코드 패킹장치의 동작을 나타내는 개략도이다.
도1을 참조하면, 어플리케이션 등의 원본코드(a)가 원본코드 패킹장치(100)로 입력되면, 원본코드 패킹장치(100)는 입력된 원본코드(a)를 패킹(packing)하여 원본코드(a)에 대응하는 보안코드(b)를 생성할 수 있다.
일반적으로 어플리케이션에 대한 분석을 수행하고자 하는 경우, 어플리케이션의 실행파일로부터 원본 바이너리 등의 원본코드(a)를 추출할 수 있으며, 추출한 원본코드(a)를 아용하여 해당 어플리케이션을 분석할 수 있다.
예를들어, 안드로이드 운영체제를 기반으로 하는 어플리케이션의 경우, 해당 어플리케이션의 APK(Android Application Package) 파일을 압축해제하여 classes.dex, res, lib, assets, META-INF, resources.arsc 등을 추출할 수 있으며, 실행파일에 해당하는 classes.dex의 원본바이너리를 추출할 수 있다. 이후, 원본바이너리를 디컴파일(decompile)하여 해당 어플리케이션의 원본소스코드를 생성할 수 있으며, 이를 이용하여 해당 어플리케이션을 용이하게 분석하는 것이 가능하다.
다만, 어플리케이션을 임의로 디컴파일하여 분석하는 것이 가능하게 되면, 어플리케이션 내에 악성코드를 임의로 삽입하여 재배포하는 등 보안상의 문제가 발생할 수 있다. 따라서, 어플리케이션의 원본코드(a)를 임의로 분석하지 못하도록 보호할 필요가 있으며, 도1에 도시한 바와 같이, 원본코드(a)의 은닉을 위해, 원본코드(a)에 암호화 또는 인코딩을 적용하여 패킹할 수 있다.
종래에는 원본코드의 패킹시 매번 동일한 암호키를 사용하여 원본 바이너리 인코딩 또는 암호화하거나, 원본 바이너리 내 암호키의 위치를 고정적으로 유지하는 경우가 대부분이었다. 이 경우, 자동분석툴을 이용하여 암호키를 추출하는 것이 가능하며, 이를 통해 원본코드가 외부로 노출될 위험성이 높았다.
한편, 본 발명의 일 실시예에 의한 원본코드 패킹장치(100)는, 더미 코드(dummy code) 또는 더미 키(dummy key)를 활용하여, 패킹시 원본코드를 보다 안전하게 보호할 수 있는 보안코드를 제공하는 것이 가능하다. 이하 본 발명의 일 실시예에 의한 원본코드 패킹장치(100)를 설명한다.
도2는 본 발명의 일 실시예에 의한 원본코드 패킹장치를 나타내는 블록도이다.
도2를 참조하면 본 발명의 일 실시예에 의한 원본코드 패킹장치(100)는, 암호키생성부(110), 암호코드변환부(120), 더미생성부(130), 복호코드생성부(140) 및 보안코드생성부(150)를 포함할 수 있다.
암호키생성부(110)는, 패킹(packing) 요청이 입력되면 원본코드의 암호화에 사용되는 암호키를 생성할 수 있다. 원본코드의 암호화를 위해 다양한 종류의 암호화 기법이 적용될 수 있으며, 실시예에 따라서는 암호키를 이용하는 대칭형 암호방식(symmetric cryptographic technique) 등이 활용될 수 있다. 여기서, 암호키생성부(110)는 패킹이 요청될 때 마다 상이한 암호키를 동적(dynamic)으로 생성할 수 있으며, 실시예에 따라서는 랜덤함수(random function)를 활용하여 임의의 암호키를 생성하는 것도 가능하다. 즉, 패킹시마다 상이한 암호키를 적용하여 분석의 난이도를 높일 수 있다.
암호코드변환부(120)는 원본코드를 암호키로 암호화하여, 원본코드를 암호코드로 변환할 수 있다. 즉, 암호키를 이용하여 원본코드를 암호화함으로써, 원본코드를 은닉시킬 수 있다. 실시예에 따라서는, 암호코드변환부(120)가 비트연산(bitwise operation)을 수행하는 방식으로 원본코드를 암호화할 수 있다. 즉, 암호코드변환부(120)는 암호키와 원본코드의 비트(bti)를 각각 입력받을 수 있으며, 각각의 비트들을 논리연산하여 암호코드를 생성할 수 있다. 예를들어, 암호코드변환부(120)는 암호키와 원본코드의 각각의 비트들을 서로 XOR(Exclusive OR) 연산한 후, 그 결과를 암호코드로 출력할 수 있다.
더미생성부(130)는 복수의 더미 키(dummy key) 또는 더미 코드(dummy code)를 생성할 수 있다. 더미 키와 더미 코드는 각각 실제로 사용되지 않는 키값과 실제 실행되지 않는 코드로, 암호키의 은닉 등을 위해 활용될 수 있다. 더미생성부(130)는 매번 패킹시마다 상이한 개수의 더미 키 또는 더미 코드를 생성할 수 있으며, 더미생성부(130)가 생성하는 더미 키와 더미 코드의 내용이나 종류도 매번 상이할 수 있다. 또한, 실시예에 따라서는, 더미 키 또는 더미 코드들의 내부에 포함되는 키(key)값들의 변수명을 모두 동일하게 설정하거나, 각각의 키값들이 모두 상이한 값을 가지도록 설정하는 것도 가능하다. 즉, 더미코드나 더미 키로부터 어떤 정보도 추출하지 못하도록 난독화하여, 분석의 난이도를 높일 수 있다.
복호코드생성부(140)는 암호코드에 대한 복호화 동작을 실행하기 위한 복호코드를 생성할 수 있다. 즉, 어플리케이션을 실행하기 위해서는 암호코드의 복호화가 필요하므로, 복호코드생성부(140)에서는 암호코드를 복호화하기 위한 복호코드를 생성할 수 있다. 여기서, 복호코드는 언패킹 요청시 실행되어 암호코드에 대한 복호화 동작을 수행할 수 있으며, 실시예에 따라서는, 복호코드 내에 암호코드를 호출하는 함수가 포함될 수 있으며, 암호키를 이용하여 호출된 암호코드를 복호화할 수 있다.
보안코드생성부(150)는, 암호키, 암호코드 및 복호코드를 복수의 더미 키 또는 더미 코드와 결합하여, 보안코드를 생성할 수 있다. 구체적으로, 보안코드에는 암호코드가 포함되는 암호영역, 암호키를 포함하는 키영역 및 복호코드가 포함되는 복호영역이 포함될 수 있으며, 각각의 암호영역, 키영역 및 복호영역은 순차적으로 연결될 수 있다.
도3(b)는 기존의 보안코드를 나타내는 것으로, 도3(b)의 키영역 내에는 더미키나 더미코드 등이 포함되지 않으므로 키영역의 크기(D2)가 일정하게 유지될 수 있으며, 그에 따라 암호키의 위치와 복호코드의 시작위치(P2)가 고정될 수 있다. 이 경우, 정적 코드 분석 등을 통하여 복호코드의 시작위치(P2)와 암호키의 위치 등이 노출될 위험이 존재한다.
반면에, 보안코드생성부(150)는 도3(a)에 도시한 바와 같이, 키 영역 내에 암호키와 함께 더미키 또는 더미 코드를 더 포함시킬 수 있다. 즉, 키 영역 내에 암호키 이외에 더미키와 더미코드가 포함되므로, 정확한 암호키 위치 특정을 방지하는 것이 가능하다. 또한, 더미키 또는 더미코드의 개수에 따라 키영역의 크기(D1)가 가변하므로, 복호코드의 시작위치(P1)도 함께 변할 수 있다. 여기서, 보안코드는 바이너리 코드에 해당하며, 암호영역, 키영역, 복호영역은 일체로 연결된다. 따라서, 외부에서는 복호코드의 정확한 시작위치(P1)를 파악하기 어려우므로, 보안코드에 대한 분석의 난이도를 향상시킬 수 있다.
추가적으로, 매번 패킹을 수행할 때마다 암호키가 상이하게 설정되고, 더미키 또는 더미코드의 개수도 랜덤하게 변경되므로, 보안코드생성부(150)는 동일한 원본코드에 대하여 매번 상이한 보안코드를 생성할 수 있다.
도4는 본 발명의 일 실시예에 의한 원본코드 패킹방법을 나타내는 순서도이다.
도4를 참조하면 본 발명의 일 실시예에 의한 원본코드 패킹방법은, 암호키생성단계(S10), 암호코드변환단계(S20), 더미생성단계(S30), 복호코드생성단계(S40) 및 보안코드생성단계(S50)를 포함할 수 있다.
이하 도4를 참조하여 본 발명의 일 실시예에 의한 원본코드 패킹방법을 설명한다.
암호키생성단계(S10)에서는, 패킹(packing) 요청이 입력되면, 원본코드의 암호화에 사용되는 암호키를 생성할 수 있다. 원본코드의 암호화를 위해 다양한 종류의 암호화 기법이 적용가능하지만, 여기서는 하나의 암호키를 이용하는 대칭형 암호방식(symmetric cryptographic technique)이 적용될 수 있다. 이 경우, 암호키생성단계(S10)에서는, 패킹 요청에 대응하여 암호키를 생성할 수 있으며, 실시예에 따라서는 패킹 요청시마다 상이한 암호키를 동적(dynamic)으로 생성하는 것도 가능하다. 예를들어, 랜덤함수(random function)를 활용하여 임의의 암호키를 생성할 수 있다.
암호코드변환단계(S20)에서는, 원본코드를 암호키로 암호화하여, 원본코드를 암호코드로 변환할 수 있다. 즉, 암호코드변환단계(S20)에서는, 암호키로 원본코드를 암호화하여 원본코드를 은닉시킬 수 있다. 실시예에 따라서는, 암호키와 원본코드의 비트(bti)를 각각 입력받은 후, 이들을 논리연산하는 방식으로 암호코드를 생성할 수 있다. 예를들어, 암호키와 원본코드의 각각의 비트들을 서로 XOR(Exclusive OR) 연산하여, 그 결과를 암호코드로 출력할 수 있다. 여기서, XOR 연산 이외에 다양한 종류의 논리연산을 적용하여 암호코드를 생성하는 것도 가능하다.
더미생성단계(S30)에서는, 복수의 더미 키(dummy key) 또는 더미 코드(dummy code)를 생성할 수 있다. 여기서 더미 키는 실제로 사용되지 않는 키값이고, 더미 코드는 실제 실행되지 않는 코드에 해당한다. 즉, 암호키의 은닉 등을 위해 더미 키 또는 더미 코드가 활용될 수 있으며, 이를 위해 더미생성단계(S30)에서 더미 키 또는 더미 코드를 생성할 수 있다. 여기서, 더미 키 또는 더미 코드는 매번 패킹시마다 상이한 개수로 생성될 수 있으며, 생성되는 더미 키 또는 더미 코드의 내용이나 종류도 매번 상이할 수 있다. 또한, 실시예에 따라서는, 더미 키 또는 더미 코드들의 내부에 포함되는 키(key)값들의 변수명을 모두 동일하게 설정하거나, 각각의 키값들이 모두 상이한 값을 가지도록 설정하는 것도 가능하다. 즉, 더미코드나 더미 키로부터 어떤 정보도 추출하지 못하도록 난독화하여, 분석의 난이도를 높일 수 있다.
복호코드생성단계(S40)에서는, 암호코드에 대한 복호화 동작을 실행하기 위한 복호코드를 생성할 수 있다. 여기서, 복호코드는 언패킹 요청시 실행되어 암호코드에 대한 복호화 동작을 수행하는 것일 수 있다. 실시예에 따라서는, 복호코드 내에 암호코드를 호출하는 함수가 포함될 수 있으며, 암호키를 이용하여 호출된 암호코드를 복호화할 수 있다.
보안코드생성단계(S50)에서는, 암호키, 암호코드 및 복호코드를 복수의 더미 키 또는 더미 코드와 결합하여, 원본코드에 대응하는 보안코드를 생성할 수 있다. 구체적으로, 보안코드에는 암호코드가 포함되는 암호영역, 암호키를 포함하는 키영역 및 복호코드가 포함되는 복호영역이 포함될 수 있으며, 각각의 암호영역, 키영역 및 복호영역은 순차적으로 연결될 수 있다.
여기서, 키 영역 내에는 암호키와 함께 더미키 또는 더미 코드가 더 포함될 수 있다. 즉, 키 영역 내에 암호키 이외에 더미키와 더미코드가 포함되므로, 암호키의 위치를 정확히 특정하는 것을 방지할 수 있다.
또한, 더미키 또는 더미코드의 개수에 따라 키영역의 크기가 가변되므로, 복호코드의 시작위치도 함께 변하게 된다. 즉, 외부에서는 복호코드의 정확한 시작위치를 파악하기 어려우므로, 보안코드에 대한 분석의 난이도를 향상시키는 것이 가능하다.
추가적으로, 매번 패킹을 수행할 때마다 암호키가 상이하게 설정되고, 더미키 또는 더미코드의 개수도 랜덤하게 변경되므로, 보안코드생성단계(S50)에서는 동일한 원본코드에 대하여 매번 패킹시마다 상이한 보안코드를 생성할 수 있다.
전술한 본 발명은, 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다.
본 발명은 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 있어, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 본 발명에 따른 구성요소를 치환, 변형 및 변경할 수 있다는 것이 명백할 것이다.
100: 원본코드 패킹장치 110: 암호키생성부
120: 암호코드변환부 130: 더미생성부
140: 복호코드생성부 150: 보안코드생성부
S10: 암호키생성단계 S20: 암호코드변환단계
S30: 더미생성단계 S40: 복호코드생성단계
S50: 보안코드생성단계

Claims (11)

  1. 패킹(packing) 요청이 입력되면, 원본코드의 암호화에 사용되는 암호키를 생성하는 단계;
    상기 원본코드를 상기 암호키로 암호화하여, 상기 원본코드를 암호코드로 변환하는 단계;
    복수의 더미 키(dummy key) 또는 더미 코드(dummy code)를 생성하는 단계;
    상기 암호코드에 대한 복호화 동작을 실행하기 위한 복호코드를 생성하는 단계; 및
    상기 암호키, 암호코드 및 복호코드를 상기 복수의 더미 키 또는 더미 코드와 결합하여, 상기 원본코드에 대응하는 보안코드를 생성하는 단계를 포함하는 원본코드 패킹방법.
  2. 제1항에 있어서, 상기 암호키를 생성하는 단계는
    상기 패킹 요청시마다 상이한 암호키를 동적으로 생성하는 것을 특징으로 하는 원본코드 패킹방법.
  3. 제1항에 있어서, 상기 복수의 더미 키 또는 더미 코드를 생성하는 단계는
    상기 패킹 요청시마다 상이한 개수의 더미 키 또는 더미 코드를 동적으로 생성하는 것을 특징으로 하는 원본코드 패킹방법.
  4. 제1항에 있어서, 상기 복수의 더미 키 또는 더미 코드를 생성하는 단계는
    상기 더미 키 또는 더미 코드 내에 포함되는 키(key)값들의 변수명은 모두 동일하게 설정하는 것을 특징으로 하는 원본코드 패킹방법.
  5. 제1항에 있어서, 상기 복수의 더미 키 또는 더미 코드를 생성하는 단계는
    상기 더미 키 또는 더미 코드 내에 포함되는 키값들은 모두 상이한 값을 가지도록 설정하는 것을 특징으로 하는 원본코드 패킹방법.
  6. 제1항에 있어서, 상기 보안코드는
    상기 암호코드가 포함되는 암호영역, 상기 암호키를 포함하는 키영역 및 상기 복호코드가 포함되는 복호영역이 순차적으로 연결되고, 상기 복수의 더미 키 또는 더미 코드는 상기 키영역 내에 위치하는 것을 특징으로 하는 원본코드 패킹방법.
  7. 제6항에 있어서, 상기 보안코드를 생성하는 단계는
    상기 키영역 내에 위치하는 상기 복수의 더미키 또는 더미 코드에 따라, 상기 암호키의 위치가 가변하도록, 상기 보안코드를 생성하는 것을 특징으로 하는 원본코드 패킹방법.
  8. 제6항에 있어서, 상기 보안코드를 생성하는 단계는
    상기 키영역 내에 위치하는 상기 더미키 또는 더미 코드의 개수에 따라, 상기 복호코드의 시작위치가 가변하도록, 상기 보안코드를 생성하는 것을 특징으로 하는 원본코드 패킹방법.
  9. 제1항에 있어서, 상기 복호코드는
    상기 보안코드에 대한 언패킹 요청에 따라 상기 복호화 동작을 실행하며, 상기 복호화 동작에 따라 상기 암호키를 추출하고, 상기 암호키로 상기 암호코드를 복호화하여 상기 원본코드를 생성하는 것을 특징으로 하는 원본코드 패킹방법.
  10. 하드웨어와 결합되어 제1항 내지 제9항 중 어느 한 항의 원본코드 패킹방법을 실행하기 위하여 매체에 저장된 컴퓨터 프로그램.
  11. 패킹(packing) 요청이 입력되면, 원본코드의 암호화에 사용되는 암호키를 생성하는 암호키생성부;
    상기 원본코드를 상기 암호키로 암호화하여, 상기 원본코드를 암호코드로 변환하는 암호코드변환부;
    복수의 더미 키(dummy key) 또는 더미 코드(dummy code)를 생성하는 더미 생성부;
    상기 암호코드에 대한 복호화 동작을 실행하기 위한 복호코드를 생성하는 복호코드생성부; 및
    상기 암호키, 암호코드 및 복호코드를 상기 복수의 더미 키 또는 더미 코드와 결합하여, 상기 원본코드에 대응하는 보안코드를 생성하는 보안코드생성부를 포함하는 원본코드 패킹장치.
KR1020180121664A 2018-10-12 2018-10-12 원본코드 패킹장치 및 원본코드 패킹방법 KR102177920B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180121664A KR102177920B1 (ko) 2018-10-12 2018-10-12 원본코드 패킹장치 및 원본코드 패킹방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180121664A KR102177920B1 (ko) 2018-10-12 2018-10-12 원본코드 패킹장치 및 원본코드 패킹방법

Publications (2)

Publication Number Publication Date
KR20200041524A true KR20200041524A (ko) 2020-04-22
KR102177920B1 KR102177920B1 (ko) 2020-11-13

Family

ID=70472794

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180121664A KR102177920B1 (ko) 2018-10-12 2018-10-12 원본코드 패킹장치 및 원본코드 패킹방법

Country Status (1)

Country Link
KR (1) KR102177920B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120017532A (ko) * 2010-08-19 2012-02-29 주식회사 잉카인터넷 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법
KR101490047B1 (ko) * 2013-09-27 2015-02-04 숭실대학교산학협력단 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
KR101671336B1 (ko) * 2014-02-27 2016-11-16 (주)스마일게이트엔터테인먼트 코드 분리가 적용된 언패킹 보호 방법 및 장치
KR20170018745A (ko) * 2015-08-10 2017-02-20 라인 가부시키가이샤 어플리케이션의 코드 난독화를 위한 시스템 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120017532A (ko) * 2010-08-19 2012-02-29 주식회사 잉카인터넷 응용프로그램과 부가응용프로그램의 결합 방법 및 실행 방법
KR101490047B1 (ko) * 2013-09-27 2015-02-04 숭실대학교산학협력단 자가변환 기반 애플리케이션 코드 난독화 장치 및 그 방법
KR101671336B1 (ko) * 2014-02-27 2016-11-16 (주)스마일게이트엔터테인먼트 코드 분리가 적용된 언패킹 보호 방법 및 장치
KR20170018745A (ko) * 2015-08-10 2017-02-20 라인 가부시키가이샤 어플리케이션의 코드 난독화를 위한 시스템 및 방법

Also Published As

Publication number Publication date
KR102177920B1 (ko) 2020-11-13

Similar Documents

Publication Publication Date Title
KR102433011B1 (ko) Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체
JP5990654B2 (ja) アプリケーションコード難読化装置及びその方法
US10713339B2 (en) Build system with plugins for encryption of application components
CN104298932B (zh) 一种so文件的调用方法及装置
US20160203087A1 (en) Method for providing security for common intermediate language-based program
KR101216995B1 (ko) 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
CN107273723B (zh) 一种基于so文件加壳的Android平台应用软件保护方法
CN104318135A (zh) 一种基于可信执行环境的Java代码安全动态载入方法
CN108134673B (zh) 一种生成白盒库文件的方法及装置
CN108111622B (zh) 一种下载白盒库文件的方法、装置及系统
JP4470982B2 (ja) 情報処理装置及び情報処理プログラム
KR20160020294A (ko) 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
JP6698774B2 (ja) 共通中間言語のための保安提供装置と方法、及び保安実行装置と方法
CN103853943A (zh) 程序保护方法及装置
KR20080046515A (ko) 콘텐츠 파일의 암호화 및 복호화 방법
KR20140139392A (ko) 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
CN112115430A (zh) 一种apk的加固方法、电子设备及存储介质
KR102177920B1 (ko) 원본코드 패킹장치 및 원본코드 패킹방법
KR101907846B1 (ko) 의존 관계형 위변조 무결성 체크를 이용한 암호화 처리장치 및 방법
CN111639358B (zh) 一种指令加密、加密指令解密方法及装置
US20170134379A1 (en) Method for securing an application and data
CN107688729B (zh) 基于可信主机的应用程序保护系统及方法
Cho et al. Secure and efficient code encryption scheme based on indexed table
KR101907847B1 (ko) 의존 관계형 위변조 무결성 체크를 이용한 암호화 처리장치 및 방법

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right