KR20190061075A - 소프트웨어 재패키징 방지 방법 및 장치 - Google Patents

소프트웨어 재패키징 방지 방법 및 장치 Download PDF

Info

Publication number
KR20190061075A
KR20190061075A KR1020197013506A KR20197013506A KR20190061075A KR 20190061075 A KR20190061075 A KR 20190061075A KR 1020197013506 A KR1020197013506 A KR 1020197013506A KR 20197013506 A KR20197013506 A KR 20197013506A KR 20190061075 A KR20190061075 A KR 20190061075A
Authority
KR
South Korea
Prior art keywords
installation package
digital watermark
watermark information
target file
verification information
Prior art date
Application number
KR1020197013506A
Other languages
English (en)
Other versions
KR102192880B1 (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 KR20190061075A publication Critical patent/KR20190061075A/ko
Application granted granted Critical
Publication of KR102192880B1 publication Critical patent/KR102192880B1/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Medical Treatment And Welfare Office Work (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 출원은 재패키징 방지 방법 및 장치를 제공한다. 본 발명의 방법은 설치 패키지에서 대상 파일을 실행하고 설치 패키지에 안전한 동적 라이브러리를 로딩하는 단계; 및 대상 파일의 코드에 기초하여 대상 파일에 삽입된 디지탈 워터마크 정보 및 안전한 동적 라이브러리에 저장된 검증 정보를 획득하는 단계와, 디지탈 워터마크 정보 및 검증 정보를 기반으로 하여 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계를 수행하는 단계를 포함한다. 본 출원의 설치 패키지는 운영 체제가 어떻게 수정되더라도 검증 코드를 포함하기 때문에, 시스템에서 설치 패키지를 검증하는 프로세스를 피할 수 없다. 이렇게 하면, 설치 패키지가 재패키지화되었는지의 여부를 검증하기 위해 시스템이 설치 패키지의 자체 서명을 검증하는 경우 때때로 설치 패키지가 재패키지되었는지의 여부를 효과적으로 검증할 수 없는 기존의 문제점을 완화시킨다. 다음과 같은 기존의 문제점도 완화된다: 시스템이 설치 패키지의 해시 값을 계산하여 설치 패키지가 재패키지되는지의 여부를 검증할 때에 때때로 검증 효율성이 낮아지는 경우가 있다.

Description

소프트웨어 재패키징 방지 방법 및 장치
본 출원은 컴퓨터 기술 분야, 특히 재패키징 방지 방법 및 장치에 관한 것이다.
현재, 많은 악성 애플리케이션 소프트웨어는 원래의 설치 패키지에 광고를 삽입하고, 멀웨어(malware, 악성 코드나 악성 소프트웨어라고도 칭함)를 자동으로 다운로드하며, 루트(root) 프로그램 등을 구현하기 위해 재패키징(repackaging)을 통해 원래의 설치 패키지(original installation package)를 수정한다.
도 1에는 재패키징 프로세스가 도시되어 있다. 먼저, 원래의 설치 패키지의 소스 코드를 얻기 위해 원래의 설치 패키지가 디컴파일된다. 그런 다음, 사용자는 소스 코드를 수정하고(예를 들어, 다른 코드를 추가함), 추가된 코드는 광고일 수 있고, 또는 멀웨어 등을 자동으로 다운로드하는 프로그램이될 수도 있다. 마지막으로, 수정된 파일을 재패키지하여 재패키지된 설치 패키지를 획득한다.
소스 코드는 이전의 재패키징 프로세스에서 수정되기 때문에, 재패키지된 설치 패키지의 자체 서명은 더 이상 원래의 설치 패키지의 자체 서명이 아니다. 따라서, 기존의 기술들에서, 재패키징 방지 방법은 설치 패키지가 재패키지되었는지의 여부를 결정하기 위해 설치 패키지의 자체 서명을 체크하는 단계가 될 수 있다. 구체적인 검증 프로세스는 도 2에 도시되어 있다.
특정 설치 패키지가 설치되면, 설치 패키지의 대상 파일(target file)이 실행되고 설치 패키지의 안전한 동적 라이브러리가 로딩된다. 일반적으로, 정보 보안을 확보하기 위해, 일부 검증 정보를 안전한 동적 라이브러리에 저장한다. 검증 정보는 설치 패키지에 해당하는 원래의 설치 패키지의 자체 서명을 포함한다. 운영 체제는 설치 패키지의 자체 서명을 검증하기 위한 인터페이스를 제공하기 때문에, 대상 파일에서 설치 패키지의 자체 서명을 획득하고 안전한 동적 라이브러리에서 원래의 설치 패키지의 자체 서명을 획득한 후, 운영 체제는 설치 패키지의 자체 서명이 원래의 설치 패키지의 자체 서명과 일치하는지의 여부를 검증한다. 만일 그것들이 일치하고 있다면, 운영 체제는 설치 패키지가 원래의 설치 패키지인 것으로 결정한다. 만일 그것들이 일치하지 않으면, 운영 체제는 설치 패키지가 재패키지된 설치 패키지인 것으로 결정한다.
기존의 기술들에서, 재패키징 방지를 위한 또 다른 방법은 다음과 같다: 운영 체제는 이번에 설치된 설치 패키지의 해시(hash) 값을 계산하고, 해시 값을 체크한다. 즉, 해시 값과 원래의 설치 패키지의 해시 값을 비교하여, 만일 그들이 일치하면, 설치 패키지가 원래의 설치 패키지인지인 것으로 결정하고, 만일 그들이 일치하지 않으면, 설치 패키지가 재패키지된 설치 패키지인 것으로 결정한다.
기존의 기술들의 재패키징 방지를 위한 두 가지 방법은 재패키징을 효과적으로 방지하기 위해 완전히 신뢰할 수 있는 운영 체제에서 사용해야 한다. 그러나, 기존의 운영 체제들의 상당수가 오픈 소스이기 때문에 사용자는 원래의 운영 체제를 수정할 수 있게 되어, 운영 체제는 설치 패키지의 자체 서명을 체크하거나 설치 패키지의 해시 값을 체크하지는 않는다. 따라서, 사용자에 의해 다운로드된 설치 패키지가 재패키지된 설치 패키지인지 여부와 관계 없이, 운영 체제는 설치 패키지가 원래의 설치 패키지로 기본적으로 고려한다.
또한, 재패키징 방지를 위한 제2 방법에서는 설치될 설치 패키지가 대용량 메모리를 차지하는 경우가 있다. 따라서, 운영 체제가 설치 패키지의 해시 값을 계산할 때, 운영 체제의 검증 효율성이 영향을 받는다.
본 출원은 시스템이 설치 패키지의 자체 서명을 체크하는 경우에 때때로 설치 패키지가 재패키지될지 여부를 효과적으로 검증할 수 없는 기존의 문제점을 완화시키고, 또한 시스템이 설치 패키지의 해시 값을 계산하여 설치 패키지가 재패키지되는지의 여부를 체크하는 경우에 설치 패키지가 대용량 메모리를 사용하기 때문에 때때로 검증 효율성이 낮은 기존의 문제점을 완화시키기 위해서, 재패키징 방지 방법 및 장치를 제공한다.
본 출원은 재패키징 방지(anti-repackaging) 방법을 제공하며, 본 발명의 재패키징 방지 방법은, 설치 패키지에서 대상 파일을 실행하고 설치 패키지에 안전한 동적 라이브러리를 로딩하는 단계; 및 대상 파일의 코드에 기초하여, 대상 파일에 삽입된 디지탈 워터마크 정보 및 안전한 동적 라이브러리에 저장된 검증 정보를 획득하는 단계와, 디지탈 워터마크 정보 및 검증 정보를 기반으로 하여 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계를 수행하는 단계를 포함한다.
그에 대응하여, 본 출원은 재패키징 방지 장치를 제공하며, 본 발명의 재패키징 방지 장치는, 주행 유닛 및 실행 유닛을 포함하고, 주행 유닛은, 설치 패키지에서 대상 파일을 실행하고 설치 패키지에 안전한 동적 라이브러리를 로딩하도록 구성되며; 및 실행 유닛은, 대상 파일의 코드에 기초하여, 대상 파일에 삽입된 디지탈 워터마크 정보 및 안전한 동적 라이브러리에 저장된 검증 정보를 획득하는 단계와, 디지탈 워터마크 정보 및 검증 정보를 기반으로 하여 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계를 수행하도록 구성된다.
본 출원에서 제공되는 재패키징 방지 방법에서, 설치 패키지는 검증 코드를 포함한다. 설치 패키지가 설치되면, 운영 체제는 코드에 기초하여 대상 파일에 삽입된 디지탈 워터마크 정보를 획득하고, 설치 패키지 내의 안전한 동적 라이브러리 내의 검증 정보를 획득하고, 디지탈 워터마크 정보 및 검증 정보에 기초하여 설치 패키지는 재패키지된 설치 패키지인지의 여부를 검증한다. 본 발명에 제공된 재패키징 방지 방법을 사용함으로써 다음과 같은 유익한 효과들이 달성된다:
1. 본 출원에서, 설치 패키지에는 설치 패키지가 재패키징되는지 여부를 검증하는데 사용되는 코드를 포함한다. 따라서, 운영 체제가 어떻게 수정되더라도, 설치 패키지를 검증하는 프로세스를 피할 수 없다. 이렇게 하면, 시스템은 때때로 설치 패키지의 자체 서명을 체크하여 설치 패키지가 재패키지되었는지 여부를 검증하기 위해 설치 패키지의 자체 서명을 검증하는 프로세스를 생략하기 때문에, 설치 패키지를 재패키지화할지 여부를 효과적으로 검증할 수 없다고 하는 기존의 문제점을 완화시킨다.
2. 본 출원에서, 설치 패키지가 재패키지되는지의 여부는 디지탈 워터마크 정보 및 검증 정보에 기초하여 검증된다. 따라서, 설치 패키지의 해시 값을 계산함으로써 설치 패키지가 재패키지되는지의 여부를 검증하는 기존의 기술들의 방법과 비교하여, 본 출원은 설치 패키지가 재패키지되는지의 여부를 검증하는데 더 높은 효율을 갖는다.
본 명세서에 설명된 첨부된 도면들은 본 출원의 추가의 이해를 제공하기 위해 사용되며 본 출원의 일부를 구성한다. 본 출원의 개략적인 구현 및 설명은 본 출원을 설명하는데 사용되며, 본 출원에 대한 부적절한 제한은 아니다. 첨부된 도면들에서:
도 1은 기존 기술의 재패키징 방법을 나타내는 개략적인 흐름도이다.
도 2는 기존 기술에서의 재패키징 방지 방법을 나타내는 개략적인 흐름도이다.
도 3은 본 발명의 구현 예에 따른 재패키징 방지 방법을 나타내는 개략적인 흐름도이다.
도 4는 본 발명의 구현 예에 따른 디지탈 워터마크 정보를 대상 파일에 삽입하는 개략적인 흐름도이다.
도 5는 본 발명의 구현 예에 따른 재패키징 방지를 위한 또 다른 방법을 예시하는 개략적인 흐름도이다.
도 6은 본 발명의 구현 예에 따라 디지탈 워터마크 정보를 식별하는 방법을 나타내는 개략적인 흐름도이다.
도 7은 본 발명의 구현 예에 따른 재패키징 방지를 위한 또 다른 방법을 나타내는 개략적인 흐름도이다.
도 8은 본 발명의 구현 예에 따른 재패키징 방지를 위한 또 다른 방법을 나타내는 개략적인 흐름도이다.
도 9는 본 발명의 구현 예에 따른 재패키징 방지 장치를 나타내는 개략적인 구조도이다.
본 출원의 목적, 기술적 해결책, 및 이점들을 보다 명확하게 하기 위해, 다음은 본 출원의 특정 구현 예 및 대응하는 첨부 도면들을 참조하여 본 출원의 기술적 해결책을 명확하고 포괄적으로 설명한다. 명백하게, 설명된 구현 예는 본 출원의 모든 구현 예보다는 단지 일부일 뿐이다. 본 출원의 구현 예에 기초하여, 창의적인 노력없이 당업자에 의해 획득된 모든 다른 구현 예들은 본 출원의 보호 범위 내에 있다.
다음은 첨부된 도면들을 참조하여 본 출원의 구현 예에서 제공된 기술적 해결책을 상세하게 설명한다.
본 출원은 시스템이 설치 패키지의 자체 서명을 체크하는 경우에 때때로 설치 패키지가 재패키지될지 여부를 효과적으로 검증할 수 없는 기존의 문제점을 완화시키고, 또한 시스템이 설치 패키지의 해시 값을 계산하여 설치 패키지가 재패키지되는지의 여부를 체크하는 경우에 설치 패키지가 대용량 메모리를 차지하기 때문에 때때로 검증 효율성이 낮은 기존의 문제점을 완화시키기 위해서, 재패키징 방지 방법을 제공한다. 본 발명의 방법의 프로세스는 도 3에 도시되어 있으며, 다음과 같은 단계들을 포함한다:
단계 301: 설치 패키지에서 대상 파일을 실행하고 설치 패키지에 안전한 동적 라이브러리를 로딩한다.
본 단계에서, 사용자가 특정 설치 패키지를 다운로드하고 설치 패키지를 설치할 때, 운영 체제는 설치 패키지에서 대상 파일을 실행하고 동시에 설치 패키지에 안전한 동적 라이브러리를 로딩한다. 대상 파일은 사전 결정된 코드에 기초하여 컴파일된 대상 파일이며, 디지탈 워터마크 정보는 컴파일된 대상 파일에 삽입된다. 디지탈 워터마크 정보는 문자열, 명령어 등일 수 있다. 안전한 동적 라이브러리는 설치 패키지에 대한 검증 정보를 저장하며, 검증 정보는 설치 패키지가 재패키지 된 설치 패키지인지 여부를 검증하는데 사용된다.
디지탈 워터마크 정보를 대상 파일에 삽입하는 이전의 방법에서는 디지탈 워터마크 정보를 대상 파일의 끝부분(end)에 삽입하거나 디지탈 워터마크 정보를 대상 파일의 다른 위치에 삽입할 수 있다.
운영 체제는 안드로이드(ANDROID) 시스템이 될 수 있으며, 대상 파일은 덱스(dex) 파일이 될 수 있다. 덱스 파일은 ANDROID 시스템의 실행 파일이며 자바 코드를 사용하여 작성된다. 안전한 동적 라이브러리는 공유 대상(so) 라이브러리가 될 수 있으며 c/c++를 사용하여 작성된다. 일반적으로, so 라이브러리는 예를 들어 검증 정보와 같은 일부 보안 정보를 저장한다. 실행 파일이 로드되거나 실행되면 해당 so 라이브러리가 운영 체제에 의해 로딩된다. 또는 운영 체제는 WINDOWS가 될 수 있고, 대상 파일은 실행(exe) 파일이 될 수 있고 안전한 동적 라이브러리는 dll 라이브러리 등이다. 운영 체제, 대상 파일, 및 안전한 동적 라이브러리는 본 명세서에 제한되지 않는다.
도 4에 도시된 바와 같이, 대상 파일이 dex 파일이면, 디지탈 워터마크 정보가 대상 파일에 삽입될 때, 대상 파일의 데이터의 무결성과 정확성을 보장하기 위해, 대상 파일 헤더의 체크섬, 서명, 파일 크기 등의 대응하는 값이 디지탈 워터마크 정보에 기초하여 재계산된다.
설치 패키지가 재패키지된 설치 패키지인 경우, 사용자가 원래의 설치 패키지를 재패키지할 때, 사용자가 원래의 설치 패키지의 원본 파일에서 코드를 수정할 수는 있지만, 원본 설치 패키지의 안전한 동적 라이브러리에 있는 검증 정보는 쉽게 수정할 수 없다. 따라서, 설치 패키지의 안전한 동적 라이브러리에는 여전히 원래의 설치 패키지의 검증 정보가 저장된다. 디지탈 워터마크 정보가 원래의 설치 패키지에도 삽입되어 있다고 가정하면, 안전한 동적 라이브러리에 저장된 검증 정보는 원본 파일에 삽입된 디지탈 워터마크 정보가 될 수 있다. 그 이유를 도 5에 나타낸다.
원래의 설치 패키지를 재패키지할 때, 원래의 설치 패키지는 원래의 설치 패키지에 대응하는 소스 코드 파일을 얻기 위해 먼저 디컴파일해야 한다. 디지탈 워터마크 정보는 사전 결정된 코드에 기초하여 원본 파일로 컴파일된 후에 원본 파일에 삽입되기 때문에, 디지탈 워터마크 정보 A는 원래의 설치 패키지가 디컴파일될 때 손실된다. 그런 다음, 사용자가 소스 코드 파일을 수정할 수 있다. 도 5에 도시된 바와 같이, 다른 코드가 추가될 수 있다. 또한, 사용자는 재패키지된 설치 패키지를 위조하기 위해 디지탈 워터마크 정보 B를 소스 코드 파일에 추가로 삽입한다. 마지막으로, 소스 코드 파일이 재패키지되고 재패키지된 설치 패키지의 안전한 동적 라이브러리에 여전히 검증 정보 A가 저장된다. 따라서, 디지탈 워터마크 정보 A는 원래의 설치 패키지의 식별자로서 사용될 수 있고, 설치 패키지가 재패키지되는지 여부를 검증하는데 사용된다.
본 출원의 구현 예를 명확하게 설명하기 위해, 디지탈 워터마크 정보를 일 예시로서 대상 파일의 말미에 삽입함으로써 본 출원의 구현 예의 단계들을 이하에서 설명한다.
단계 302: 대상 파일의 코드에 기초하여 다음의 단계들, 즉 대상 파일에 삽입된 디지탈 워터마크 정보 및 안전한 동적 라이브러리에 저장된 검증 정보를 획득하는 단계와, 디지탈 워터마크 정보 및 검증 정보에 기초하여 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계를 실시한다.
본 단계에서, 운영 체제는 도 6에 도시된 방법, 즉 대상 파일의 원래의 길이에 기초하여 대상 파일 내의 디지탈 워터마크 정보의 시작 어드레스를 결정하는 단계와, 시작 어드레스에 기초하여 대상 파일로부터 디지탈 워터마크 정보를 획득하는 단계를 사용하여 대상 파일 내의 코드에 기초하여 대상 파일 내의 디지탈 워터마크 정보를 획득한다. 본 명세서에서 대상 파일의 원래의 길이는 디지탈 워터마크 정보가 삽입되기 전의 대상 파일의 길이이다.
디지탈 워터마크 정보를 획득하고 안전한 동적 라이브러리로부터 검증 정보를 획득한 후, 운영 체제는 디지탈 워터마크 정보 및 검증 정보에 기초하여 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증한다. 검증 방법은 이하의 표 1에 도시된 바와 같이 디지탈 워터마크 정보의 유형에 기초하여 결정될 수 있다.

디지탈 워터마크 정보의 유형

검증 방법


고정된 길이의 문자열

문자열이 검증 정보와 일치하는지 여부를 직접 검증한다

워터마크 값이 검증 정보와 일치하는지 여부를 검증한다

랜덤 길이의 문자열

랜덤 문자열의 길이를 먼저 계산한 다음, 문자열이 검증 정보와 일치하는지 여부를 검증한다

명령어

명령어가 검증 정보와 일치하는지 여부를 검증한다

동작 결과가 검증 정보와 일치하는지 여부를 검증한다

동작 결과가 검증 정보의 동작 결과와 일치하는지 여부를 검증하고, 명령어가 검증 정보의 명령어와 일치하는지 여부를 검증한다


디지탈 워터마크 정보가 문자열인 경우, 디지탈 워터마크 정보가 검증 정보와 일치하는지 여부가 검증된다. 디지탈 워터마크 정보가 검증 정보와 일치하면, 설치 패키지가 원래의 설치 패키지인 것으로 결정된다. 디지탈 워터마크 정보가 검증 정보와 일치하지 않으면, 설치 패키지가 재패키지된 설치 패키지인 것으로 결정된다.
실제 응용에서, 디지탈 워터마크 정보가 문자열이면, 문자열은 고정된 길이의 문자열일 수도 있거나, 또는 랜덤 길이의 문자열일 수도 있다. 디지탈 워터마크 정보가 고정된 길이의 문자열인 경우, 그 문자열이 안전한 동적 라이브러리 내의 검증 정보와 일치하는지의 여부를 직접 검증하거나; 또는 현재 다운로드된 설치 패키지에 대응하는 워터 마크 값은 워터 마크 값이 안전한 동적 라이브러리의 검증 정보와 일치하는지의 여부를 결정하기 위해 계산된다. 도 7은 덱스 파일 내의 워터마크 값을 계산함으로써, 설치 패키지가 재패키지되는지의 여부를 검증하는 방법을 도시한다. 세부 사항은 다음과 같다.
덱스 파일은 덱스 헤더와 덱스 본문을 포함한다. 덱스 헤더는 데이터 크기와 데이터 오프를 포함하고, 덱스 본문은 데이터를 포함하고, 데이터 크기는 데이터의 크기를 나타내고, 데이터 오프는 데이터의 오프셋을 나타낸다. 디지탈 워터마크 정보가 원본 덱스 파일에 포함되어 있다고 가정한다. 원본 덱스 파일을 재패키지할 때, 덱스 본문의 데이터 부분에 해당하는 코드가 수정되고 코드가 수정 된 후에, 원본 덱스 파일에 포함된 디지털 워터 마크 정보가 손실될 뿐만 아니라 데이터의 크기 또한 변경된다. 따라서, 덱스 헤더의 데이터 크기에 해당하는 값이 변경된다. 원본 덱스 파일을 재패키징하는 방법은 다음과 같다: 덱스 본문에 있는 데이터 이외의 부분에 해당하는 코드가 수정되고 코드가 수정된 후에, 원본 덱스 파일에 포함된 디지탈 워터마크 정보도 손실되어 덱스 본문 내의 데이터의 위치가 오프셋된다(도 7 참조). 이와 같이, 덱스 헤더의 데이터 오프에 해당하는 값이 변경된다.
원래의 설치 패키지에 대응하는 워터마크 값을 계산하는 방법은 "데이터 크기 + 데이터 오프", 즉 워터마크 값은 데이터 크기에 대응하는 값 + 데이터 오프에 대응하는 값에 대응하는 값이다. 사용자가 원래의 설치 패키지를 재패키지할 때, 데이터 오프 또는 데이터 크기에 해당하는 값이 변경되고, 재패키지된 설치 패키지에 대응하는 워터마크 값도 변경된다. 이때, 운영 체제는 재패키지된 설치 패키지에 대응하는 워터마크 값이 안전한 동적 라이브러리의 검증 정보와 일치하는지를 검증하여 설치 패키지가 재패키지되는지 여부를 결정할 수 있다. 본 명세서에서 워터마크 값을 계산하는 방법은 단지 예시일뿐이다. 실제 응용에서, 워터마크 값을 계산하는 방법은 실제 상황에 기초하여 결정될 수 있으며, 예를 들어 "데이터 크기 - 데이터 오프", "데이터 크기/데이터 오프" 등일 수 있다.
이전 방법을 사용하여 현재 다운로드한 설치 패키지가 재패키지되는지 여부를 검증하는 경우, 원래의 설치 패키지의 디지탈 워터마크 정보가 재패키지된 설치 패키지에 삽입된 경우에도 설치 패키지에 대응하는 워터마크 값이 변경된다. 따라서, 운영 체제는 설치 패키지의 워터마크 값에 기초하여 설치 패키지가 재패키지되는지 여부를 정확하게 결정할 수 있다.
디지탈 워터마크 정보가 랜덤 길이의 문자열이면, 먼저 문자열의 길이를 계산한 후, 문자열의 길이가 안전한 동적 라이브러리의 검증 정보의 길이와 일치하는지 여부를 검증하고, 만일 문자열의 길이가 안전한 동적 라이브러리 내의 검증 정보의 길이와 일치하지 않는 경우, 설치 패키지가 재패키지된 설치 패키지인 것으로 직접 결정되거나; 또는 문자열의 길이가 안전한 동적 라이브러리의 검증 정보의 길이와 일치하면, 문자열이 안전한 동적 라이브러리의 검증 정보와 일치하는지 여부가 검증되고, 만일 문자열이 안전한 동적 라이브러리의 검증 정보와 일치하는 경우, 설치 패키지가 원래의 설치 패키지인 것으로 결정되거나, 또는 만일 문자열이 안전한 동적 라이브러리의 검증 정보와 일치하지 않으면, 설치 패키지가 재패키지된 설치 패키지인 것으로 결정된다.
디지탈 워터마크 정보가 명령어인 경우, 설치 패키지를 검증하기 위한 방법은 여러 가지가 존재한다. 이하에서는 세 가지 검증 방법을 예시로서 설명한다.
제1 방법은 디지탈 워터마크 정보가 문자열일 때 설치 패키지를 검증하는 이전의 방법과 유사하다. 운영 체제는 명령어가 안전한 동적 라이브러리의 검증 정보와 일치하는지 여부를 검증하고; 만일 명령어가 안전한 동적 라이브러리의 검증 정보와 일치하면, 운영 체제는 설치 패키지가 원래의 설치 패키지인 것을 결정하며; 만일 명령어가 안전한 동적 라이브러리의 검증 정보와 일치하지 않는 경우, 운영 체제는 설치 패키지가 재패키지된 설치 패키지인지를 결정한다.
제2 방법에서, 운영 체제는 그 동작 결과를 얻기 위한 명령어에 기초하여 대응하는 동작을 수행한 다음, 그 동작 결과가 검증 정보와 일치하는지 여부를 검증하고; 만일 동작 결과가 검증 정보와 일치하면, 운영 체제는 설치 패키지가 원래의 설치 패키지인지를 결정하며, 만일 동작 결과가 검증 정보와 일치하지 않으면, 운영 체제는 설치 패키지가 재패키지된 설치 패키지인지를 결정한다.
예를 들어, 명령어는 "XX 어드레스에서 컨텐츠가 안전한 동적 라이브러리의 검증 정보와 일치하는지 여부를 질의"할 수 있다. 운영 체제는 명령어에 기초하여 대상 파일의 XX 어드레스로부터 어드레스에 대응하는 컨텐츠(동작 결과)를 질의하고, 콘텐츠가 안전한 동적 라이브러리의 검증 정보와 일치하는지 여부를 검증하다. 만일 컨텐츠가 안전한 동적 라이브러리의 검증 정보와 일치하면, 운영 체제는 설치 패키지가 원래의 설치 패키지임을 결정한다. 만일 컨텐츠가 안전한 동적 라이브러리의 검증 정보와 일치하지 않는 경우, 운영 체제는 설치 패키지가 재패키지된 설치 패키지인지 여부를 결정한다.
제3 방법에서, 운영 체제는 동작 결과를 얻기 위한 명령어에 기초하여 대응하는 동작을 수행하고, 동작 결과가 검증 정보의 동작 결과와 일치하는지를 검증하고, 명령어가 검증 정보의 명령어와 일치하는지 여부를 검증한다. 2 가지 검증들의 양쪽 모두의 결과가 일치하면, 운영 체제는 설치 패키지가 원래의 설치 패키지임을 결정한다. 2 가지 검증들 중 하나의 결과가 "불일치"이거나 2 가지 검증들의 결과가 "불일치"인 경우, 운영 체제는 설치 패키지가 재패키지된 설치 패키지인지를 결정한다.
검증 방법을 명확히 설명하기 위해, 본 명세서에 간단한 예시가 제공된다. 안전한 동적 라이브러리의 검증 정보의 동작 결과를 "2"라고 가정하고, 동작 명령어가 "1 + 1"이고, 대상 파일의 디지탈 워터마크 정보에 대응하는 명령어가 "3-1"이며, 운영 체제가 그 명령어에 기초한 동작을 수행 한 후에 획득된 동작 결과도 "2"이다. 동작 결과가 검증 정보의 동작 결과와 일치하는지 여부를 운영 체제가 검증하는 경우에만, 운영 체제는 설치 패키지가 원래의 설치 패키지라고 잘못 간주하지만, 만일 명령어가 검증 정보 내의 명령어와 일치하고 있는지 여부를 운영 체제가 추가적으로 검증하는 경우, 운영 체제는 설치 패키지가 재패키지되는지 여부를 정확하게 결정한다.
대상 파일의 디지탈 워터마크 정보에 대응하는 명령어는 단순한 "return" 명령어일 수 있거나, 또는 운영 체제와의 상호 작용에 사용되는 다른 명령어일 수 있다. 예를 들어, 명령어는 "운영 체제가 대상 파일의 자체 서명이 안전한 동적 라이브러리의 검증 정보와 일치하는지 여부를 검증하시오"가 될 수 있다. 다른 예를 들면, 명령어는 "디지탈 워터마크 정보가 삽입되기 전에 대상 파일의 길이가 안전한 동적 라이브러리에 저장된 검증 정보와 일치하는지 여부를 운영 체제가 검증하도록 할 수 있다". 명령어는 사용자 요구에 따라 설정할 수 있다.
또한, 설치 패키지가 재패키지된 설치 패키지인 경우 다음과 같은 사례가 있을 수 있다: 디지탈 워터마크 정보는 설치 패키지에 대응하는 원본 파일에 삽입된다. 이전의 컨텐츠에서 볼 수 있듯이, 원래의 설치 패키지를 재패키지하는 과정에서, 원래의 설치 패키지의 디지탈 워터마크 정보가 손실된다. 사용자가 원본 파일의 코드를 수정한 후에 디지털 워터 마크 정보를 추가하지 않으면, 운영 체제는 설치 패키지의 코드에 기초하여 설치 패키지의 대상 파일이 디지탈 워터마크 정보를 포함하는지 여부를 질의할 수 있다.
설치 패키지를 검증하기 위한 이전의 방법은 단지 예시일 뿐이다. 실제의 응용에는 복수의 종류의 디지탈 워터마크 정보가 있고, 본 명세서에 제한되지 않는 복수의 대응하는 검증 방법도 있다.
본 출원에서 제공된 재패키징 방지 방법에서, 설치 패키지는 검증 코드를 포함한다. 설치 패키지가 설치되면, 도 8에 도시된 바와 같이, 운영 체제는 코드에 기초하여, 설치 패키지에서의 안전한 동적 라이브러리 내의 검증 정보를 획득하고, 대상 파일에 삽입된 디지탈 워터마크 정보를 획득하며, 디지탈 워터마크 정보 및 검증 정보에 기초하여 설치 패키지가 재패키지된 설치 패키지인지 여부를 검증한다. 본 출원에 제공된 재패키징 방지 방법을 사용함으로써 다음과 같은 유익한 효과가 달성된다:
1. 본 출원에서, 설치 패키지에는 설치 패키지가 재패키징되는지 여부를 검증하는데 사용되는 코드를 포함한다. 따라서, 운영 체제가 어떻게 수정되더라도, 설치 패키지를 검증하는 프로세스를 피할 수 없다. 이렇게 하면, 시스템은 때때로 설치 패키지의 자체 서명을 체크하여 설치 패키지가 재패키지되었는지 여부를 검증하기 위해 설치 패키지의 자체 서명을 검증하는 프로세스를 생략하기 때문에, 설치 패키지를 재패키지화할지 여부를 효과적으로 검증할 수 없다고 하는 기존의 문제점을 완화시킨다.
2. 본 출원에서, 설치 패키지가 재패키지되는지의 여부는 디지탈 워터마크 정보 및 검증 정보에 기초하여 검증된다. 따라서, 설치 패키지의 해시 값을 계산함으로써 설치 패키지가 재패키지되는지의 여부를 검증하는 기존의 기술들의 방법과 비교하여, 본 출원은 설치 패키지가 재패키지되는지의 여부를 검증하는데 더 높은 효율성을 갖는다.
이에 대응하여, 본 출원은 시스템이 설치 패키지의 자체 서명을 체크하는 경우에 때때로 설치 패키지가 재패키지될지 여부를 효과적으로 검증할 수 없는 기존의 문제점을 완화시키고, 또한 시스템이 설치 패키지의 해시 값을 계산하여 설치 패키지가 재패키지되는지의 여부를 체크하는 경우에 설치 패키지가 대용량 메모리를 점유하기 때문에 때때로 검증 효율성이 낮은 기존의 문제점을 완화시키기 위해서, 재패키징 방지 장치를 추가로 제공한다. 장치의 구조물은 도 9에 도시되고, 다음과 같은 주행 유닛(901) 및 실행 유닛(902)들을 포함한다.
주행 유닛(901)은 설치 패키지 내의 대상 파일을 실행하고 설치 패키지 내에 안전한 동적 라이브러리를 로딩하도록 구성된다.
실행 유닛(902)은 대상 파일 내의 코드에 기초하여, 대상 파일에 삽입된 디지탈 워터마크 정보 및 안전한 동적 라이브러리에 저장된 검증 정보를 획득하는 단계와; 디지탈 워터마크 정보 및 검증 정보에 기초하여 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계를 실행하도록 구성된다.
본 발명의 장치의 구현 예의 작업 흐름은 다음과 같다: 먼저, 주행 유닛(901)은 설치 패키지에서 대상 파일을 실행하고 설치 패키지에 안전한 동적 라이브러리를 로딩하며; 및 실행 유닛(902)은 대상 파일의 코드에 기초하여 대상 파일에 삽입된 디지탈 워터마크 정보 및 안전한 동적 라이브러리에 저장된 검증 정보를 획득하는 단계와; 디지탈 워터마크 정보 및 검증 정보에 기초하여 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계를 수행한다.
본 발명의 장치의 구현 예에서, 재패키징 방지는 많은 방법들을 사용함으로써 구현된다. 예를 들어, 제1 구현 예에서, 대상 파일은 사전 결정된 코드가 컴파일된 후 획득되는 대상 파일이고, 디지탈 워터마크 정보는 컴파일된 대상 파일의 끝부분에 삽입된다.
제2 구현 예에서, 대상 파일에 삽입된 디지탈 워터마크 정보를 획득하는 단계는, 대상 파일의 원래 길이에 기초하여 대상 파일 내의 디지탈 워터마크 정보의 시작 어드레스를 결정하는 단계 - 원래 길이는 디지탈 워터마크 정보가 삽입되기 전의 대상 파일의 길이임 -; 및 시작 어드레스에 기초하여 대상 파일로부터 디지탈 워터마크 정보를 획득하는 단계를 포함한다.
제3 구현 예에서, 디지탈 워터마크 정보 및 검증 정보에 기초하여 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계는, 디지탈 워터마크 정보가 검증 정보와 일치하는지를 검증하는 단계; 및 디지탈 워터마크 정보가 검증 정보와 일치하는 경우, 설치 패키지가 원래의 설치 패키지임을 결정하거나; 또는 디지탈 워터마크 정보가 검증 정보와 일치하지 않는 경우, 설치 패키지가 재패키지된 설치 패키지인 것으로 결정하는 단계를 포함한다.
제4 구현 예에서, 디지탈 워터마크 정보 및 검증 정보에 기초하여, 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계는, 디지탈 워터마크 정보가 명령어일 때, 명령어에 기초한 동작을 수행하여 동작 결과를 획득하는 단계; 동작 결과가 검증 정보와 일치하는지의 여부를 검증하는 단계; 및 동작 결과가 검증 정보와 일치하는 경우, 설치 패키지가 원래의 설치 패키지임을 결정하거나; 또는 동작 결과가 검증 정보와 일치하지 않는 경우, 설치 패키지가 재패키지된 설치 패키지인 것으로 결정하는 단계를 포함한다.
제5 구현 예에서, 디지탈 워터마크 정보 및 검증 정보에 기초하여 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계는, 디지탈 워터마크 정보가 명령어일 때, 명령어에 기초한 동작을 수행하여 동작 결과를 획득하는 단계; 동작 결과가 검증 정보의 동작 결과와 일치하는지의 여부를 검증하고, 명령어가 검증 정보 내의 명령어와 일치하는지의 여부를 검증하는 단계; 및 동작 결과가 검증 정보의 동작 결과와 일치하고 명령어가 검증 정보 내의 명령어와 일치하는 경우, 설치 패키지가 원래의 설치 패키지인 것을 결정하거나, 또는 그렇지 않으면 설치 패키지가 재패키지된 설치 패키지인 것으로 결정하는 단계를 포함한다.
본 발명의 장치의 구현 예에서 달성된 유익한 효과들은 이전의 방법 구현 예에서 달성된 유익한 효과와 동일하거나 유사하다. 반복을 피하기 위해, 본 명세서에서는 간략화를 위해 상세한 설명은 생략되어 있다.
당업자는 본 발명의 구현 예가 방법, 시스템, 또는 컴퓨터 프로그램 제품으로서 제공될 수 있다는 것을 이해해야 한다. 따라서, 본 발명은 하드웨어 전용 구현 예, 소프트웨어 전용 구현 예, 또는 소프트웨어와 하드웨어를 결합한 구현 예의 형태를 취할 수 있다. 또한, 본 발명은 컴퓨터 사용 가능한 프로그램 코드를 포함하는 하나 이상의 컴퓨터 사용 가능한 저장 매체(디스크 메모리, CD-ROM, 광학 메모리 등을 포함하지만 이들로 제한되지는 않음) 상에 구현되는 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
본 발명은 본 발명의 구현 예에 따른 방법, 디바이스(시스템), 및 컴퓨터 프로그램 제품의 흐름도 및/또는 블록도를 참조하여 설명된다. 흐름도 및/또는 블록도에서 각각의 프로세스 및/또는 각각의 블록을 구현하고 흐름도 및/또는 블록도에서 프로세스 및/또는 블록의 조합을 구현하기 위해 컴퓨터 프로그램 명령어들이 사용될 수 있다는 것을 이해해야 한다.
이들 컴퓨터 프로그램 명령어들은 머신을 생성하기 위한 범용 컴퓨터, 전용 컴퓨터, 삽입된 프로세서, 또는 임의의 다른 프로그램 가능한 데이터 처리 디바이스의 프로세서를 위해 제공될 수 있어, 컴퓨터 또는 임의의 다른 프로그램 가능한 데이터 처리 디바이스의 프로세서에 의해 실행되는 명령어들은 흐름도의 하나 이상의 프로세스 및/또는 블록도 내의 하나 이상의 블록에서 특정 기능을 구현하기 위한 디바이스를 생성한다.
이들 컴퓨터 프로그램 명령어들은 컴퓨터 또는 임의의 다른 프로그램 가능한 데이터 처리 디바이스가 특정 방법을 사용함으로써 작동하도록 명령할 수 있는 컴퓨터 판독 가능한 메모리에 저장될 수 있어서, 컴퓨터 판독 가능한 메모리에 저장된 명령어들은 명령 디바이스를 포함하는 물품을 생성한다. 명령 디바이스는 흐름도의 하나 이상의 프로세스 및/또는 블록도의 하나 이상의 블록에서 특정 기능을 구현하다.
이들 컴퓨터 프로그램 명령어들은 컴퓨터 또는 다른 프로그램 가능한 데이터 처리 디바이스에 로딩될 수 있어, 일련의 동작들 및 단계들이 컴퓨터 또는 다른 프로그램 가능한 디바이스 상에서 수행되고, 컴퓨터 구현 처리를 생성한다. 따라서, 컴퓨터 또는 다른 프로그램 가능한 디바이스에서 실행되는 명령어들은 흐름도의 하나 이상의 프로세스 및/또는 블록도의 하나 이상의 블록들에서 특정 기능을 구현하는 단계들을 제공한다.
통상적인 구성에서, 컴퓨팅 디바이스는 하나 이상의 중앙 처리 장치(CPU), 하나 이상의 입력/출력 인터페이스, 하나 이상의 네트워크 인터페이스, 및 하나 이상의 메모리들을 포함한다.
메모리는 판독 전용 메모리(ROM) 또는 플래시 메모리(플래시 RAM)와 같은 컴퓨터 판독 가능한 매체 내의 휘발성 메모리, 랜덤 액세스 메모리(RAM), 및/또는 비휘발성 메모리 등을 포함할 수 있다. 메모리는 컴퓨터 판독 가능한 매체의 일 예시이다.
컴퓨터 판독 가능한 매체는 임의의 방법 또는 기술을 사용하여 정보를 저장할 수 있는 영구 및 비영구적, 분리형 및 비분리형 매체를 포함한다. 정보는 컴퓨터 판독 가능한 명령어, 데이터 구조물, 프로그램의 모듈, 또는 다른 데이터일 수있다. 컴퓨터 저장 매체의 예시로는 위상 랜덤 변경 메모리(phase-random change memory, PRAM), 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM), 다른 유형의 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 전기적 소거 가능 프로그래머블 판독 전용 메모리(EEPROM), 플래시 메모리 또는 다른 메모리 기술, 컴팩트 디스크 판독 전용 메모리(CD-ROM), DVD(Digital Versatile Disk) 또는 다른 광학 저장 장치, 자기 카세트 테이프, 자기 테이프/디스크 저장 장치, 또는 다른 자기 저장 디바이스 또는 임의의 다른 비전송 매체를 포함하지만, 이들로 제한되는 것은 아니며, 컴퓨팅 장치에 의해 액세스될 수 있는 정보를 저장하는데 사용될 수 있다. 본 명세서에서 정의된 바와 같이, 컴퓨터 판독 가능한 매체는 변조된 데이터 신호 및 캐리어와 같은 일시적 컴퓨터 판독 가능한 매체(임시 매체)를 포함하지는 않는다.
"포함하는(include)", "포함하는(contain)" 또는 그들의 임의의 다른 변형은 비독점적인 포함을 커버하도록 의도되는 것으로, 프로세스, 방법, 상품, 또는 소자들의 목록을 포함하는 디바이스가 이들 소자들을 포함할 뿐만 아니라 명시적으로 열거되지 않은 다른 소자들도 포함하거나, 또는 이러한 프로세스, 방법, 상품, 또는 디바이스에 고유한 소자들을 추가로 포함하도록 되어 있다는 점에 더 주목할 필요가 있다. "...을 포함하는(includes a...)"에 의해 선행하는 소자는 더 많은 제약 조건이 없이 그 소자를 포함하는 프로세스, 방법, 상품, 또는 디바이스에서 동일한 추가의 소자들의 존재를 배제하지 않는다.
당업자는 본 명세서의 구현 예가 방법, 시스템, 또는 컴퓨터 프로그램 제품으로서 제공될 수 있음을 이해해야 한다. 따라서, 본 출원은 하드웨어 전용 구현, 소프트웨어 전용 구현, 또는 소프트웨어와 하드웨어를 결합한 구현의 형태를 취할 수 있다. 또한, 본 출원은 컴퓨터 사용 가능한 프로그램 코드를 포함하는 하나 이상의 컴퓨터 사용 가능한 저장 매체(디스크 메모리, CD-ROM, 광학 메모리 등을 포함하지만 이들로 제한정되지는 않음) 상에 구현되는 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
전술한 설명은 단지 본 출원의 구현 예일 뿐이며, 본 출원을 제한하고자 의도되는 것은 아니다. 당업자라면, 본 출원에서 다양한 변경 및 변화가 있을 수 있다. 본 출원의 사상 및 원리 내에서 이루어진 임의의 수정, 등가 교체, 개선 등은 본 출원의 청구항의 범위에 포함되어야 한다.

Claims (13)

  1. 재패키징 방지(anti-repackaging) 방법에 있어서,
    설치 패키지에서 대상 파일을 실행하고 설치 패키지에 안전한 동적 라이브러리를 로딩하는 단계; 및
    상기 대상 파일의 코드에 기초하여,
    상기 대상 파일에 삽입된 디지탈 워터마크 정보 및 상기 안전한 동적 라이브러리에 저장된 검증 정보를 획득하는 단계, 및 상기 디지탈 워터마크 정보 및 상기 검증 정보를 기반으로 하여 상기 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계를 수행하는 단계
    를 포함하는 것인, 재패키징 방지 방법.
  2. 제1항에 있어서, 상기 대상 파일은 사전 결정된 코드가 컴파일된 후 획득되는 대상 파일이고,
    상기 디지탈 워터마크 정보는 상기 컴파일된 대상 파일의 끝부분에 삽입되는 것인, 재패키징 방지 방법.
  3. 제2항에 있어서, 상기 대상 파일에 삽입된 디지탈 워터마크 정보를 획득하는 것은,
    상기 대상 파일의 원래의 길이에 기초하여 상기 대상 파일 내의 상기 디지탈 워터마크 정보의 시작 어드레스를 결정하는 단계 - 상기 원래의 길이는 상기 디지탈 워터마크 정보가 삽입되기 전의 대상 파일의 길이임 -; 및
    상기 시작 어드레스에 기초하여 상기 대상 파일로부터 상기 디지탈 워터마크 정보를 획득하는 단계를 포함하는 것인, 재패키징 방지 방법.
  4. 제1항에 있어서, 상기 디지탈 워터마크 정보 및 상기 검증 정보에 기초하여 상기 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계는,
    상기 디지탈 워터마크 정보가 상기 검증 정보와 일치하는지 여부를 검증하는 단계; 및
    상기 디지탈 워터마크 정보가 상기 검증 정보와 일치하면, 상기 설치 패키지가 원래의 설치 패키지임을 결정하거나; 또는 상기 디지탈 워터마크 정보가 상기 검증 정보와 일치하지 않으면, 상기 설치 패키지가 재패키지된 설치 패키지인 것을 결정하는 단계를 포함하는 것인, 재패키징 방지 방법.
  5. 제1항에 있어서, 상기 디지탈 워터마크 정보 및 상기 검증 정보에 기초하여 상기 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계는,
    상기 디지탈 워터마크 정보가 명령어일 때, 상기 명령어에 기초한 동작을 수행하여 동작 결과를 획득하는 단계;
    상기 동작 결과가 상기 검증 정보와 일치하는지의 여부를 검증하는 단계; 및
    상기 동작 결과가 상기 검증 정보와 일치하면, 상기 설치 패키지가 원래의 설치 패키지임을 결정하거나; 또는 상기 동작 결과가 상기 검증 정보와 일치하지 않으면, 상기 설치 패키지가 재패키지된 설치 패키지인 것을 결정하는 단계를 포함하는 것인, 재패키징 방지 방법.
  6. 제1항에 있어서, 상기 디지탈 워터마크 정보 및 상기 검증 정보에 기초하여 상기 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계는,
    상기 디지탈 워터마크 정보가 명령어일 때, 상기 명령어에 기초한 동작을 수행하여 동작 결과를 획득하는 단계;
    상기 동작 결과가 상기 검증 정보의 동작 결과와 일치하는지의 여부를 검증하고, 상기 명령어가 상기 검증 정보 내의 명령어와 일치하는지의 여부를 검증하는 단계; 및
    상기 동작 결과가 상기 검증 정보의 동작 결과와 일치하고 상기 명령어가 상기 검증 정보 내의 명령어와 일치하는 경우, 상기 설치 패키지가 원래의 설치 패키지인 것을 결정하거나, 또는 그렇지 않으면 상기 설치 패키지가 재패키지된 설치 패키지인 것을 결정하는 단계를 포함하는 것인, 재패키징 방지 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 이 방법은 안드로이드 운영 체제(ANDROID operating system)에 적용되고,
    상기 대상 파일은 덱스 파일(dex file)이며,
    상기 안전한 동적 라이브러리는 그러한 라이브러리인 것인, 재패키징 방지 방법.
  8. 재패키징 방지 장치에 있어서,
    주행 유닛 및 실행 유닛을 포함하고,
    상기 주행 유닛은, 설치 패키지에서 대상 파일을 실행하고 상기 설치 패키지에 안전한 동적 라이브러리를 로딩하도록 구성되며; 및
    상기 실행 유닛은, 상기 대상 파일의 코드에 기초하여, 상기 대상 파일에 삽입된 디지탈 워터마크 정보 및 상기 안전한 동적 라이브러리에 저장된 검증 정보를 획득하는 단계, 및 상기 디지탈 워터마크 정보 및 상기 검증 정보를 기반으로 하여 상기 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 단계를 수행하도록 구성되는 것인, 재패키징 방지 장치.
  9. 제8항에 있어서, 상기 대상 파일은 사전 결정된 코드가 컴파일된 후 획득되는 대상 파일이고,
    상기 디지탈 워터마크 정보는 상기 컴파일된 대상 파일의 끝부분에 삽입되는 것인, 재패키징 방지 장치.
  10. 제9항에 있어서, 상기 대상 파일에 삽입된 디지탈 워터마크 정보를 획득하는 동작은,
    상기 대상 파일의 원래의 길이에 기초하여 상기 대상 파일 내의 상기 디지탈 워터마크 정보의 시작 어드레스를 결정하는 동작 - 상기 원래의 길이는 상기 디지탈 워터마크 정보가 삽입되기 전의 대상 파일의 길이임 -; 및
    상기 시작 어드레스에 기초하여 상기 대상 파일로부터 상기 디지탈 워터마크 정보를 획득하는 동작을 포함하는 것인, 재패키징 방지 장치.
  11. 제8항에 있어서, 상기 디지탈 워터마크 정보 및 상기 검증 정보에 기초하여 상기 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 동작은,
    상기 디지탈 워터마크 정보가 상기 검증 정보와 일치하는지의 여부를 검증하는 동작; 및
    상기 디지탈 워터마크 정보가 상기 검증 정보와 일치하는 경우, 상기 설치 패키지가 원래의 설치 패키지임을 결정하거나; 또는 상기 디지탈 워터마크 정보가 상기 검증 정보와 일치하지 않는 경우, 상기 설치 패키지가 재패키지된 설치 패키지인 것을 결정하는 동작을 포함하는 것인, 재패키징 방지 장치.
  12. 제8항에 있어서, 상기 디지탈 워터마크 정보 및 상기 검증 정보에 기초하여 상기 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 동작은,
    상기 디지탈 워터마크 정보가 명령어일 때, 상기 명령어에 기초한 동작을 수행하여 동작 결과를 획득하는 동작;
    상기 동작 결과가 상기 검증 정보와 일치하는지의 여부를 검증하는 동작; 및
    상기 동작 결과가 상기 검증 정보와 일치하는 경우, 상기 설치 패키지가 원래의 설치 패키지임을 결정하거나; 또는 상기 동작 결과가 상기 검증 정보와 일치하지 않는 경우, 상기 설치 패키지가 재패키지된 설치 패키지인 것을 결정하는 동작을 포함하는 것인, 재패키징 방지 장치.
  13. 제8항에 있어서, 상기 디지탈 워터마크 정보 및 상기 검증 정보에 기초하여 상기 설치 패키지가 재패키지된 설치 패키지인지의 여부를 검증하는 동작은,
    상기 디지탈 워터마크 정보가 명령어일 때, 상기 명령어에 기초한 동작을 수행하여 동작 결과를 획득하는 동작;
    상기 동작 결과가 상기 검증 정보의 동작 결과와 일치하는지를 검증하고, 상기 명령어가 상기 검증 정보 내의 명령어와 일치하는지의 여부를 검증하는 동작; 및
    상기 동작 결과가 상기 검증 정보의 동작 결과와 일치하고 상기 명령어가 상기 검증 정보 내의 명령어와 일치하는 경우, 상기 설치 패키지가 원래의 설치 패키지인 것을 결정하거나, 또는 그렇지 않으면 상기 설치 패키지가 재패키지된 설치 패키지인 것을 결정하는 동작을 포함하는 것인, 재패키징 방지 장치.
KR1020197013506A 2016-10-11 2017-09-26 소프트웨어 재패키징 방지 방법 및 장치 KR102192880B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610887188.5A CN106971098B (zh) 2016-10-11 2016-10-11 一种防重打包的方法及其装置
CN201610887188.5 2016-10-11
PCT/CN2017/103403 WO2018068633A1 (zh) 2016-10-11 2017-09-26 一种防重打包的方法及其装置

Publications (2)

Publication Number Publication Date
KR20190061075A true KR20190061075A (ko) 2019-06-04
KR102192880B1 KR102192880B1 (ko) 2020-12-22

Family

ID=59334735

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197013506A KR102192880B1 (ko) 2016-10-11 2017-09-26 소프트웨어 재패키징 방지 방법 및 장치

Country Status (11)

Country Link
US (1) US10685117B2 (ko)
EP (1) EP3528149B1 (ko)
JP (1) JP6746156B2 (ko)
KR (1) KR102192880B1 (ko)
CN (1) CN106971098B (ko)
ES (1) ES2874781T3 (ko)
PH (1) PH12019500785A1 (ko)
PL (1) PL3528149T3 (ko)
SG (1) SG11201903264RA (ko)
TW (1) TWI675310B (ko)
WO (1) WO2018068633A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106971098B (zh) 2016-10-11 2020-06-02 阿里巴巴集团控股有限公司 一种防重打包的方法及其装置
CN107256349B (zh) * 2017-06-13 2020-02-28 广州阿里巴巴文学信息技术有限公司 动态库防盗用方法、装置、电子设备及可读存储介质
KR101920597B1 (ko) * 2017-11-16 2018-11-21 숭실대학교산학협력단 동적 코드 추출 기반 자동 분석 방지 우회 및 코드 로직 해석 장치
CN108304697B (zh) * 2017-12-11 2020-05-19 深圳壹账通智能科技有限公司 检测app二次打包的方法、装置及移动终端
CN109739544B (zh) * 2018-12-25 2022-11-04 北京三快在线科技有限公司 用于生成应用安装包的方法、装置及电子设备
CN109901981A (zh) * 2019-02-28 2019-06-18 北京智游网安科技有限公司 一种截屏泄露处理方法、智能终端及存储介质
CN110704816B (zh) * 2019-09-29 2021-10-22 武汉极意网络科技有限公司 接口破解的识别方法、装置、设备及存储介质
CN113127418B (zh) * 2019-12-30 2024-08-27 Oppo广东移动通信有限公司 文件检测方法、装置、终端及存储介质
CN113132421B (zh) * 2019-12-30 2022-11-04 Oppo广东移动通信有限公司 文件检测方法、装置、终端及存储介质
CN113127859B (zh) * 2019-12-30 2024-04-12 Oppo广东移动通信有限公司 待检测文件的检测方法、装置、终端及存储介质
CN113709195B (zh) * 2020-05-20 2024-05-28 广州汽车集团股份有限公司 一种车辆软件升级方法、装置及系统
CN112069468B (zh) * 2020-08-26 2023-05-30 上海上讯信息技术股份有限公司 一种页面动态水印的方法及设备
CN113641964B (zh) * 2021-10-19 2022-05-17 北京邮电大学 重打包应用检测方法、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040172544A1 (en) * 1999-05-12 2004-09-02 Fraunhofer Crcg, Inc. Protecting mobile code against malicious hosts
KR101498820B1 (ko) * 2013-11-06 2015-03-05 순천향대학교 산학협력단 안드로이드 환경에서의 어플리케이션 리패키징 탐지 방법
CN104932902A (zh) * 2015-07-09 2015-09-23 魅族科技(中国)有限公司 一种生成apk文件的方法及终端
KR20160020294A (ko) * 2014-08-13 2016-02-23 (주)잉카엔트웍스 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW480439B (en) * 1998-12-17 2002-03-21 Inventec Corp Method for examining correctness of system operation
US20060010430A1 (en) * 2001-05-04 2006-01-12 Thales Device and process for the signature, the marking and the authentication of computer programs
US7877613B2 (en) * 2002-09-04 2011-01-25 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Protecting mobile code against malicious hosts
US7784044B2 (en) * 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US8024571B2 (en) * 2006-12-22 2011-09-20 Schlumberger Technology Corporation Method of and system for watermarking application modules
US8375458B2 (en) * 2007-01-05 2013-02-12 Apple Inc. System and method for authenticating code executing on computer system
US8950007B1 (en) * 2008-04-07 2015-02-03 Lumension Security, Inc. Policy-based whitelisting with system change management based on trust framework
KR20110104507A (ko) * 2008-12-10 2011-09-22 스미토모 베이클리트 컴퍼니 리미티드 과립상의 반도체 봉지용 에폭시 수지 조성물 및 그것을 이용한 반도체 장치 및 반도체 장치의 제조 방법
US8844032B2 (en) * 2012-03-02 2014-09-23 Sri International Method and system for application-based policy monitoring and enforcement on a mobile device
US20120317421A1 (en) * 2012-06-19 2012-12-13 Concurix Corporation Fingerprinting Executable Code
US9619665B2 (en) * 2014-07-22 2017-04-11 Cheng-Han KO Method and system for adding dynamic labels to a file and encrypting the file
CN104239757B (zh) * 2014-09-30 2017-04-19 北京奇虎科技有限公司 应用程序防止逆向的方法及装置、运行方法及终端
CN105205356B (zh) * 2015-09-17 2017-12-29 清华大学深圳研究生院 一种app应用重打包检测方法
CN105956456B (zh) * 2016-04-26 2019-02-19 南京邮电大学 一种对Android系统进行四重联合签名验证的实现方法
CN106971098B (zh) * 2016-10-11 2020-06-02 阿里巴巴集团控股有限公司 一种防重打包的方法及其装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040172544A1 (en) * 1999-05-12 2004-09-02 Fraunhofer Crcg, Inc. Protecting mobile code against malicious hosts
KR101498820B1 (ko) * 2013-11-06 2015-03-05 순천향대학교 산학협력단 안드로이드 환경에서의 어플리케이션 리패키징 탐지 방법
KR20160020294A (ko) * 2014-08-13 2016-02-23 (주)잉카엔트웍스 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
CN104932902A (zh) * 2015-07-09 2015-09-23 魅族科技(中国)有限公司 一种生成apk文件的方法及终端

Also Published As

Publication number Publication date
PH12019500785A1 (en) 2019-11-11
JP6746156B2 (ja) 2020-08-26
TW201814576A (zh) 2018-04-16
US10685117B2 (en) 2020-06-16
TWI675310B (zh) 2019-10-21
CN106971098A (zh) 2017-07-21
ES2874781T3 (es) 2021-11-05
EP3528149A1 (en) 2019-08-21
PL3528149T3 (pl) 2021-10-11
EP3528149B1 (en) 2021-04-07
JP2019535087A (ja) 2019-12-05
SG11201903264RA (en) 2019-05-30
WO2018068633A1 (zh) 2018-04-19
EP3528149A4 (en) 2019-10-16
US20190243974A1 (en) 2019-08-08
CN106971098B (zh) 2020-06-02
KR102192880B1 (ko) 2020-12-22

Similar Documents

Publication Publication Date Title
KR102192880B1 (ko) 소프트웨어 재패키징 방지 방법 및 장치
KR102289995B1 (ko) 데이터 저장, 데이터 검사 및 데이터 연계 방법 및 장치
CN110058873B (zh) 应用页面更新方法、装置、设备和存储介质
US9483242B2 (en) Wholesale replacement of specialized classes in a runtime environments
US11507669B1 (en) Characterizing, detecting and healing vulnerabilities in computer code
US10795659B1 (en) System and method for live patching processes in user space
WO2021249359A1 (zh) 数据完整性保护的方法和装置
KR102557005B1 (ko) 인증 가속화를 위해 신뢰할 수 있는 저장 장치에 대한 검사 생성
US20070022411A1 (en) System and method for compiling program code ahead of time
US10757087B2 (en) Secure client authentication based on conditional provisioning of code signature
JP2017538217A (ja) アプリケーション整合性の検証を提供する方法及びデバイス
WO2022156379A1 (zh) 一种热修复方法及装置
US20150026483A1 (en) Systems and Methods for Mobile Application Protection
CN109815682B (zh) 一种对权限进行追踪管理的方法、装置和计算机记录介质
CN111625225A (zh) 一种程序指定数据输出方法和装置
CN106874173B (zh) 页面模板的测试方法和装置
US9842018B2 (en) Method of verifying integrity of program using hash
CN107463423B (zh) 依赖包工具的验证方法、存储介质、电子设备及系统
WO2017039588A1 (en) Software patch fix based on checksums
US11055202B1 (en) Compilation scheme for tagged global variables
CN106897588B (zh) 一种标签函数的处理方法及装置
WO2019157891A1 (zh) 应用安装方法、应用安装包的生成方法
TW202022660A (zh) 映像檔打包方法及映像檔打包系統
KR102626841B1 (ko) 동적 라이브러리의 자가 무결성 검증 방법 및 이를 위한 장치
KR101562282B1 (ko) 오덱스 무결성 검증 시스템 및 방법

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
N231 Notification of change of applicant
GRNT Written decision to grant