KR20170069337A - 애플리케이션 보호를 위한 암호화 처리 방법, 이에 의해 생성된 프로그램 및 이를 위한 장치 - Google Patents

애플리케이션 보호를 위한 암호화 처리 방법, 이에 의해 생성된 프로그램 및 이를 위한 장치 Download PDF

Info

Publication number
KR20170069337A
KR20170069337A KR1020150176005A KR20150176005A KR20170069337A KR 20170069337 A KR20170069337 A KR 20170069337A KR 1020150176005 A KR1020150176005 A KR 1020150176005A KR 20150176005 A KR20150176005 A KR 20150176005A KR 20170069337 A KR20170069337 A KR 20170069337A
Authority
KR
South Korea
Prior art keywords
code
encrypted
application
execution
unit
Prior art date
Application number
KR1020150176005A
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 KR1020150176005A priority Critical patent/KR20170069337A/ko
Publication of KR20170069337A publication Critical patent/KR20170069337A/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/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/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
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 애플리케이션 보호를 위한 암호화 처리 방법에 관한 것으로서, 더욱 상세하게는 코드부와 리소스부로 구성된 애플리케이션의 실행코드 노출을 방지하기 위하여 실행코드를 암호화하여 리소스부에 저장하기 위한 방법, 이를 위한 장치와 이 방법에 의해 재구성된 프로그램에 관한 것이다.
이를 위한 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 방법은, 애플리케이션의 코드부로부터 암호화 대상이 되는 실행코드를 추출하는 단계; 상기 추출한 실행코드를 암호화하는 단계; 암호화한 실행코드를 상기 코드부과는 별도의 영역인 리소스부로 이동시키는 단계; 및 상기 추출된 실행코드를 대신하여, 애플리케이션의 실행 요청이 있는 경우 상기 암호화한 실행코드를 상기 리소스부로부터 불러와 복호화 후 실행시키기 위한 가상실행코드를 상기 코드부에 삽입하는 단계;를 포함하여 이루어진다.

Description

애플리케이션 보호를 위한 암호화 처리 방법, 이에 의해 생성된 프로그램 및 이를 위한 장치{METHOD AND APPARATUS FOR PROTECTING APPLICATION AND PROGRAM MADE BY THE METHOD}
본 발명은 애플리케이션 보호를 위한 암호화 처리 방법에 관한 것으로서, 더욱 상세하게는 코드부와 리소스부로 구성된 애플리케이션의 실행코드 노출을 방지하기 위하여 실행코드를 암호화하여 리소스부에 저장하기 위한 방법, 이를 위한 장치와 이 방법에 의해 재구성된 프로그램에 관한 것이다.
이 부분에 기술된 내용은 단순히 본 실시 예에 대한 배경 정보를 제공할 뿐 종래기술을 구성하는 것은 아니다.
근래 스마트폰의 보급이 확산되고, 다양한 모바일 애플리케이션이 등장함에 따라, 이러한 모바일 애플리케이션을 변조하여 정상적인 애플리케이션으로 위장한 채 보안 문제를 야기하는 사건이 증가하였다.
이는 역공학(Reverse Engineering) 기술에 의한 것으로, 역공학은 소스코드 실행파일 등을 직접 분석해서 프로그램이 어떤 기능을 수행하는지 파악하는 기술이다.
이에 대한 대응으로 코드를 복잡하게 만들어 알아보기 힘들게 하는 코드 난독화(Code Obfuscation) 기술이 발전하고 있다.
다만 난독화에도 불구하고 원본 소스코드의 유출이나 복원 정보의 유출이 발생할 수 있고, 변환된 식별자를 해석하거나, 정크 코드(Junk Code)를 배제하고 코드를 해석할 수 있는 가능성은 여전히 남아있다.
이에 따라, 역 컴파일(Decompile)이 이루어지더라도 프로그램의 소스코드 노출을 방지하는, 보다 높은 수준의 처리 방법에 관한 필요가 발생하였다.
한국등록특허 제10-1545272호 (명칭: 안드로이드에서의 DEX파일 바이너리 난독화 방법, 2015.08.01 등록)
상술한 문제점을 해결하기 위하여 본 발명은, 애플리케이션의 역 컴파일 시 중요한 실행코드가 노출되지 않도록 실행코드를 일반 리소스 파일로 위장하기 위한 암호화 처리 방법 및 이에 대한 장치를 제안한다.
더하여, 본 발명은 리소스 파일로 위장을 위해 실행코드를 암호화하고, 상기 실행코드를 불러와 복호화할 수 있는 가상실행코드를 삽입하고자 한다.
이에 따라 애플리케이션의 변조를 방지하고 보안성을 높여 애플리케이션에 의한 피해 발생을 줄이고자 한다.
그러나, 이러한 본 발명의 목적은 상기의 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 명확하게 이해될 수 있을 것이다.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 방법은 애플리케이션의 코드부로부터 암호화 대상이 되는 실행코드를 추출하는 단계; 상기 추출한 실행코드를 암호화하는 단계; 암호화한 실행코드를 상기 코드부과는 별도의 영역인 리소스부로 이동시키는 단계; 및 상기 추출된 실행코드를 대신하여, 애플리케이션의 실행 요청이 있는 경우 상기 암호화한 실행코드를 상기 리소스부로부터 불러와 복호화 후 실행시키기 위한 가상실행코드를 상기 코드부에 삽입하는 단계; 를 포함하여 제공될 수 있다.
또한, 상술한 바와 같은 목적을 달성하기 위한 장치로 애플리케이션의 코드부로부터 암호화 대상이 되는 실행코드를 추출하는 코드 분리부; 상기 추출한 실행코드를 암호화하는 암호화부; 애플리케이션의 실행 요청이 있는 경우 상기 암호화된 실행코드를 불러오며, 상기 불러온 암호화된 실행코드를 복호화하기 위한 가상실행코드를 생성하는 가상코드 생성부; 및 상기 암호화된 실행코드를 상기 애플리케이션의 리소스부로 이동시키고, 상기 가상실행코드를 상기 추출된 실행코드 대신에 상기 코드부에 삽입하여 상기 애플리케이션을 재구성하는 결합부; 를 포함하는 애플리케이션 보호를 위한 암호화 처리 장치를 제공할 수 있다.
추가로 본 발명은 암호화된 실행코드를 포함하는 리소스부; 실행 요청이 있는 경우 상기 암호화된 실행코드를 상기 리소스부로부터 불러와 복호화 후 실행시키기 위한 가상실행코드를 포함하는 코드부; 를 포함하는 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램을 제공할 수 있다.
본 발명에 따르면, 애플리케이션이 역 컴파일 되더라도 실행코드가 암호화되어 노출되지 않으며, 암호화된 실행코드가 리소스 형태로 변환되어 실행코드의 변조를 방지할 수 있다.
이를 통하여 프로그램 개발자가 노출을 원하지 않는 소스코드가 있는 경우 이를 보호할 수 있고, 사용자가 변조된 프로그램을 정상적인 프로그램으로 오인하여 사용함으로써 발생하는 피해를 줄일 수 있다.
아울러, 상술한 효과 이외의 다양한 효과들이 후술될 본 발명의 실시 예에 따른 상세한 설명에서 직접적 또는 암시적으로 개시될 수 있다.
도 1은 Test라는 명칭을 가진 안드로이드 애플리케이션을 제작하기 위한 소스의 실제 구성의 일 예시를 나타낸 도면이다.
도 2는 컴파일된 apk 파일의 압축을 해제하는 경우 나타내는 파일 내의 구조의 일 예시를 나타낸 도면이다.
도 3은 본 발명의 실시 예에 따른 기록매체에 저장된 컴퓨터 프로그램의 주요 구성의 일 예시를 나타낸 도면이다.
도 4는 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 장치의 주요 구성을 도시한 블록도이다.
도 5는 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 방법의 수행 과정을 나타낸 흐름도이다.
도 6은 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 방법의 수행 형태를 개략적으로 나타낸 도면이다.
본 발명의 과제 해결 수단의 특징 및 이점을 보다 명확히 하기 위하여, 첨부된 도면에 도시된 본 발명의 특정 실시 예를 참조하여 본 발명을 더 상세하게 설명한다.
다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.
이하의 설명 및 도면에서 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위한 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시 예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다.
또한, 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하기 위해 사용하는 것으로, 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용될 뿐, 상기 구성요소들을 한정하기 위해 사용되지 않는다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제2 구성요소는 제1 구성요소로 명명될 수 있고, 유사하게 제1 구성요소도 제2 구성요소로 명명될 수 있다.
더하여, 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급할 경우, 이는 논리적 또는 물리적으로 연결되거나, 접속될 수 있음을 의미한다. 다시 말해, 구성요소가 다른 구성요소에 직접적으로 연결되거나 접속되어 있을 수 있지만, 중간에 다른 구성요소가 존재할 수도 있으며, 간접적으로 연결되거나 접속될 수도 있다고 이해되어야 할 것이다.
또한, 본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 또한, 본 명세서에서 기술되는 "포함 한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
아울러, 본 발명의 범위 내의 실시 예들은 컴퓨터 실행가능 명령어 또는 컴퓨터 판독가능 매체에 저장된 데이터 구조를 가지거나 전달하는 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는, 범용 또는 특수 목적의 컴퓨터 시스템에 의해 액세스 가능한 임의의 이용 가능한 매체일 수 있다. 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EPROM, CD-ROM 또는 기타 광 디스크 저장장치, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터 실행가능 명령어, 컴퓨터 판독가능 명령어 또는 데이터 구조의 형태로 된 소정의 프로그램 코드 수단을 저장하거나 전달하는 데에 이용될 수 있고, 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스 될 수 있는 임의의 기타 매체와 같은 물리적 저장 매체를 포함할 수 있지만, 이에 한정되지 않는다.
이하의 설명 및 특허 청구 범위에서, "네트워크" 또는 "통신망"은 컴퓨터 시스템들 및/또는 모듈들 간의 전자 데이터를 전송할 수 있게 하는 하나 이상의 데이터 링크로서 정의된다. 정보가 네트워크 또는 다른 (유선, 무선, 또는 유선 또는 무선의 조합인) 통신 접속을 통하여 컴퓨터 시스템에 전송되거나 제공될 때, 이 접속은 컴퓨터-판독가능매체로서 이해될 수 있다. 컴퓨터 판독가능 명령어는, 예를 들면, 범용 컴퓨터 시스템 또는 특수 목적 컴퓨터 시스템이 특정 기능 또는 기능의 그룹을 수행하도록 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는, 예를 들면, 어셈블리어, 또는 심지어는 소스코드와 같은 이진, 중간 포맷 명령어일 수 있다.
본 발명에 의한 애플리케이션은 자바(Java) 언어를 이용하여 개발되는 안드로이드 운영체제 기반의 모바일 애플리케이션을 의미할 수 있다. 이하에서는 이를 기반으로 설명을 할 것이나, 이에 한정되는 것은 아니며, 다른 운영체제 하에서 다른 언어로 개발되더라도, 본 발명에서 설명하는 애플리케이션과 유사한 구조로 제작되는 애플리케이션의 경우에는, 본 발명이 속하는 분야의 통상의 기술자에 의해 본 발명의 내용이 적용될 수 있을 것이다.
안드로이드 애플리케이션의 경우 애플리케이션을 실행해주는 달빅 가상 머신(Dalvik Virtual machine)을 통해 애플리케이션의 코드가 실행되며, 실행코드의 경우 애플리케이션에 포함된 dex(Dalvid Executable) 파일에 저장이 이루어진다.
그러면 이제, 도면을 참조하여 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 방법 및 이를 위한 장치, 이와 관련된 컴퓨터 프로그램에 대하여 설명하도록 한다.
도 1 내지 도 3은 본 발명의 실시 예에 따른 기록매체에 저장된 컴퓨터 프로그램의 주요 구성의 일 예시를 나타낸 도면이다.
도 1은 Test라는 명칭을 가진 안드로이드 애플리케이션을 제작하기 위한 소스의 실제 구성의 일 예시를 나타낸 도면이다.
이는, apk 파일의 도 1을 참조하면, 안드로이드 애플리케이션을 제작하기 위한 소스에는 src, gen, Android Library, assets, bin, res, AndroidManifest.xml 등이 포함될 수 있다.
이러한 apk 파일을 제작하기 위한 소스 내에는 도 1과 같은 폴더와 파일이 존재할 수 있다.
Src는 소스와 관련된 폴더로, 코드가 작성되는 메인 소스 파일이 포함되어 있다.
Gen의 경우 애플리케이션 내부의 각종 개체에 접근할 수 있는 식별자가 정의되어 있으며, 컴파일 툴에 의해 자동으로 관리된다.
Assets는 리소스 폴더로, 자바 파일이 아닌 기타 파일, 즉 비디오, 오디오 등의 파일이 저장되어 있다.
Res 역시 리소스와 관련된 폴더로, 내부에 drawable, layout, values 등의 폴더가 존재할 수 있으며, 이미지 파일, 애플리케이션과 관련된 응용프로그램의 모양, 애플리케이션에서 사용하는 문자열 등이 저장되어 있다.
AndroidManifest.xml 파일은 애플리케이션의 버전이나 명칭, 구성 등에 관한 정보를 저장한다.
이러한 소스를 빌드(컴파일)를 통하여 안드로이드 애플리케이션, 즉 apk 파일로 제작할 수 있다.
안드로이드 애플리케이션, 즉 안드로이드 응용 프로그램 패키지는 안드로이드의 소프트웨어와 미들웨어 배포에 사용되는 패키지 파일이며, apk의 확장자를 가진다. Apk 파일은 애플리케이션에 관계된 파일들을 하나로 압축해 놓은 일종의 압축파일이다.
도 2는 이러한 컴파일된 apk 파일의 압축을 해제하는 경우 나타내는 파일 내의 구조의 일 예시를 나타낸 도면이다.
도 2를 참조하면, src, gen, Android Library 등의 폴더가 없어지고 classes.dex, resouces.arsc의 파일이 생성되었음을 알 수 있다.
classes.dex 파일은 안드로이드의 달빅 가상머신이 인식할수 있도록, 자바 가상 머신에 맞추어 컴파일된 *.class 파일을 다시 컴파일한 것으로, 안드로이드 달빅 가상머신에 맞춰진 실행파일에 해당한다.
resouces.arsc 파일은 리소스 파일들에 관한 각종 정보를 기록한 파일로, res 폴더 내에 저장된 각종 리소스 파일의 type과 id 등을 포함한다.
도 3은 본 발명의 실시 예에 따른 기록매체에 저장된 컴퓨터 프로그램의 주요 구성의 일 예시를 나타낸 도면이다.
도 3을 참조하면, 이러한 Apk 파일(10) 내의 각 구조는, 프로그램의 동작을 정의하는 하나 이상의 실행코드를 포함하는 코드부(11)와, 상기 apk 파일(10)의 외형을 정의하는 리소스부(12), 그리고 apk 파일(10), 즉 애플리케이션에 대한 각종 정보를 저장하는 매니페스트(Manifest, 13)로 구성될 수 있다.
코드부(11)에는 실행코드를 포함하는, 달빅 가상 머신에 의해 컴파일된 dex 파일, 일 예로 classes.dex 파일이 포함될 수 있다. 안드로이드 애플리케이션의 dex 파일의 구성은 안드로이드 레퍼런스(Reference)에 명문화되어 있으며, 헤더(header)와, string_ids, type_ids, proto_ids, field_ids, method_ids, class_defs 등의 식별자, data, link_data 등을 포함하여 구성될 수 있다. 각 구성의 역할과 형식은 기 정의되어 있는 안드로이드 레퍼런스에 의한다.
리소스부(12)에는 애플리케이션과 관련된 리소스를 포함하는 assets 폴더와 res폴더가 포함될 수 있으며, 컴파일된 resouces.arsc 파일이 포함될 수 있다.
다만, assets나 res 폴더 내부의 리소스 파일 및 폴더의 형태는 컴파일에 의해 바이너리 형태로 변형될 수 있다.
매니페스트(13)의 경우, 도면에서는 AndroidManifest.xml을 예시로 하였으나, 이는 안드로이드 운영체제의 버전에 따라 Manifest.mf, Cert.rsa, cert.sf 파일 등을 더 포함할 수 있다.
각 폴더와 파일을 예시로 들었으나, 이에 한정되는 것은 아니며, 코드부(11)는 프로그램의 동작을 위한 실행코드를 포함하며, 리소스부(12)는 애플리케이션의 동작을 위한 이미지, 비디오, 텍스트 등의 외형을 이루는 요소를 포함하고, 매니페스트(13)는 각종 구성요소의 정보들과 정의들, 즉 애플리케이션의 이름, 버전, 설치 위치, SDK(Software Development Kit)의 버전 등에 관한 정보를 포함한다.
이상으로, 안드로이드 운영체제를 기반으로 생성된 애플리케이션의 구조에 관하여 설명하였다.
본 발명은 상술한 바와 같이 동작을 정의하기 위한 코드부(11)와, 외형을 정의하기 위한 리소스부(12)를 포함하는 애플리케이션에 대한 암호화 처리에 관한 것으로서, 이하에서, 상술한 애플리케이션의 구조를 기반으로 애플리케이션의 역 컴파일을 통한 실행코드추출을 방지하는 암호화 처리 방법 및 이를 위한 장치, 이에 의해 생성되어 기록 매체에 저장된 컴퓨터 프로그램에 대해 구체적으로 설명한다.
도 4는 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 장치의 주요 구성을 도시한 블록도이다.
도 4를 참조하면, 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 장치(100)는, 코드 분리부(110), 암호화부(120), 가상코드 생성부(130), 결합부(140)를 포함하여 구성될 수 있다.
코드 분리부(110)는 애플리케이션의 코드부에서 암호화 대상이 되는 실행코드를 추출하기 위한 구성이다. 암호화되는 실행코드는 앞서 설명한 코드부 내의 파일과 폴더 전체가 될 수 있으며, 그 중 일부가 될 수도 있다.
암호화 대상이 되는 일부, 즉, 암호화 대상이 되는 실행코드와 비암호화 대상이 되는 실행코드는 본 발명을 수행하는 컴퓨터 프로그램의 관리자에 의해 임의로 설정될 수 있다. 이러한 관리자는 애플리케이션의 역 컴파일 방지 암호화 처리를 하고자 하는 애플리케이션의 개발자일 수 있다.
또는, 암호화 대상이 되는 실행코드는, 관리자에 의해 임의로 설정되는 것이 아니라, 기 설정된 기준에 따라 분리될 수 있다. 여기서 기 설정된 기준은, 일반적으로 공개된 오픈소스는 비암호화 대상으로 분류하여, 애플리케이션 개발자에 의해 제작된 실행코드만을 암호화 대상으로 분류하도록 할 수 있다.
아울러, 매니페스트(13)는 애플리케이션 자체의 패키지(Package)에 관한 명칭의 정보를 가지고 있으며, 그 외에도 애플리케이션 내에 각각의 기능을 수행하는 패키지가 존재할 수 있다. 예를 들면, com.test가 애플리케이션 자체의 명칭인 경우, 그 아래에 com.test.activity, com.test.network, com.test.core, com.test,util, org.opensource.network 등과 같은 사용자에 의해 임의로 명칭이 생성된 패키지가 존재할 수 있다. 이러한 패키지에 따라 암호화 대상이 되는 실행코드를 분리할 수 있다.
코드 분리부(110)는 암호화 대상이 컴퓨터 프로그램의 관리자에 의해 임의로 설정되어 있지 않은 경우, 매니페스트(13)에 기록된 애플리케이션의 패키지명 자체(com.test)를 암호화 대상으로 할 수 있다. 이러한 경우 실행코드 전부가 암호화되므로, 암호화된 파일의 용량이 증가하고 복호화를 위한 리소스 사용량이 증가하여 프로그램의 실행에 부담이 될 수 있다.
이에 따라, 암호화 대상을 특정 패키지인 com.test.core로 지정하면, com.test.core라는 패키지에 포함된 실행코드만이 암호화 대상으로 설정될 수 있다.
암호화부(120)는 애플리케이션의 코드부(11)로부터 추출된 실행코드를 암호화하기 위한 구성이다. 코드 분리부(110)에서 암호화 대상이 되는 실행코드를 추출하면, 암호화부(120)에서 추출된 실행코드를 암호화한다. 이때, 암호화는 다양한 암호화 알고리즘을 이용하여 이루어질 수 있으며, 예를 들어, 비밀키(Common key) 기반의 암호화 방식이 될 수 있다.
암호화된 실행코드는, 애플리케이션의 코드부(11)가 아닌 리소스부(12)에 위치하도록 할 수 있다. 이 때, 리소스부(12)에 위치시키기 위하여 암호화된 실행코드를 리소스파일, 예를 들어, 이미지, 비디오, 텍스트 등의 형식으로 보이도록 파일의 형식을 변환할 수 있다. 이러한 이동 과정은 결합부(140)에 의해 수행될 수 있다.
가상코드 생성부(130)는 가상실행코드를 생성하기 위한 구성으로, 가상실행코드는 애플리케이션의 실행 요청이 있는 경우 암호화된 실행코드를 불러오며, 상기 불러온 암호화된 실행코드를 복호화하는 역할을 한다.
가상실행코드는 암호화된 실행코드의 복호화를 위하여 암호화된 실행코드가 리소스부(12)의 어디에 위치하는지에 관한 이동 정보를 포함하여 생성될 수 있다.
또한, 가상실행코드는, 사용자의 단말 장치가, 일반적으로 루팅(Rooting)이라 칭해지는, 운영체제의 해킹을 통해 사용자가 시스템 관리자의 권한으로 동작하는 경우가 발생하였는지 판단하여, 이러한 경우에는 애플리케이션을 실행시키지 않도록 할 수 있다.
즉, 애플리케이션에 대한 실행 요청 발생 시, 운영체제에 대한 해킹이 발생하였다고 판단되면, 리소스부(12)에서 암호화된 실행파일을 불러와 복호화하는 과정을 수행하지 않고, 에러 메시지를 생성하여 애플리케이션이 실행되지 않도록 할 수 있다.
더하여, 암호화부(120)는, 실행코드의 식별자 일부를 임의의 문자열로 대체하는 난독화 처리를 수행할 수 있다. 이러한 식별자 난독화는, 실행코드 내에서 식별자가 위치하는 특정한 부분을 임의의 문자열로 대체하는 것을 말한다. 실행코드에 포함된 식별자는 문자열(String) 식별자, 타입(Type) 식별자, 프로토타입(Prototype) 식별자, 필드(Field) 식별자, 메소드(Method) 식별자, 클래스(Class) 정의와 관련된 배열이 될 수 있다. 만약, 암호화된 실행코드가 복호화되는 경우, 본래의 실행코드 대신 난독화 처리된 임의의 문자열이 나타난다.
결합부(140)는 상기한 바와 같이 암호화된 실행코드를 애플리케이션의 코드부(11)가 아닌 리소스부(12)에 위치하도록 할 수 있다. 또한 생성된 가상실행코드를 코드부(11) 내의 본래 실행코드가 위치하던 부분에 삽입하여 애플리케이션(Apk) 파일이 만들어지도록 할 수 있다.
이러한 과정에 의해, 암호화 처리된 애플리케이션이 생성된다.
상기 생성된 애플리케이션은, 암호화된 실행코드를 포함하는 리소스부(12)와 실행 요청의 발생에 따라 상기 암호화된 실행코드를 리소스부(12)로부터 불러와 복호화하여, 이를 실행시키는 가상실행코드를 포함하는 코드부(11)로 구성된다. 매니페스트(13)는 애플리케이션의 구성 정보와 설정 정보를 포함한다.
또한 코드부(11)는 프로그램의 동작을 정의하는 하나 이상의 실행코드를 포함하며, 암호화된 실행코드 대신에 실행 요청이 있는 경우 상기 암호화된 실행코드를 상기 리소스부로부터 불러와 복호화 후 실행시키기 위한 가상실행코드를 포함한다.
리소스부(12)는 프로그램의 외형을 정의하는 각종 요소들(이미지, 비디오, 오디오, 텍스트 등)을 포함한다.
도 5는 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 방법의 수행 과정을 나타낸 흐름도이다.
도 5을 참조하면, 먼저, 암호화 처리 장치(100)는 애플리케이션의 코드부(11)로부터 암호화 대상이 되는 실행코드를 추출한다(S400). 여기서, 암호화 대상이 되는 실행코드는, 실행코드의 일부일 수 있으며, 기 설정된 기준에 따라 암호화 대상이 되는 실행코드와 비암호화 대상이 되는 실행코드를 분리할 수 있다. 암호화 대상이 되는 실행코드는, 해당 실행코드가 오픈소스코드인지에 따라 결정될 수 있으며, 매니페스트(13)를 참조하여 결정할 수 있다.
다음으로, 암호화 처리 장치(100)는 추출한 실행코드를 암호화한다(S402).
암호화된 실행코드는 코드부(11)에서 리소스부(12)로 이동(S404)되며, 이동을 위해 암호화된 실행코드를 리소스파일의 형식으로 위장할 수 있다.
이후, 상기 추출된 실행코드를 대신하여, 애플리케이션의 실행 요청이 있는 경우 상기 암호화한 실행코드를 상기 리소스부(12)로부터 불러와 복호화 후 실행시키기 위한 가상실행코드를 상기 코드부(11)에 삽입한다(S406).
도 6은 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 방법의 수행 형태를 개략적으로 나타낸 도면이다.
도 6의 (a)는 개발자 단말 장치(300)와 암호화 처리 장치(100)가 통신망(500)을 통해 연결되어, 본 발명을 수행하는 경우를 나타내며, 도 4의 (b)는 애플리케이션을 배포하는 서비스 장치(200)의 일부에 암호화 처리장치(100)가 포함되어 개발자 단말 장치(300) 및 사용자 단말 장치(400)와 통신하는 경우를 나타낸다.
여기서 암호화 처리 장치(100)는 도 4에서 설명한 바와 같이 애플리케이션을 암호화 처리하기 위한 장치로, 본 발명을 수행하기 위한 별도의 장치로 제작될 수 있으나, 일반적으로 본 발명을 수행하는 프로그램을 기록한 기록매체에 저장되어, 특정한 서버 장치에 설치되어 있거나, 본 발명을 수행하는 프로그램을 사용하려는 자의 클라이언트 단말장치에 설치되어 있을 수 있다.
여기서 사용자 단말 장치(400)는 본 발명에 의해 제공되는 통신망(500)에 접속하여 각종 데이터를 송수신할 수 있는 사용자 장치를 의미한다. 여기서, 단말(Terminal)은 UE(User Equipment), MS(Mobile Station), MSS(Mobile Subscriber Station), SS(Subscriber Station), AMS(Advanced Mobile Station), WT(Wireless terminal), MTC(Machine-Type Communication) 장치, M2M(Machine-to-Machine) 장치, D2D 장치(Device-to-Device), 스테이션(STA: Station) 등의 용어에 의해 대체될 수 있다.
다만, 이에 한정되는 것은 아니며 본 발명에서 제공하는 통신망(500)에 연결되어 서비스 장치(200)로부터 애플리케이션을 다운로드하여 실행할 수 있는 장치이면 본 명세서에서 말하는 사용자 단말 장치(400)에 해당할 수 있다. 상기 언급된 유닛들과 동등한 수준의 유닛이 본 발명에 따른 사용자 단말 장치(400)로 사용될 수도 있다.
이러한 사용자 단말 장치(100)는 본 발명에 의해 제공되는 무선 통신망을 통해 음성 또는 데이터 통신을 수행할 수 있으며, 이를 위한 본 발명의 사용자 단말 장치(100)는 정보의 송수신을 위한 브라우저, 프로그램 및 프로토콜을 저장하는 메모리, 각종 프로그램을 실행하여 연산 및 제어하기 위한 마이크로프로세서 등을 구비할 수 있다.
본 발명의 실시 예에 따른 사용자 단말 장치(400)는 다양한 형태로 구현될 수 있다. 예를 들어, 본 명세서에서 기술되는 사용자 단말 장치(400)는 스마트 폰(smart phone), 타블렛 PC(Tablet PC), PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), MP3 Player 등의 무선 통신 기술이 적용되는 이동 단말기가 사용될 수도 있다.
개발자 단말장치(300) 역시 본 발명에 의해 제공되는 통신망(500)에 접속하여 각종 데이터를 송수신할 수 있는 장치로, 사용자 단말 장치(400)와 같이 스마트 폰(smart phone), 타블렛 PC(Tablet PC), PDA(Personal Digital Assistants), PMP(Portable Multimedia Player), MP3 Player 등의 무선 통신 기술이 적용되는 이동 단말기를 포함, 유선 통신 가능하며 프로그램을 제작할 수 있는 개발 환경을 제공하는 다양한 장치가 사용될 수 있다.
서비스 장치(200)는 네트워크를 통하여 사용자에 서비스를 제공하기 위한 구성 요소로, 사용자 단말 장치(400)로부터 요청되는 서비스 패킷을 수신하고 수신한 패킷에 대하여 이를 전송한 사용자 단말 장치(400)에 응답 패킷을 전송할 수 있다.
이러한 서비스 장치(200)는 Web Application Server(WAS), Internet Information Server(IIS) 또는 Apache Tomcat 또는 Nginx를 사용하는 인터넷 상의 공지의 웹 서버(Web Server) 또는 캐시 서버(Cashe Server)일 수 있으며, 이외에도 네트워크 컴퓨팅 환경을 구성하는 장치로 예시한 장치 중 하나가 본 발명의 실시 예에 따른 서버 장치(200)가 될 수 있다.
또한, 서비스 장치(200)는 Linux 또는 Windows와 같은 OS(operating system)을 지원하며, 수신된 제어명령을 실행할 수 있다. 소프트웨어적으로는 C, C++, Java, Visual Basic, Visual C 등과 같은 언어를 통하여 구현되는 프로그램 모듈(Module)을 포함할 수 있다.
이러한 서비스 장치(200)는 개발자 단말 장치(300)로부터 전송된 애플리케이션을 수신하여 저장하고, 사용자 단말 장치(400)의 사용자들에게 저장된 애플리케이션을 배포하여 제공할 수 있다.
암호화 처리 장치(100)는, 이러한 서비스 장치(200) 내에 위치하여 개발자의 요청에 따라 전송된 애플리케이션을 암호화 처리하여 재구성하고, 암호화 처리하여 재구성된 애플리케이션이 사용자 단말 장치(400)에 제공되도록 할 수 있다.
또는, 암호화 처리 장치(100)는, 개발자 단말 장치(300)로부터 애플리케이션을 전송받고, 이를 암호화 처리하여 재구성한 후, 개발자 단말 장치(300)에 암호화 처리하여 재구성된 애플리케이션을 전송할 수 있다. 개발자 단말 장치(300)는, 전송받은 애플리케이션을 보관하거나 배포를 위하여 서비스 장치(200)에 업로드할 수 있다.
또는, 본 발명의 실시에 따른 암호화 처리 방법을 수행하는 프로그램이 기록된 기록 매체가 개발자 단말 장치(300)에 제공되어, 개발자가 직접 본 발명을 수행하여 암호화 처리되어 재구성된 애플리케이션을 제작할 수 있다.
한편, 본 발명의 각 장치에 탑재되는 메모리는 그 장치 내에서 정보를 저장한다. 일 구현예의 경우, 메모리는 컴퓨터로 판독 가능한 매체이다. 일 구현 예에서, 메모리는 휘발성 메모리 유닛 일 수 있으며, 다른 구현예의 경우, 메모리는 비휘발성 메모리 유닛 일 수도 있다. 일 구현예의 경우, 저장장치는 컴퓨터로 판독 가능한 매체이다. 다양한 서로 다른 구현 예에서, 저장장치는 예컨대 하드디스크 장치, 광학디스크 장치, 혹은 어떤 다른 대용량 저장장치를 포함할 수도 있다.
비록 본 명세서와 도면에서는 예시적인 장치 구성을 기술하고 있지만, 본 명세서에서 설명하는 기능적인 동작과 주제의 구현물들은 다른 유형의 디지털 전자 회로로 구현되거나, 본 명세서에서 개시하는 구조 및 그 구조적인 등가물들을 포함하는 컴퓨터 소프트웨어, 펌웨어 혹은 하드웨어로 구현되거나, 이들 중 하나 이상의 결합으로 구현 가능하다. 본 명세서에서 설명하는 주제의 구현물들은 하나 이상의 컴퓨터 프로그램 제품, 다시 말해 본 발명에 따른 장치의 동작을 제어하기 위하여 혹은 이것에 의한 실행을 위하여 유형의 프로그램 저장매체 상에 인코딩된 컴퓨터 프로그램 명령에 관한 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터로 판독 가능한 매체는 기계로 판독 가능한 저장 장치, 기계로 판독 가능한 저장 기판, 메모리 장치, 기계로 판독 가능한 전파형 신호에 영향을 미치는 물질의 조성물 혹은 이들 중 하나 이상의 조합일 수 있다.
이상, 본 발명의 실시 예에 따른 애플리케이션 보호를 위한 암호화 처리 방법에 대해 설명하였다.
상술한 바와 같은 본 발명의 암호화 처리 방법은 컴퓨터 프로그램 명령어와 데이터를 저장하기에 적합한 컴퓨터로 판독 가능한 매체의 형태로 제공될 수도 있다. 이때, 기록매체에 기록된 프로그램은 컴퓨터에서 읽히어 설치되고 실행됨으로써 전술한 기능들을 실행할 수 있다.
여기서, 컴퓨터가 기록매체에 기록된 프로그램을 읽어 들여 프로그램으로 구현된 기능들을 실행시키기 위하여, 전술한 프로그램은 컴퓨터의 프로세서(CPU)가 컴퓨터의 장치 인터페이스(Interface)를 통해 읽힐 수 있는 C, C++, JAVA, 기계어 등의 컴퓨터 언어로 코드화된 코드(Code)를 포함할 수 있다.
이러한 코드는 전술한 기능들을 정의한 함수 등과 관련된 기능적인 코드(Function Code)를 포함할 수 있고, 전술한 기능들을 컴퓨터의 프로세서가 소정의 절차대로 실행시키는데 필요한 실행 절차 관련 제어 코드를 포함할 수도 있다. 또한, 이러한 코드는 전술한 기능들을 컴퓨터의 프로세서가 실행시키는데 필요한 추가 정보나 미디어가 컴퓨터의 내부 또는 외부 메모리의 어느 위치(주소 번지)에서 참조 되어야 하는지에 대한 메모리 참조 관련 코드를 더 포함할 수 있다. 또한, 컴퓨터의 프로세서가 전술한 기능들을 실행시키기 위하여 원격(Remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 통신이 필요한 경우, 코드는 컴퓨터의 프로세서가 컴퓨터의 통신 모듈을 이용하여 원격(Remote)에 있는 어떠한 다른 컴퓨터나 서버 등과 어떻게 통신해야만 하는지, 통신 시 어떠한 정보나 미디어를 송수신해야 하는지 등에 대한 통신 관련 코드를 더 포함할 수도 있다.
이러한, 컴퓨터 프로그램 명령어와 데이터를 저장하기에 적합한 컴퓨터로 판독 가능한 매체는, 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광 기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 및 롬(ROM, Read Only Memory), 램(RAM, Random Access Memory), 플래시 메모리, EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM)과 같은 반도체 메모리를 포함한다. 프로세서와 메모리는 특수 목적의 논리 회로에 의해 보충되거나, 그것에 통합될 수 있다.
또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 본 발명을 구현하기 위한 기능적인(Functional) 프로그램과 이와 관련된 코드 및 코드 세그먼트 등은, 기록매체를 읽어서 프로그램을 실행시키는 컴퓨터의 시스템 환경 등을 고려하여, 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론되거나 변경될 수도 있다.
본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. 개별적인 실시형태의 문맥에서 본 명세서에 기술된 특정한 특징들은 단일 실시형태에서 조합하여 구현될 수도 있다. 반대로, 단일 실시형태의 문맥에서 기술한 다양한 특징들 역시 개별적으로 혹은 어떠한 적절한 하위 조합으로도 복수의 실시형태에서 구현 가능하다. 나아가, 특징들이 특정한 조합으로 동작하고 초기에 그와 같이 청구된 바와 같이 묘사될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징들은 일부 경우에 그 조합으로부터 배제될 수 있으며, 그 청구된 조합은 하위 조합이나 하위 조합의 변형물로 변경될 수 있다.
마찬가지로, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다.
또한, 상술한 실시형태의 다양한 시스템 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안되며, 설명한 프로그램 컴포넌트와 시스템들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징 될 수 있다는 점을 이해하여야 한다.
본 기술한 설명은 본 발명의 최상의 모드를 제시하고 있으며, 본 발명을 설명하기 위하여, 그리고 당업자가 본 발명을 제작 및 이용할 수 있도록 하기 위한 예를 제공하고 있다. 이렇게 작성된 명세서는 그 제시된 구체적인 용어에 본 발명을 제한하는 것이 아니다.
따라서, 상술한 예를 참조하여 본 발명을 상세하게 설명하였지만, 당업자라면 본 발명의 범위를 벗어나지 않으면서도 본 예들에 대한 개조, 변경 및 변형을 가할 수 있다.
따라서 본 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.
본 발명은 애플리케이션의 보호를 위한 암호화 처리 방법에 관한 것으로서, 더욱 상세하게는 역 컴파일 방지를 위하여 애플리케이션의 실행코드를 암호화하고, 리소스 형태로 변환하여 실행코드의 노출과 변조를 방지할 수 있다.
이를 통하여 개발자에게는 실행코드의 보호 및 안정적인 개발환경을 제공하고, 사용자에게는 변조된 프로그램의 배포로 인한 피해가 감소되는 이점을 제공한다.
따라서, 상기의 애플리케이션의 보호를 위한 암호화 처리 방법을 통해 이동통신단말장치 관련 산업과 애플리케이션 연구 및 개발의 발전에 이바지 할 수 있고, 더불어, 본 발명은 시판 또는 영업의 가능성이 충분할 뿐만 아니라 현실적으로 명백하게 실시할 수 있는 정도이므로 산업상 이용가능성이 있다.
100: 암호화 처리 장치
200: 서비스 장치
300: 개발자 단말 장치
400: 사용자 단말 장치

Claims (12)

  1. 애플리케이션의 코드부로부터 암호화 대상이 되는 실행코드를 추출하는 단계;
    상기 추출한 실행코드를 암호화하는 단계;
    암호화한 실행코드를 상기 코드부과는 별도의 영역인 리소스부로 이동시키는 단계; 및
    상기 추출된 실행코드를 대신하여, 애플리케이션의 실행 요청이 있는 경우 상기 암호화한 실행코드를 상기 리소스부로부터 불러와 복호화 후 실행시키기 위한 가상실행코드를 상기 코드부에 삽입하는 단계;
    를 포함하는 애플리케이션 보호를 위한 암호화 처리 방법.
  2. 제1항에 있어서,
    상기 애플리케이션의 코드부에 포함된 실행코드를 기 설정된 기준에 따라 상기 암호화 대상이 되는 실행코드와 비암호화 대상이 되는 실행코드로 분리하는 단계; 를 더 포함하는 것을 특징으로 하는 애플리케이션 보호를 위한 암호화 처리 방법.
  3. 제2항에 있어서,
    상기 분리하는 단계는,
    오픈소스코드 여부를 기반으로 상기 암호화 대상이 되는 코드를 분리하는 것을 특징으로 하는 애플리케이션 보호를 위한 암호화 처리 방법.
  4. 제2항에 있어서,
    상기 분리하는 단계는,
    패키지의 명칭을 기반으로 상기 암호화 대상이 되는 코드를 분리하는 것을 특징으로 하는 애플리케이션 보호를 위한 암호화 처리 방법.
  5. 제1항에 있어서,
    상기 이동시키는 단계는,
    상기 암호화한 실행코드를 리소스 파일의 형태로 변환하여 상기 리소스부에 저장하는 단계인 것을 특징으로 하는 애플리케이션 보호를 위한 암호화 처리 방법.
  6. 제1항에 있어서,
    상기 가상실행코드는,
    운영체제의 해킹 여부를 판단하여, 운영체제가 해킹에 의한 시스템 관리자의 권한으로 동작하는 경우, 애플리케이션 실행 요청 발생시 프로그램 실행 과정을 수행하지 않고 에러 메시지를 생성하도록 하는 기능을 더 포함하도록 하는 것을 특징으로 하는 애플리케이션 보호를 위한 암호화 처리 방법.
  7. 제1항 내지 제6항 중 어느 하나의 항에 기재된 방법을 실행시키도록 구현되어 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  8. 암호화된 실행코드를 포함하는 리소스부;
    실행 요청이 있는 경우 상기 암호화된 실행코드를 상기 리소스부로부터 불러와 복호화 후 실행시키기 위한 가상실행코드를 포함하는 코드부;
    를 포함하는 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  9. 제8항에 있어서,
    상기 암호화된 실행코드는 프로그램의 동작을 정의하는 실행 코드 중 기 설정된 기준에 따라서 암호화대상으로 선택된 실행코드를 암호화한 것이고,
    상기 코드부는,
    상기 컴퓨터 프로그램의 실행 코드 중 상기 암호화대상으로 선택된 실행코드를 제외한 나머지 실행코드를 더 포함하는 것을 특징으로 하는 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  10. 제8항에 있어서,
    상기 가상실행코드는
    운영체제의 해킹 여부를 판단하여, 운영체제가 해킹에 의한 시스템 관리자의 권한으로 동작하는 경우, 애플리케이션 실행 요청 발생시 프로그램 실행 과정을 수행하지 않고 에러 메시지를 생성하기 위한 기능을 더 포함하는 것을 특징으로 하는 컴퓨터 판독 가능한 기록매체에 저장된 컴퓨터 프로그램.
  11. 애플리케이션의 코드부로부터 암호화 대상이 되는 실행코드를 추출하는 코드 분리부;
    상기 추출한 실행코드를 암호화하는 암호화부;
    애플리케이션의 실행 요청이 있는 경우 상기 암호화된 실행코드를 불러오며, 상기 불러온 암호화된 실행코드를 복호화하기 위한 가상실행코드를 생성하는 가상코드 생성부; 및
    상기 암호화된 실행코드를 상기 애플리케이션의 리소스부로 이동시키고, 상기 가상실행코드를 상기 추출된 실행코드 대신에 상기 코드부에 삽입하여 상기 애플리케이션을 재구성하는 결합부;
    를 포함하는 애플리케이션 보호를 위한 암호화 처리 장치.
  12. 제11항에 있어서,
    상기 코드 분리부는,
    상기 애플리케이션의 코드부에 포함된 하나 이상의 실행코드를 기 설정된 기준에 따라 암호화 대상이 되는 실행코드와 비암호화 대상이 되는 실행 코드로 분리하는 것을 특징으로 하는 애플리케이션 보호를 위한 암호화 처리 장치.
KR1020150176005A 2015-12-10 2015-12-10 애플리케이션 보호를 위한 암호화 처리 방법, 이에 의해 생성된 프로그램 및 이를 위한 장치 KR20170069337A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150176005A KR20170069337A (ko) 2015-12-10 2015-12-10 애플리케이션 보호를 위한 암호화 처리 방법, 이에 의해 생성된 프로그램 및 이를 위한 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150176005A KR20170069337A (ko) 2015-12-10 2015-12-10 애플리케이션 보호를 위한 암호화 처리 방법, 이에 의해 생성된 프로그램 및 이를 위한 장치

Publications (1)

Publication Number Publication Date
KR20170069337A true KR20170069337A (ko) 2017-06-21

Family

ID=59281896

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150176005A KR20170069337A (ko) 2015-12-10 2015-12-10 애플리케이션 보호를 위한 암호화 처리 방법, 이에 의해 생성된 프로그램 및 이를 위한 장치

Country Status (1)

Country Link
KR (1) KR20170069337A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101883996B1 (ko) * 2017-11-29 2018-07-31 주식회사 스틸리언 동적 프레임워크를 이용한 iOS 애플리케이션의 문자열 복호화 방법
KR101883997B1 (ko) * 2017-11-29 2018-08-02 주식회사 스틸리언 의존 관계형 위변조 무결성 체크를 이용한 암호화 처리장치 및 방법
CN112699388A (zh) * 2020-12-28 2021-04-23 维沃移动通信有限公司 加密方法及装置
KR20220032319A (ko) 2020-09-07 2022-03-15 정하운 날림 방지 돗자리와 보냉 기능이 포함된 돗자리 가방
KR20220141490A (ko) * 2021-04-13 2022-10-20 네이버클라우드 주식회사 바이너리 파일 재구성 방법 및 그 장치

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101883996B1 (ko) * 2017-11-29 2018-07-31 주식회사 스틸리언 동적 프레임워크를 이용한 iOS 애플리케이션의 문자열 복호화 방법
KR101883997B1 (ko) * 2017-11-29 2018-08-02 주식회사 스틸리언 의존 관계형 위변조 무결성 체크를 이용한 암호화 처리장치 및 방법
KR20220032319A (ko) 2020-09-07 2022-03-15 정하운 날림 방지 돗자리와 보냉 기능이 포함된 돗자리 가방
CN112699388A (zh) * 2020-12-28 2021-04-23 维沃移动通信有限公司 加密方法及装置
CN112699388B (zh) * 2020-12-28 2022-10-11 维沃移动通信有限公司 加密方法及装置
KR20220141490A (ko) * 2021-04-13 2022-10-20 네이버클라우드 주식회사 바이너리 파일 재구성 방법 및 그 장치

Similar Documents

Publication Publication Date Title
RU2542930C2 (ru) Защищенная загрузка и конфигурирование подсистемы с нелокального запоминающего устройства
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
US20160203087A1 (en) Method for providing security for common intermediate language-based program
CN111143869B (zh) 应用程序包处理方法、装置、电子设备及存储介质
US20150095652A1 (en) Encryption and decryption processing method, apparatus, and device
KR20170069337A (ko) 애플리케이션 보호를 위한 암호화 처리 방법, 이에 의해 생성된 프로그램 및 이를 위한 장치
CN107679370B (zh) 一种设备标识生成方法及装置
CN102087605A (zh) 一种基于android平台应用安装控制方法及系统
CN106415491B (zh) 一种应用保护方法、服务器以及终端
CN107870793B (zh) 一种应用程序中加载so文件的方法及装置
KR102001046B1 (ko) 공통 중간 언어를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법
KR101734663B1 (ko) 안드로이드 어플리케이션의 역공학 방지 방법 및 이를 수행하는 장치
KR20140139392A (ko) 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치
KR101473656B1 (ko) 모바일 데이터 보안 장치 및 방법
CN112115430A (zh) 一种apk的加固方法、电子设备及存储介质
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
JP2008040853A (ja) アプリケーション実行方法およびアプリケーション実行装置
CN109543366B (zh) 一种源代码加密方法及其装置和系统
KR101863325B1 (ko) 역공학 방지 방법 및 장치
KR101590351B1 (ko) 분산 네트워크 프로토콜 기반의 데이터 전송 장치 및 그의 데이터 암호화 방법
KR101566143B1 (ko) 사용자 단말기 및 상기 사용자 단말기의 주변기기를 이용한 핵심코드 보호 방법
CN112363771B (zh) 应用程序的处理方法及相关产品
US20160239669A1 (en) User Terminal And Method For Protecting Core Codes Of Applications Using The Same
CN110780884B (zh) 一种信息处理方法、装置及设备
KR102326100B1 (ko) 안전한 안드로이드 앱 생성 및 안드로이드 플랫폼에서의 앱 설치/실행을 위한 시스템 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application