KR20160118920A - Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체 - Google Patents

Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체 Download PDF

Info

Publication number
KR20160118920A
KR20160118920A KR1020160007520A KR20160007520A KR20160118920A KR 20160118920 A KR20160118920 A KR 20160118920A KR 1020160007520 A KR1020160007520 A KR 1020160007520A KR 20160007520 A KR20160007520 A KR 20160007520A KR 20160118920 A KR20160118920 A KR 20160118920A
Authority
KR
South Korea
Prior art keywords
file
dex
dex file
native library
apk
Prior art date
Application number
KR1020160007520A
Other languages
English (en)
Other versions
KR102433011B1 (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 홍동철
Publication of KR20160118920A publication Critical patent/KR20160118920A/ko
Application granted granted Critical
Publication of KR102433011B1 publication Critical patent/KR102433011B1/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
    • 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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

APK 파일 보호 시스템에서 수행되는, DEX 파일 및 네이티브 라이브러리를 난독화 및 암호화 하여 APK 파일을 보호하는 방법에 있어서, (a) 상기 DEX 파일의 각 메소드 내에 디컴파일링을 방해하기 위한 명령어를 추가하는 DEX 파일 분석 툴 방지 방법을 적용하는 단계; (b) 상기 네이티브 라이브러리를 복호화하는 복호화키를 얻기 위한 코드를 상기 APK 파일에 삽입 하는 단계; (c) 상기 네이티브 라이브러리를 암호화하여 상기 APK 파일 내의 읽기 권한이 있는 폴더에 저장하는 단계; (d) 어플리케이션의 실행 시 정상 동작할 수 있도록, 상기 APK 파일 내의 상기 암호화된 네이티브 라이브러리를 복호화하여 상기 어플리케이션에 대해 쓰기 권한이 있는 폴더에 저장하고, 상기 DEX 파일 내의 상기 네이티브 라이브러리의 호출 구문에서 상기 네이티브 라이브러리의 경로를 변경하는 단계; 및 (e) 상기 DEX 파일을 암호화하여 상기 APK 파일 내의 읽기 권한이 있는 폴더에 저장하고, 암호화되지 않은 상기 DEX 파일을 삭제하고, 임시 DEX 파일을 생성 하고, 상기 임시 DEX 파일에 상기 암호화된 DEX 파일을 복호화하기 위한 코드를 삽입하는 단계를 포함한다.

Description

APK 파일 보호 방법, 이를 수행하는 APK 파일 보호 시스템, 및 이를 저장하는 기록매체{METHOD OF APK FILE PROTECTION, APK FILE PROTECTION SYSTEM PERFORMING THE SAME, AND STORAGE MEDIUM STORING THE SAME}
본 발명은 APK 파일 보호 기술에 관한 것으로, 보다 상세하게는 안드로이드의 APK 파일 내에서 DEX 파일 및 네이티브 라이브러리를 역컴파일 하거나 분석하는 것을 어렵게 하기 위하여 난독화 및 암호화 하고, 해당 어플리케이션이 정상적으로 설치되고 실행되도록 하기 위한 APK 파일 보호 방법, 이를 수행하는 APK 파일 보호 시스템, 및 이를 저장하는 기록매체에 관한 것이다.
안드로이드 어플리케이션의 설치 및 실행파일인 APK는 ZIP 형식의 압축파일로 구성되어 있다. 해당 파일의 압축을 해제하면 실행 코드가 들어있는 Dalvik에서 구동되는 DEX(Dalvik Executable Format)인 classes.dex 파일 그리고 libs 폴더 내에 네이티브 라이브러리(Native Library)를 추출할 수 있다.
도 1에 도시된 바와 같이 DEX 파일은 인터넷상에 공개되어 있는 무료 툴로 쉽게 역컴파일 및 분석이 가능하고, 도 2에 도시된 바와 같이 네이티브 라이브러리(Native Lirary)도 공개 툴로 역컴파일 및 분석이 가능하다.
이를 보완하기 위해서 DEX 파일은 소스코드 수준에서 함수와 변수 이름 및 코드의 흐름을 변경하거나 네이티브 라이브러리(Native Library)와의 혼합 기술을 이용하여 보호하는 기법이 발전하고 있다. 하지만 안드로이드 APK 파일에서의 DEX 파일 뿐만 아니라 네이티브 라이브러리까지 분석을 방지하도록 보호해주는 기술에 대한 발전은 미흡한 실정이다.
한국공개특허 제10-2014-0029562호는 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법에 관한 것으로서, 안드로이드 어플리케이션을 암호화시켜 배포한 후 실행 시 복호화 함으로써 안드로이드 어플리케이션에 대한 디컴파일을 방지하는 방법을 제공하지만, 안드로이드 APK 파일에서 DEX 파일뿐만 아니라 네이티브 라이브러리까지의 분석을 방지하는 기술은 제공하고 있지 못하므로, 종래기술에 존재하는 문제는 여전히 남아 있다.
한국공개특허 제10-2014-0029562호
본 발명의 목적은 DEX 파일 및 네이티브 라이브러리 파일을 난독화 및 암호화하여 역컴파일과 같은 역공학에 의한 분석이 어렵도록 하는 APK 파일 보호 방법을 제공하는데 있다.
본 발명의 목적은 어플리케이션의 실행 시 외부 서버나 혹은 로컬상에서 키를 얻어와 암호화된 DEX 파일 및 네이티브 라이브러리 파일을 복호화하고 메모리에 로딩하여 어플리케이션이 정상적으로 실행될 수 있도록 하는 APK 파일 보호 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 제1 측면은, APK 파일 보호 시스템에서 수행되는, DEX 파일 및 네이티브 라이브러리를 난독화 및 암호화 하여 APK 파일을 보호하는 방법으로서, (a) 상기 DEX 파일의 각 메소드 내에 디컴파일링을 방해하기 위한 명령어를 추가하는 DEX 파일 분석 툴 방지 방법을 적용하는 단계; (b) 상기 네이티브 라이브러리를 복호화하는 복호화키를 얻기 위한 코드를 상기 APK 파일에 삽입 하는 단계; (c) 상기 네이티브 라이브러리를 암호화하여 상기 APK 파일 내의 읽기 권한이 있는 폴더에 저장하는 단계; (d) 어플리케이션의 실행 시 정상 동작할 수 있도록, 상기 APK 파일 내의 상기 암호화된 네이티브 라이브러리를 복호화하여 상기 어플리케이션에 대해 쓰기 권한이 있는 폴더에 저장하고, 상기 DEX 파일 내의 상기 네이티브 라이브러리의 호출 구문에서 상기 네이티브 라이브러리의 경로를 변경하는 단계; 및 (e) 상기 DEX 파일을 암호화하여 상기 APK 파일 내의 읽기 권한이 있는 폴더에 저장하고, 암호화되지 않은 상기 DEX 파일을 삭제하고, 임시 DEX 파일을 생성 하고, 상기 임시 DEX 파일에 상기 암호화된 DEX 파일을 복호화하기 위한 코드를 삽입하는 단계를 포함한다.
바람직하게, 상기 생성된 임시 DEX 파일은 안드로이드에서 제공하는 DexClassLoader 함수를 이용하여 상기 암호화된 DEX 파일을 복호화하고 복호화된 DEX 파일을 메모리에 로딩하기 위한 코드를 포함할 수 있다.
바람직하게, 상기 (a) 단계 이전에 상기 APK 파일에서 상기 DEX 파일 및 상기 네이티브 라이브러리를 추출하는 단계를 더 포함할 수 있다.
바람직하게, 상기 (a) 단계는 상기 DEX 파일의 클래스 내의 메소드를 분할하는 단계; 상기 분할된 메소드의 크기를 계산하는 단계; 상기 분할된 메소드의 위치를 변경하는 단계; 상기 분할되고 위치가 변경된 메소드가 정상적으로 실행되도록 각 메소드의 종료 위치에 GOTO 명령어를 이용하여 실행될 다음 메소드의 위치를 지정하는 단계를 포함할 수 있다.
바람직하게, 상기 (b) 단계는 상기 복호화키를 외부 서버로부터 받아오기 위한 코드를 상기 APK 파일에 삽입하는 단계; 또는 로컬상에서 지정된 파일형식에 따라 상기 복호화키를 얻기 위한 코드를 상기 APK 파일에 삽입하는 단계를 포함할 수 있다.
바람직하게, 상기 (d) 단계는 상기 어플리케이션의 실행 시 정상 동작할 수 있도록, 상기 암호화된 네이티브 라이브러리를 복호화하기 위한 코드를 상기 APK 파일에 삽입 하는 단계; 상기 복호화하기 위한 코드를 통해 복호화된 네이티브 라이브러리를 상기 어플리케이션에 대해 쓰기권한이 있는 /data/data/패키지명/ 의 하단 폴더에 저장하기 위한 코드를 상기 APK 파일에 삽입 하는 단계; 상기 DEX 파일에서 상기 네이티브 라이브러리의 호출 구문을 검색하는 단계; 상기 호출 구문에서 상기 네이티브 라이브러리의 호출 경로를 상기 어플리케이션의 실행 시 복호화되어 상기 쓰기 권한이 있는 폴더에 저장될 네이티브 라이브러리의 경로로 수정하는 단계; 및 상기 어플리케이션의 종료 시, 상기 복호화된 네이티브 라이브러리를 삭제하기 위한 코드를 상기 APK 파일에 삽입하는 단계를 포함할 수 있다.
바람직하게, 상기 네이티브 라이브러리 호출 구문은 System.loadLibrary 또는 System.load 에 해당할 수 있다.
바람직하게, 변경된 APK 파일을 압축하고 서명하는 단계를 더 포함할 수 있다.
상기 목적을 달성하기 위한 본 발명의 제2 측면은, DEX 파일 및 네이티브 라이브러리를 난독화 및 암호화 하여 APK 파일을 보호하는 방법을 수행하는 APK 파일 보호 시스템으로서, 상기 DEX 파일의 각 메소드 내에 디컴파일링을 방해하기 위한 명령어를 추가하는 DEX 파일 분석 툴 방지 방법을 적용하는 DEX 파일 분석 툴 방지 방법 적용부; 상기 네이티브 라이브러리를 복호화하는 복호화키를 얻기 위한 코드를 상기 APK 파일에 삽입 하는 복호화키 획득부; 상기 네이티브 라이브러리를 암호화하여 상기 APK 파일 내의 읽기 권한이 있는 폴더에 저장하는 암호화부; 어플리케이션의 실행 시 정상 동작할 수 있도록, 상기 APK 파일 내의 상기 암호화된 네이티브 라이브러리를 복호화하여 상기 어플리케이션에 대해 쓰기 권한이 있는 폴더에 저장하는 복호화부;
상기 DEX 파일 내의 상기 네이티브 라이브러리의 호출 구문에서 상기 네이티브 라이브러리의 경로를 변경하는 경로 변경부; 및 상기 DEX 파일을 암호화하여 상기 APK 파일 내의 읽기 권한이 있는 폴더에 저장하고, 암호화되지 않은 상기 DEX 파일을 삭제하고, 임시 DEX 파일을 생성 하고, 상기 임시 DEX 파일에 상기 암호화된 DEX 파일을 복호화하기 위한 코드를 삽입하는 임시 DEX 파일 생성부를 포함한다.
바람직하게, 상기 APK 파일에서 상기 DEX 파일 및 상기 네이티브 라이브러리를 추출하는 추출부를 더 포함할 수 있다.
바람직하게, 변경된 APK 파일을 압축하고 서명하는 서명부를 더 포함할 수 있다.
상기한 바와 같이 본 발명에 의하면, 안드로이드 APK 파일내의 DEX 파일과 네이티브 라이브러리가 역컴파일(De-compile) 및 역공학(Reverse Engineering)을 이용하여 분석이 어렵도록 난독화 및 암호화는 것을 통하여 APK 파일, 즉, APK 파일 내의 소스코드를 보호할 수 있는 효과가 있고, 해당 어플리케이션이 정상적으로 설치되고 실행될 수 있는 효과가 있다.
도 1은 안드로이드 내부의 DEX 파일이 역컴파일 되는 과정의 예시도이다.
도 2는 SO 네이티브 라이브러리가 역컴파일 되는 과정의 예시도이다.
도 3은 본 발명의 바람직한 실시예에 따른 APK 파일 보호 시스템의 블록도이다.
도 4는 APK 파일 보호 시스템에서 수행되는 APK 파일 보호 방법에 대한 흐름도이다.
도 5는 DEX 파일 분석 툴 방지 방법에 대한 흐름도이다.
도 6은 DEX 파일 분석 툴 방지 방법을 적용한 DEX 파일의 예시이다.
도 7은 DEX 파일의 변경 및 저장에 대한 도면이다.
도 8은 DEX 파일의 복원 과정에 대한 도면이다.
도 9는 본 발명의 일 실시예에 따른 APK 파일 보호 방법이 적용되기 전과 후의 APK 파일의 예시이다.
이하, 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다. "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 “포함한다(comprises)" 및/또는 “포함하는(comprising)"은 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
또한, 본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 3은 본 발명의 바람직한 실시예에 따른 APK 파일 보호 시스템의 블록도이다.
도 3을 참조하면, APK 파일 보호 시스템(300)은 서버, 장치, 또는 단말로 구현될 수 있으며, DEX 파일 분석 툴 방지 방법 적용부(310), 복호화키 획득부(320), 암호화부(330), 복호화부(340), 경로 변경부(350), 임시 DEX 파일 생성부(360) 및 제어부(370)를 포함한다. 일 실시예에서, 도면에 도시되지 않았지만, APK 파일 보호 시스템(300)은 추출부 및 서명부를 더 포함할 수 있다.
추출부는 APK 파일에서 DEX(Dalvik-executable) 파일 및 네이티브 라이브러리(native library)를 추출한다. 여기에서, DEX 파일은 classes.dex 에 해당할 수 있고, 네이티브 라이브러리는 SO 또는 dll과 같은 다양한 확장자를 가질 수 있다. 바람직하게, 추출부는 APK 파일의 압축을 해제하고, DEX 파일을 추출하며, 라이브러리 저장 폴더인 libs 내에 저장되어 있는 네이티브 라이브러리를 추출할 수 있다.
DEX 파일 분석 툴 방지 방법 적용부(310)는 DEX 파일에 DEX 파일 분석 툴 방지 방법을 적용하고, 여기에서, DEX 파일 분석 툴 방지 방법은 DEX 파일의 각 메소드 내에 디컴파일링을 방해하기 위한 명령어를 추가하고 이를 통하여 DEX 파일을 난독화하는 것에 해당한다.
바람직하게, DEX 파일 분석 툴 방지 방법 적용부(310)는 DEX 파일의 클래스(Class) 내의 메소드(Method)를 분할하고, 분할된 메소드의 크기를 계산하고, 분할된 메소드의 위치를 변경하고, 분할되고 위치가 변경된 메소드가 정상적으로 실행되도록 각 메소드의 종료 위치에 GOTO 명령어를 이용하여 다음에 실행될 메소드의 위치를 지정할 수 있다. 또한, 계산된 메소드의 크기는 저장될 수 있고, 메소드의 위치는 알기 어렵도록 섞어서 변경할 수 있다.
복호화키 획득부(320)는 네이티브 라이브러리를 복호화하는 복호화키를 얻기 위한 코드를 APK 파일에 삽입한다. 바람직하게, 복호화키 획득부(320)는 복호화키를 Diffie Hellman key exchange, RSA(Rivest Shamir Adleman), 또는 ECC(Elliptic curve cryptography) 공개키 기반 암호를 이용하는 외부 서버로부터 받아오기 위한 코드를 APK 파일에 삽입하거나, 또는 로컬(Local)상에서 지정된 파일형식(file format)에 따라 복호화키를 얻기 위한 코드를 APK 파일에 삽입할 수 있다. 즉, 복호화키는 Diffie–Hellman key exchange 또는 RSA(Rivest Shamir Adleman)등을 이용한 암호 통신을 통해 외부 서버에서 가져오거나 로컬상의 파일이나 데이터베이스에 저장 된 것을 가져올 수 있다.
바람직하게, 복호화키 획득부(320)는 외부 서버에서 공개키 기반의 통신을 이용하여 암호화키를 가져올 수 있고, 이 경우 외부 서버에 비밀키가 있기 때문에 복호화하지 못할 만큼 안전하지만 느리고 불안정하다는 단점이 있다. 또는, 복호화키 획득부(320)는 로컬상에서 복호화키를 얻을 수 있고, 이 경우 APK 파일에 비밀키 값이 고정되어 저장되 있으므로 안전하지 못하다는 단점이 있어, 키값을 분산하여 난독화 처리하여 넣는 방식과 같은 추가 보안수단이 이용될 수 있다.
암호화부(330)는 네이티브 라이브러리를 암호화하여 APK 파일 내의 읽기 권한이 있는 폴더, 즉, 안드로이드 운영 체제 내의 읽기 권한이 있는 폴더에 저장한다. 여기에서, 읽기 권한이 있는 폴더는 asset에 해당할 수 있다.
복호화부(340)는 어플리케이션의 실행 시 정상 동작할 수 있도록, APK 파일 내의 암호화된 네이티브 라이브러리를 복호화하여 어플리케이션에 대한 쓰기 권한이 있는 폴더에 저장한다. 보다 구체적으로, 복호화부(340)는 어플리케이션의 실행 시 정상 동작할 수 있도록, 암호화된 네이티브 라이브러리를 복호화하기 위한 코드를 APK 파일에 삽입하고, 복호화하기 위한 코드를 통해 복호화된 네이티브 라이브러리를 어플리케이션에 대해 쓰기 권한이 있는 “data/data/패키지명/”의 하단 폴더에 저장하기 위한 코드를 APK 파일에 삽입할 수 있다. 즉, 복호화부(340)는 어플리케이션의 실행 시 정상 동작할 수 있도록, 복호화된 네이티브 라이브러리를 안드로이드 운영체제 내에서 어플리케이션에 대해 쓰기 권한이 있는 폴더, 예를 들어, “/data/data/패키지명/cache” 또는 “/data/local/tmp”에 저장하는 코드를 APK 파일에 삽입할 수 있다. 또한, 어플리케이션의 종료 시, 복호화부(340)는 복호화된 네이티브 라이브러리를 삭제하기 위한 코드를 APK 파일에 삽입할 수 있다.
경로 변경부(350)는 DEX 파일 내의 네이티브 라이브러리 호출 구문에서 네이티브 라이브러리의 경로를 변경한다. 보다 구체적으로, 경로 변경부(350)는 DEX 파일에서 네이티브 라이브러리 호출 구문을 검색하고, 호출 구문에서 네이티브 라이브러리의 호출 경로를 어플리케이션의 실행 시 복호화되어 쓰기 권한이 있는 폴더에 저장될 네이티브 라이브러리의 경로로 수정한다. 여기에서, 네이티브 라이브러리 호출 구문은 System.loadLibrary 또는 System.load에 해당할 수 있고, System.loadLibrary는 자동으로 경로가 설정되는 것이며, System.load는 명시적으로 경로를 지정할 수 있는 것이다.
어플리케이션의 실행 시 정상 동작할 수 있도록 암호화된 네이티브 라이브러리를 복호화하여 임시 폴더에 저장하고, 라이브러리 호출 구문을 복호화되어 저장된 폴더의 경로로 변경하면, 어플리케이션은 복호화된 네이티브 라이브러리를 호출하여 정상적으로 실행될 수 있다.
임시 DEX 파일 생성부(360)는 DEX 파일을 암호화하여 APK 파일 내의 읽기 권한이 있는 폴더에 저장하고, 암호화되지 않은 DEX 파일을 삭제하고, 임시 DEX 파일을 생성하고, 임시 DEX 파일에 암호화된 DEX 파일을 복호화하기 위한 코드를 삽입한다. 여기에서, 임시 DEX 파일은 안드로이드에서 제공하는 DexClassLoader 함수를 이용하여 암호화된 DEX 파일을 복호화하고 메모리에 로딩하기 위한 코드를 포함한다. 바람직하게, 임시 DEX 파일 생성부(360)는 압축이 해제된 APK 파일에 있는 classes.dex 파일을 암호화 하여 asset 폴더에 저장하고, 압축이 해제된 APK 파일에 있는 암호화되지 않은 classes.dex 파일을 삭제하고, 암호화되어 asset 폴더에 저장된 classes.dex 파일을 가져오는 임시 clasees.dex 파일을 생성하여 삭제된 classes.dex 파일의 위치에 넣을 수 있다. 즉, 임시 DEX 파일 생성부(360)는 삭제된 DEX 파일의 위치에서 암호화되어 저장된 DEX 파일을 복호화하기 위한 코드를 임시 DEX 파일에 삽입할 수 있다.
이를 통하여, 어플리케이션의 실행 시, 새롭게 생성된 임시 DEX 파일이 암호화된 DEX 파일을 복호화 하고 메모리에 로딩하여 어플리케이션이 정상적으로 실행될 수 있다.
서명부는 난독화 및 암호화된 DEX 파일 및 네이티브 라이브러리를 포함하는 변경된 APK 파일을 압축하고 서명한다.
제어부(370)는 DEX 파일 분석 툴 방지 방법 적용부(310), 복호화키 획득부(320), 암호화부(330), 복호화부(340), 경로 변경부(350) 및 임시 DEX 파일 생성부(360)의 동작 및 데이터의 흐름을 제어한다.
도 4는 APK 파일 보호 시스템에서 수행되는 APK 파일 보호 방법에 대한 흐름도 이고, 도 5는 DEX 파일 분석 툴 방지 방법에 대한 흐름도이다. 이하에서 설명되는 본 방법에 의하면, APK 파일, 구체적으로 APK 파일 내의 소스코드가 보호될 수 있다.
추출부를 통하여 APK 파일로부터 DEX 파일 및 네이티브 라이브러리를 추출한 후, DEX 파일 분석 툴 방지 방법 적용부(310)는 추출된 DEX 파일에 DEX 파일 분석 툴 방지 방법을 적용한다(단계 S410). 여기에서, DEX 파일 분석 툴 방지 방법은 DEX 파일을 난독화하기 위하여, DEX 파일의 각 메소드 내에 디컴파일링을 방해하기 위한 명령어를 추가하는 것이다.
보다 구체적으로, 도 5를 참조하면, DEX 파일 분석 툴 방지 방법 적용부(310)는 DEX 파일의 각 메소드 내에 제1 명령어를 삽입한다(단계 S411). 여기에서, 제1 명령어는 각 메소드의 실행에 영향을 주지 않으며, NOP(No operation) 명령어에 해당할 수 있다.
DEX 파일 분석 툴 방지 방법 적용부(310)는 제1 명령어를 실행하고(단계 S412), 제1 명령어의 실행으로 생성된 방해공간에 디컴파일링을 방해하기 위한 방해코드인 제2 명령어를 삽입한다(단계 S413). 바람직하게, 제1 명령어가 포함된 DEX 파일이 실행되면 소정의 공간이 생성되고, 해당 소정의 공간은 방해코드인 제2 명령어가 삽입되는 공간에 해당한다. 여기에서, 제2 명령어는 난독화를 위한 하나 이상의 명령어 군일 수 있고, 디컴파일러들이 해독하지 못하는 명령어이므로, 이와 같은 DEX 파일의 난독화 과정을 통하여 디컴파일러를 교란시킬 수 있다.
DEX 파일 분석 툴 방지 방법 적용부(310)는 DEX 파일에 있는 각 메소드를 분할하고(단계 S414), 각 메소드의 크기를 계산하고(단계 S415), 각 메소드의 위치를 변경한다(단계 S416). 난독화를 위하여 복수의 메소드들 각각이 분할되어 위치가 변경되며, 예를 들어, 메소드 A는 메소드 A` 및 메소드 A``의 하위 메소드들로 분할될 수 있고, 하나의 메소드가 복수의 하위 메소드들로 분할되어 위치가 변경되면, 실행 파일 내의 해당 메소드의 물리적 위치가 변경되어, 실행 코드가 변경되게 된다. 이를 통하여 분석 툴 또는 분석자가 정상적인 프로그램의 흐름을 알아내기 어렵게 만들 수 있다.
DEX 파일 분석 툴 방지 방법 적용부(310)는 각 메소드에 이동 명령어를 삽입한다(단계 S416). 이는 복수의 메소드들의 위치를 메소드의 길이 계산을 이용하여 진행하고, 메소드가 끝날 때마다 이동 명령어, 예를 들어, goto 명령어를 넣어 어플리케이션의 실행이 정상적으로 진행되도록 하기 위한 것이다.
예를 들어, DEX 파일 분석 툴 방지 방법 적용부(310)는 도 6에 도시된 바와 같이 DEX 파일에 있는 메소드를 난독화할 수 있다. 도 6을 참조하면, 원래의 DEX 파일은 메소드1, 메소드2, 및 메소드3이 순차적으로 실행되는 것인데, DEX 파일 분석 툴 방지 방법 적용부(310)를 통하여 메소드1, 메소드2, 및 메소드3이 각각 분할되고, 분할한 각 메소드의 위치가 변경되고, 각 메소드에 이동 명령어가 삽입되어, 각 메소드의 실행순서가 메소드1, 메소드3, 및 메소드2로 변경될 수 있으며, 이를 통하여 DEX 파일의 난독화를 실현할 수 있다.
복호화키 획득부(320)는 네이티브 라이브러리를 복호화하는 복호화키를 얻기 위한 코드를 APK 파일에 삽입한다(단계 S420). 바람직하게, 복호화키 획득부(320)는 외부 서버 또는 로컬상의 파일에서 암호화된 DEX 파일과 네이티브 라이브러리를 복호화할 수 있는 복호화키를 가져오도록 하는 코드 또는 라이브러리를 APK 파일 내에 삽입할 수 있다. 또한, 외부 서버와 통신을 하지 않을 시에는 임의의 파일 또는 파일들을 지정해둔 포맷을 따라 구성한 후, 해당 포맷에 따라 비밀키를 읽고 복호화할 수 있다.
암호화부(330)는 네이티브 라이브러리를 암호화하여 APK 파일 내의 읽기 권한이 있는 폴더에 저장한다(단계 S430). 여기에서, 읽기 권한이 있는 폴더는 안드로이드 리눅스 파일 시스템에서의 read 권한이 있는 폴더에 해당하며, 바람직하게, 암호화된 네이티브 라이브러리는 APK 파일 내의 asset 디렉토리에 저장될 수 있다.
복호화부(340)는 어플리케이션의 실행 시 정상 동작할 수 있도록, 암호화된 네이티브 라이브러리를 복호화하여 어플리케이션에 대해 쓰기 권한이 있는 폴더에 저장하고, 경로 변경부(350)는 DEX 파일 내의 네이티브 라이브러리 호출 구문에서 네이티브 라이브러리의 경로를 변경한다(단계 S440).
바람직하게, 복호화부(340)가 APK 파일 내의 읽기 권한이 있는 폴더에 접근하여 외부 서버 또는 로컬상의 파일에서 암호화된 네이티브 라이브러리 파일을 복호화할 수 있는 복호화키를 받아 복원하는 라이브러리를 넣으면, 경로 변경부(350)는 이를 로딩할 수 있도록 DEX(classes.dex) 파일에서 JNI(Java Native Interface)를 이용한 라이브러리 호출 구문을 검색하고, DEX 파일 내의 네이티브 라이브러리 호출 구문을 수정할 수 있다. 여기에서, 복원하는 라이브러리는 어플리케이션의 실행 시 암호화된 네이티브 라이브러리를 복원할 수 있는 복호화 라이브러리에 해당하며, 예를 들어, jar 확장자의 라이브러리 혹은 네이티브 라이브러리일 수 있다.
또한, 경로 변경부(350)는 안드로이드에서 제공하는 네이티브 라이브러리 호출 함수 System.load를 이용하여 라이브러리 호출 경로를 어플리케이션의 실행 시 복호화되어 저장되는 네이티브 라이브러리의 절대 경로로 수정할 수 있다.
임시 DEX 파일 생성부(360)는 DEX 파일을 암호화하여 APK 파일 내의 읽기 권한이 있는 폴더에 저장하고, 암호화되지 않은 DEX 파일을 삭제하고, 임시 DEX 파일을 생성하고, 임시 DEX 파일에 암호화된 DEX 파일을 복호화하기 위한 코드를 삽입한다(단계 S450). 바람직하게, 임시 DEX 파일 생성부(360)는 도 7에 도시된 바와 같이, DEX 파일을 암호화 하여 APK 파일 내의 읽기 가능한 폴더에 저장하고, 도 8에 도시된 바와 같이, APK 파일 내의 읽기 권한이 있는 폴더에 접근하고 외부 서버 또는 로컬상의 파일에서 암호화된 DEX 파일을 복호화할 수 있는 복호화키를 받아 복원하는 라이브러리를 넣고 정상적으로 실행되도록 메모리에 로딩할 수 있는 임시 DEX 파일을 생성할 수 있다. 따라서, 임시 DEX 파일에는 어플리케이션에 대한 중요 실행 정보가 들어있지 않다.
일 실시예에서, 본 발명에 따라 보호된 APK 파일이 단말기에서 실행되면, 먼저, 어플리케이션이 구동되면서 APK 파일은 외부 서버 또는 로컬 파일에서 암호화된 DEX 파일과 네이티브 라이브러리를 복호할 수 있는 복호화키를 가져오고 무결성 검사를 하고, APK 파일 내부의 임시 DEX 파일이 읽기 권한이 있는 폴더에 있는 DEX 파일을 읽어서 복호화하고 이를 메모리에 로딩하여 정상 동작 하도록 한다. 다음으로, APK 파일은 APK 파일 내부의 읽기 권한이 있는 폴더에 있는 네이티브 라이브러리를 복호화할 수 있는 복호화키를 이용하여 네이티브 라이브러리를 복호화하여 임시 폴더에 저장하고 로딩한다.
도 9는 본 발명의 일 실시예에 따른 APK 파일 보호 방법이 적용되기 전과 후의 APK 파일의 예시이다.
도 9의 (a)를 참조하면, APK 파일 보호 방법이 적용되기 전의 APK 파일의 DEX 파일은 실행코드가 포함되어 있어 사이즈가 503KB인 반면, 도 9의 (b)를 참조하면, APK 파일 보호 방법이 적용된 APK 파일의 DEX 파일은 사이즈가 6KB로 줄어든 것을 볼 수 있다. 즉, 본 발명에 따른 APK 파일 보호 방법이 적용된 APK 파일의 DEX 파일에는 중요 실행코드가 들어있지 않을 것을 알 수 있다.
한편, 본 발명의 일 실시예에 따른 APK 보호 방법은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
예컨대, 컴퓨터가 읽을 수 있는 기록매체로는 롬(ROM), 램(RAM), 시디-롬(CD-ROM), 자기 테이프, 하드디스크, 플로피디스크, 이동식 저장장치, 비휘발성메모리(Flash Memory), 광 데이터 저장장치 등이 있다.
또한, 컴퓨터로 읽을 수 있는 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
전술한 본 발명에 따른 APK 파일 보호 방법, 이를 수행하는 APK 파일 보호 시스템, 및 이를 저장하는 기록매체에 대한 바람직한 실시예에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 특허청구범위와 발명의 상세한 설명 및 첨부한 도면의 범위 안에서 여러가지로 변형하여 실시하는 것이 가능하고 이 또한 본 발명에 속한다.
300: APK 파일 보호 시스템
310: DEX 파일 분석 툴 방지 방법 적용부
320: 복호화키 획득부
330: 암호화부
340: 복호화부
350: 경로 변경부
360: 임시 DEX 파일 생성부
370: 제어부

Claims (12)

  1. APK 파일 보호 시스템에서 수행되는, DEX 파일 및 네이티브 라이브러리를 난독화 및 암호화 하여 APK 파일을 보호하는 방법에 있어서,
    (a) 상기 DEX 파일의 각 메소드 내에 디컴파일링을 방해하기 위한 명령어를 추가하는 DEX 파일 분석 툴 방지 방법을 적용하는 단계;
    (b) 상기 네이티브 라이브러리를 복호화하는 복호화키를 얻기 위한 코드를 상기 APK 파일에 삽입하는 단계;
    (c) 상기 네이티브 라이브러리를 암호화하여 상기 APK 파일 내의 읽기 권한이 있는 폴더에 저장하는 단계;
    (d) 어플리케이션의 실행 시 정상 동작할 수 있도록, 상기 APK 파일 내의 상기 암호화된 네이티브 라이브러리를 복호화하여 상기 어플리케이션에 대해 쓰기 권한이 있는 폴더에 저장하고, 상기 DEX 파일 내의 상기 네이티브 라이브러리의 호출 구문에서 상기 네이티브 라이브러리의 경로를 변경하는 단계; 및
    (e) 상기 DEX 파일을 암호화하여 상기 APK 파일 내의 읽기 권한이 있는 폴더에 저장하고, 암호화되지 않은 상기 DEX 파일을 삭제하고, 임시 DEX 파일을 생성하고, 상기 임시 DEX 파일에 상기 암호화된 DEX 파일을 복호화하기 위한 코드를 삽입하는 단계를 포함하는 것을 특징으로 하는 APK 파일 보호 방법.
  2. 제1항에 있어서, 상기 생성된 임시 DEX 파일은
    안드로이드에서 제공하는 DexClassLoader 함수를 이용하여 상기 암호화된 DEX 파일을 복호화하고 복호화된 DEX 파일을 메모리에 로딩하기 위한 코드를 포함하는 것을 특징으로 하는 APK 파일 보호 방법.
  3. 제1항에 있어서, 상기 (a) 단계 이전에
    상기 APK 파일에서 상기 DEX 파일 및 상기 네이티브 라이브러리를 추출하는 단계를 더 포함하는 것을 특징으로 하는 APK 파일 보호 방법.
  4. 제1항에 있어서, 상기 (a) 단계는
    상기 DEX 파일의 클래스 내의 메소드를 분할하는 단계;
    상기 분할된 메소드의 크기를 계산하는 단계;
    상기 분할된 메소드의 위치를 변경하는 단계;
    상기 분할되고 위치가 변경된 메소드가 정상적으로 실행되도록 각 메소드의 종료 위치에 GOTO 명령어를 이용하여 실행될 다음 메소드의 위치를 지정하는 단계를 포함하는 것을 특징으로 하는 APK 파일 보호 방법.
  5. 제 1항에 있어서, 상기 (b) 단계는
    상기 복호화키를 외부 서버로부터 받아오기 위한 코드를 상기 APK 파일에 삽입하는 단계; 또는
    로컬상에서 지정된 파일형식에 따라 상기 복호화키를 얻기 위한 코드를 상기 APK 파일에 삽입하는 단계를 포함하는 것을 특징으로 하는 APK 파일 보호 방법.
  6. 제 1항에 있어서, 상기 (d) 단계는
    상기 어플리케이션의 실행 시 정상 동작할 수 있도록,
    상기 암호화된 네이티브 라이브러리를 복호화하기 위한 코드를 상기 APK 파일에 삽입하는 단계;
    상기 복호화하기 위한 코드를 통해 복호화된 네이티브 라이브러리를 상기 어플리케이션에 대해 쓰기권한이 있는 /data/data/패키지명/ 의 하단 폴더에 저장하기 위한 코드를 상기 APK 파일에 삽입하는 단계;
    상기 DEX 파일에서 상기 네이티브 라이브러리의 호출 구문을 검색하는 단계;
    상기 호출 구문에서 상기 네이티브 라이브러리의 호출 경로를 상기 어플리케이션의 실행 시 복호화되어 상기 쓰기 권한이 있는 폴더에 저장될 네이티브 라이브러리의 경로로 수정하는 단계; 및
    상기 어플리케이션의 종료 시, 상기 복호화된 네이티브 라이브러리를 삭제하기 위한 코드를 상기 APK 파일에 삽입하는 단계를 포함하는 것을 특징으로 하는 APK 파일 보호 방법.
  7. 제6항에 있어서,
    상기 네이티브 라이브러리 호출 구문은 System.loadLibrary 또는 System.load 에 해당하는 것을 특징으로 하는 APK 파일 보호 방법.
  8. 제1항에 있어서,
    변경된 APK 파일을 압축하고 서명하는 단계를 더 포함하는 것을 특징으로 하는 APK 파일 보호 방법.
  9. DEX 파일 및 네이티브 라이브러리를 난독화 및 암호화 하여 APK 파일을 보호하는 방법을 수행하는 APK 파일 보호 시스템에 있어서,
    상기 DEX 파일의 각 메소드 내에 디컴파일링을 방해하기 위한 명령어를 추가하는 DEX 파일 분석 툴 방지 방법을 적용하는 DEX 파일 분석 툴 방지 방법 적용부;
    상기 네이티브 라이브러리를 복호화하는 복호화키를 얻기 위한 코드를 상기 APK 파일에 삽입 하는 복호화키 획득부;
    상기 네이티브 라이브러리를 암호화하여 상기 APK 파일 내의 읽기 권한이 있는 폴더에 저장하는 암호화부;
    어플리케이션의 실행 시 정상 동작할 수 있도록, 상기 APK 파일 내의 상기 암호화된 네이티브 라이브러리를 복호화하여 상기 어플리케이션에 대해 쓰기 권한이 있는 폴더에 저장하는 복호화부;
    상기 DEX 파일 내의 상기 네이티브 라이브러리의 호출 구문에서 상기 네이티브 라이브러리의 경로를 변경하는 경로 변경부; 및
    상기 DEX 파일을 암호화하여 상기 APK 파일 내의 읽기 권한이 있는 폴더에 저장하고, 암호화되지 않은 상기 DEX 파일을 삭제하고, 임시 DEX 파일을 생성 하고, 상기 임시 DEX 파일에 상기 암호화된 DEX 파일을 복호화하기 위한 코드를 삽입하는 임시 DEX 파일 생성부를 포함하는 것을 특징으로 하는 APK 파일 보호 시스템.
  10. 제9항에 있어서,
    상기 APK 파일에서 상기 DEX 파일 및 상기 네이티브 라이브러리를 추출하는 추출부를 더 포함하는 것을 특징으로 하는 APK 파일 보호 시스템.
  11. 제9항에 있어서.
    변경된 APK 파일을 압축하고 서명하는 서명부를 더 포함하는 것을 특징으로 하는 APK 파일 보호 시스템.
  12. 제1항 내지 제8항 중 어느 한 항의 방법을 컴퓨터로 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020160007520A 2015-04-04 2016-01-21 Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체 KR102433011B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020150047880 2015-04-04
KR20150047880 2015-04-04

Publications (2)

Publication Number Publication Date
KR20160118920A true KR20160118920A (ko) 2016-10-12
KR102433011B1 KR102433011B1 (ko) 2022-08-19

Family

ID=57173468

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160007520A KR102433011B1 (ko) 2015-04-04 2016-01-21 Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체

Country Status (1)

Country Link
KR (1) KR102433011B1 (ko)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160117183A (ko) * 2015-03-30 2016-10-10 홍동철 Dll 파일 암호화 방법, 이를 수행하는 dll 파일 암호화 시스템, 및 이를 저장하는 기록매체
CN106845169A (zh) * 2016-12-26 2017-06-13 北京握奇智能科技有限公司 一种Jar包加固方法及系统
CN108090368A (zh) * 2017-12-20 2018-05-29 北京小牛互联科技有限公司 Apk程序文件的保护方法和系统
WO2018199366A1 (ko) * 2017-04-28 2018-11-01 라인 가부시키가이샤 덱스 파일의 난독화 적용 여부의 탐지 및 보안성 평가를 위한 방법 및 시스템
KR20190009910A (ko) * 2017-07-20 2019-01-30 라인 가부시키가이샤 실행 가능한 압축 파일을 보호하기 위한 파일 보호 방법 및 시스템
KR20190074170A (ko) * 2017-12-19 2019-06-27 유재욱 이중 패킹을 이용한 코드 난독화
WO2019235663A1 (ko) * 2018-06-08 2019-12-12 라인플러스 주식회사 네이티브 라이브러리를 보호하는 방법 및 시스템
CN111666078A (zh) * 2020-04-30 2020-09-15 平安科技(深圳)有限公司 源码加固方法、装置、计算机设备及存储介质
US10963563B2 (en) 2017-04-20 2021-03-30 Line Corporation Method and system for evaluating security of application
KR20210099880A (ko) * 2020-02-05 2021-08-13 라인플러스 주식회사 컴파일러를 이용한 난독화 방법 및 시스템
CN113568680A (zh) * 2021-07-23 2021-10-29 杭州网易智企科技有限公司 应用程序的动态链接库保护方法、装置、设备及介质
CN114531676A (zh) * 2020-10-30 2022-05-24 华为技术有限公司 一种密钥处理方法、装置和终端设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140029562A (ko) 2012-08-28 2014-03-11 바른소프트기술 주식회사 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법
KR101436536B1 (ko) * 2013-06-19 2014-09-01 숭실대학교산학협력단 파일 서버 및 그것을 이용한 프로그램 파일의 전송 방법, 그리고 프로그램 파일 변조 방지 시스템
KR20140114769A (ko) * 2013-03-15 2014-09-29 주식회사 에스이웍스 안드로이드에서의 dex파일 바이너리 난독화 방법
KR101623096B1 (ko) * 2015-05-13 2016-05-23 주식회사 에스이웍스 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140029562A (ko) 2012-08-28 2014-03-11 바른소프트기술 주식회사 안드로이드 어플리케이션의 디컴파일 방지를 위한 암호화 방법
KR20140114769A (ko) * 2013-03-15 2014-09-29 주식회사 에스이웍스 안드로이드에서의 dex파일 바이너리 난독화 방법
KR101436536B1 (ko) * 2013-06-19 2014-09-01 숭실대학교산학협력단 파일 서버 및 그것을 이용한 프로그램 파일의 전송 방법, 그리고 프로그램 파일 변조 방지 시스템
KR101623096B1 (ko) * 2015-05-13 2016-05-23 주식회사 에스이웍스 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160117183A (ko) * 2015-03-30 2016-10-10 홍동철 Dll 파일 암호화 방법, 이를 수행하는 dll 파일 암호화 시스템, 및 이를 저장하는 기록매체
CN106845169A (zh) * 2016-12-26 2017-06-13 北京握奇智能科技有限公司 一种Jar包加固方法及系统
CN106845169B (zh) * 2016-12-26 2023-04-07 北京握奇智能科技有限公司 一种Jar包加固方法及系统
US10963563B2 (en) 2017-04-20 2021-03-30 Line Corporation Method and system for evaluating security of application
WO2018199366A1 (ko) * 2017-04-28 2018-11-01 라인 가부시키가이샤 덱스 파일의 난독화 적용 여부의 탐지 및 보안성 평가를 위한 방법 및 시스템
KR20190009910A (ko) * 2017-07-20 2019-01-30 라인 가부시키가이샤 실행 가능한 압축 파일을 보호하기 위한 파일 보호 방법 및 시스템
KR20190074170A (ko) * 2017-12-19 2019-06-27 유재욱 이중 패킹을 이용한 코드 난독화
CN108090368A (zh) * 2017-12-20 2018-05-29 北京小牛互联科技有限公司 Apk程序文件的保护方法和系统
WO2019235663A1 (ko) * 2018-06-08 2019-12-12 라인플러스 주식회사 네이티브 라이브러리를 보호하는 방법 및 시스템
KR20210099880A (ko) * 2020-02-05 2021-08-13 라인플러스 주식회사 컴파일러를 이용한 난독화 방법 및 시스템
CN111666078A (zh) * 2020-04-30 2020-09-15 平安科技(深圳)有限公司 源码加固方法、装置、计算机设备及存储介质
CN114531676A (zh) * 2020-10-30 2022-05-24 华为技术有限公司 一种密钥处理方法、装置和终端设备
CN114531676B (zh) * 2020-10-30 2024-04-09 华为技术有限公司 一种密钥处理方法、装置和终端设备
CN113568680A (zh) * 2021-07-23 2021-10-29 杭州网易智企科技有限公司 应用程序的动态链接库保护方法、装置、设备及介质
CN113568680B (zh) * 2021-07-23 2023-08-11 杭州网易智企科技有限公司 应用程序的动态链接库保护方法、装置、设备及介质

Also Published As

Publication number Publication date
KR102433011B1 (ko) 2022-08-19

Similar Documents

Publication Publication Date Title
KR102433011B1 (ko) Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체
CN110069905B (zh) 一种Springboot程序加密和解密的装置及方法
KR101518420B1 (ko) 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
KR101623096B1 (ko) 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
CN102890758B (zh) 一种保护可执行文件的方法及系统
KR101216995B1 (ko) 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
CN106599629B (zh) 一种安卓应用程序加固方法及装置
CN110188555B (zh) 一种磁盘数据保护方法、系统及相关组件
CN105095771B (zh) 一种共享目标文件的保护方法及装置
US20110271350A1 (en) method for protecting software
CN104268444A (zh) 一种云OS Java源代码保护方法
CN108134673B (zh) 一种生成白盒库文件的方法及装置
KR102266342B1 (ko) 소프트웨어 보안을 위한 메모리 데이터의 암호화 및 복호화 방법, 이를 수행하기 위한 기록매체 및 장치
WO2019062015A1 (zh) 源代码保护方法、应用服务器及计算机可读存储介质
US9292708B2 (en) Protection of interpreted source code in virtual appliances
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
KR20160117183A (ko) Dll 파일 암호화 방법, 이를 수행하는 dll 파일 암호화 시스템, 및 이를 저장하는 기록매체
KR20150069844A (ko) Arm 프로세서 기반의 파일 난독화 방법
CN117313046A (zh) 一种代码加固方法、代码加载方法、设备及介质
CN109992974A (zh) 虚拟机字节码文件的保护方法、设备及可读存储介质
US9166783B2 (en) Protection method, decryption method, player, storage medium, and encryption apparatus of digital content
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
CN104866740A (zh) 一种防静态分析文件的方法及装置
CN107688729B (zh) 基于可信主机的应用程序保护系统及方法
CN106845169B (zh) 一种Jar包加固方法及系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right