KR20160144921A - Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법 - Google Patents
Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법 Download PDFInfo
- Publication number
- KR20160144921A KR20160144921A KR1020160069723A KR20160069723A KR20160144921A KR 20160144921 A KR20160144921 A KR 20160144921A KR 1020160069723 A KR1020160069723 A KR 1020160069723A KR 20160069723 A KR20160069723 A KR 20160069723A KR 20160144921 A KR20160144921 A KR 20160144921A
- Authority
- KR
- South Korea
- Prior art keywords
- version
- module
- genuine
- software protection
- protection scheme
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000006870 function Effects 0.000 claims description 41
- 238000001514 detection method Methods 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 20
- 230000007246 mechanism Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012795 verification Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- XOJVVFBFDXDTEG-UHFFFAOYSA-N Norphytane Natural products CC(C)CCCC(C)CCCC(C)CCCC(C)C XOJVVFBFDXDTEG-UHFFFAOYSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005204 segregation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/101—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
- G06F21/1015—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to users
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6281—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
운영 시스템을 갖고 정품 또는 탈옥한 실행 디바이스(120)에 의해 실행되도록 의도된 모듈을 보호하는 것이 개시된다. 애플리케이션 제공자 디바이스는 정품 실행 디바이스 상에서 실행되도록 의도된 모듈(320)의 제1 버전 - 제1 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 - 을 획득하고(S20); 탈옥한 디바이스 상에서 실행되도록 의도된 애플리케이션(330)의 제2 버전 - 제2 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 - 을 획득하고(S22); 탈옥 기능(310)을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하고, 실행 디바이스가 정품인 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥한 경우에 모듈의 제2 버전을 호출하도록 구성된 탈옥 검출 기능(310)을 획득하고(S24); 탈옥 검출 기능(310), 모듈(320)의 제1 버전 및 모듈(330)의 제2 버전을 포함하고, 인터페이스(113)에 의해 출력되는(S26) 애플리케이션 패키지(300)를 생성한다(S25). 모듈 제공자 디바이스, 애플리케이션 패키지, 및 애플리케이션 패키지를 저장하는 저장 서포트(130)가 또한 제공된다.
Description
본 개시내용은 일반적으로 소프트웨어 보호에 관한 것으로, 특히, iOS상에서 구동될 소프트웨어의 보호에 관한 것이다.
본 섹션은 후술되고 그리고/또는 아래에 주장되는 본 개시내용의 다양한 양태들에 관련될 수 있는 기술분야의 다양한 양태들에 대해 독자를 소개하려는 것이다. 본 개시내용은 본 개시내용의 다양한 양태들의 더 양호한 이해를 촉진하기 위해 독자에게 배경 정보를 제공하는데 있어서 도움이 되는 것으로 여겨진다. 이에 따라, 이들 서술들이 이러한 관점에서 읽혀지고, 종래 기술을 인정하는 것이 아니라는 것으로 이해되어야 한다.
iOS 애플리케이션들은 소스로부터 iOS 애플리케이션들이 설치될 iOS 디바이스까지 암호화된 분포에 의해 분해 공학(reverse engineering)에 대해 보호된다. iOS 디바이스 상에 설치되면, iOS 자체는 프로세스들의 격리 및 권한들의 분리를 사용하여 동적 분석에 대해 애플리케이션들을 보호한다.
그러나, 보호는 탈옥(jailbroken)하지 않은 iOS 디바이스들에만 적용된다. "Hacking and Securing iOS Applications"에서 Jonathan Zdziarski이 설명하는 바와 같이, 탈옥한 디바이스(jailbroken device)로부터 애플리케이션의 코드를 덤프하기 위해 GNU 디버거(gdb)를 사용하는 것이 용이하다. 탈옥한 디바이스는 탈옥하지 않은 디바이스 상에서 이용가능하지 않은 증가된 권한들을 획득하기 위해 변경되었다.
따라서, iOS에 의해 제공된 보호에 의존하는 것은 충분하지 않다. 그러나, iOS가 설명된 애플리케이션들내에서 임의의 코드 변경을 허용하지 않기 때문에, 사용될 수 있는 유일한 소프트웨어 보호 메커니즘들은 무결성 확인 및 제어 흐름 그래프(CFG) 평면화이고, 이들 양자는 일반적으로 함께 사용된다. 이들 소프트웨어 보호 메커니즘들은, iOS에 의해 제공된 암호화가 약하고, 애플리케이션이 정적 분석을 사용하는 분해 공학에 또한 취약하기 때문에 종종 필요하다.
그 후, 다시, CFG 평면화는 동적 공격들이 아닌 정적 공격들에 대해 유일하게 효율적이고, Wurster 등은 "A Generic Attack on Checksumming-Based Software Tamper Resistance"에 설명한 바와 같이, 2개의 코드 섹션들을 병렬로 구동함으로써 무결성 확인을 우회하는 것이 가능하다는 것을 나타내었다.
iOS 애플리케이션들의 보호에 관한 종래의 문제점들 중 적어도 일부를 극복하는 솔루션을 갖는 것이 소망된다는 것이 이해될 것이다. 본 원리들은 이러한 솔루션을 제공한다.
제1 양태에서, 본 원리들은 운영 시스템을 갖고 정품(genuine) 또는 탈옥한 실행 디바이스에 의해 실행되도록 의도된 모듈을 보호하는 애플리케이션 제공자 디바이스에 관한 것이다. 애플리케이션 제공자 디바이스는 정품 실행 디바이스 상에서 실행되도록 의도된 모듈의 제1 버전 - 제1 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 - 을 획득하고, 탈옥한 디바이스 상에서 실행되도록 의도된 모듈의 제2 버전 - 제2 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 - 을 획득하고, 실행 디바이스가 정품 또는 탈옥하였는지를 결정하고, 실행 디바이스가 정품인 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥한 경우에 모듈의 제2 버전을 호출하도록 구성된 탈옥 검출 기능을 획득하며, 탈옥 검출 기능, 모듈의 제1 버전 및 모듈의 제2 버전을 포함하는 애플리케이션 패키지를 생성하도록 구성된 프로세싱 유닛을 포함한다. 애플리케이션 제공자 디바이스는 애플리케이션 패키지를 출력하도록 구성된 인터페이스를 또한 포함한다.
제1 양태의 다양한 실시예들은 다음을 포함한다:
ㆍ
프로세싱 유닛이 모듈의 제1 버전을 보호하기 위해 제1 소프트웨어 보호 기법을 사용하도록 더 구성된다. 제1 소프트웨어 보호 기법은 제어 흐름 그래프 평면화 및 실행 디바이스가 정품이라는 검증 중 적어도 하나를 포함할 수 있다.
ㆍ
프로세싱 유닛이 모듈의 제2 버전을 보호하기 위해 제2 소프트웨어 보호 기법을 사용하도록 더 구성된다. 제2 소프트웨어 보호 기법은 동적 암호화일 수 있다.
제2 양태에서, 본 원리들은 운영 시스템을 갖고 정품 또는 탈옥한 실행 디바이스에 의해 실행되도록 의도된 모듈을 보호하는 방법에 관한 것이다. 애플리케이션 제공자 디바이스에서의 방법은, 프로세싱 유닛이, 정품 실행 디바이스 상에서 실행되도록 의도된 모듈의 제1 버전을 획득하는 단계 - 제1 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -; 프로세싱 유닛이, 탈옥한 디바이스 상에서 실행되도록 의도된 모듈의 제2 버전을 획득하는 단계 - 제2 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -; 프로세싱 유닛이, 실행 디바이스가 정품 또는 탈옥하였는지를 결정하고, 실행 디바이스가 정품인 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥한 경우에 모듈의 제2 버전을 호출하도록 구성된 탈옥 검출 기능을 획득하는 단계; 프로세싱 유닛이, 탈옥 검출 기능, 모듈의 제1 버전 및 모듈의 제2 버전을 포함하는 애플리케이션 패키지를 생성하는 단계; 및 인터페이스가 애플리케이션 패키지를 출력하는 단계를 포함한다.
제2 양태의 다양한 실시예들은 다음을 포함한다:
ㆍ
프로세싱 유닛이 모듈의 제1 버전을 보호하기 위해 제1 소프트웨어 보호 기법을 사용하도록 더 구성된다. 제1 소프트웨어 보호 기법은 제어 흐름 그래프 평면화 및 실행 디바이스가 정품이라는 검증 중 적어도 하나를 포함할 수 있다.
ㆍ
프로세싱 유닛이 모듈의 제2 버전을 보호하기 위해 제2 소프트웨어 보호 기법을 사용하도록 더 구성된다. 제2 소프트웨어 보호 기법은 동적 암호화일 수 있다.
제3 양태에서, 본 원리들은 프로세서에 의해 실행가능한 프로그램 코드 명령어들을 포함하는 컴퓨터 프로그램에 관한 것이고, 프로그램 코드는 정품 실행 디바이스 상에서 실행되도록 의도된 모듈의 제1 버전 - 제1 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -; 탈옥한 디바이스 상에서 실행되도록 의도된 모듈의 제2 버전 - 제2 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -; 및 탈옥 기능을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하고, 실행 디바이스가 정품인 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥한 경우에 모듈의 제2 버전을 호출하도록 구성된 탈옥 검출 기능을 포함한다.
제4 양태에서, 본 원리들은 비일시적 컴퓨터 판독가능 매체상에 저장되고, 정품 실행 디바이스 상에서 실행되도록 의도된 모듈의 제1 버전 - 제1 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -; 탈옥한 디바이스 상에서 실행되도록 의도된 모듈의 제2 버전 - 제2 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -; 및 탈옥 기능을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하고, 실행 디바이스가 정품인 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥한 경우에 모듈의 제2 버전을 호출하도록 구성된 탈옥 검출 기능을 포함하는, 컴퓨터 프로그램 제품에 관한 것이다.
제5 양태에서, 본 원리들은 운영 시스템을 갖는 실행 디바이스에 관한 것이고, 실행 디바이스는 정품 실행 디바이스 상에서 실행되도록 의도되고 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현하는 모듈의 제1 버전, 탈옥한 디바이스 상에서 실행되도록 의도되고 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현하는 모듈의 제2 버전, 및 탈옥 기능을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하도록 구성된 탈옥 검출 기능을 저장하는 메모리, 및 실행 디바이스가 정품 또는 탈옥하였는지를 결정하기 위해 탈옥 검출 기능을 실행하고, 실행 디바이스가 정품이라는 것이 결정된 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥하였다는 것이 결정된 경우에 모듈의 제2 버전을 호출하도록 구성된 프로세싱 유닛을 포함한다.
이제, 본 원리들의 바람직한 특징들이 첨부한 도면들을 참조하여 제한하지 않는 예로서 설명될 것이다.
도 1은 본 원리들을 구현하는 시스템(100)을 예시한다.
도 2는 본 원리들에 따른 보호된 모듈을 생성하는 방법을 예시한다.
도 3은 본 원리들에 따른 애플리케이션 패키지를 예시한다.
도 1은 본 원리들을 구현하는 시스템(100)을 예시한다.
도 2는 본 원리들에 따른 보호된 모듈을 생성하는 방법을 예시한다.
도 3은 본 원리들에 따른 애플리케이션 패키지를 예시한다.
도면들에 도시된 엘리먼트들이 하드웨어, 소프트웨어, 또는 이들의 조합의 다양한 형태들로 구현될 수 있다는 것이 이해되어야 한다. 바람직하게는, 이들 엘리먼트들은 프로세서, 메모리, 및 입/출력 인터페이스들을 포함할 수 있는 하나 이상의 적절하게 프로그래밍된 범용 디바이스들상에서 하드웨어와 소프트웨어의 조합으로 구현된다. 여기서, 어구 "결합된"은 직접 연결되거나 하나 이상의 중간 컴포넌트를 통해 간접 연결되는 것을 의미하기 위해 정의된다. 이러한 중간 컴포넌트들은 하드웨어 및 소프트웨어 기반 컴포넌트들 양자를 포함할 수 있다.
본 설명은 본 개시내용의 원리들을 예시한다. 따라서, 본 기술분야의 통상의 기술자가 본 명세서에 명확하게 설명되거나 도시되지 않더라도, 본 개시내용의 원리들을 실시하고 그 범주내에 포함되는 다양한 배치형태들을 고안할 수 있다는 것이 이해될 것이다.
본 명세서에서 인용되는 모든 예들 및 조건부 언어는 기술을 발전시키는데 발명자에 의해 기여된 본 개시내용의 원리들 및 개념들을 이해하는데 있어서 독자를 보조하기 위한 교육적인 목적으로 의도되고, 이러한 구체적으로 인용된 예들 및 조건들에 제한되지 않는 것으로 해석되어야 한다.
더욱이, 본 개시내용의 원리들, 양태들 및 실시예들을 인용하는 본 명세서에서 모든 서술들, 뿐만 아니라 그것의 특정한 예들은 그것의 구조적 및 기능적 등가물들 모두를 포함하는 것으로 의도된다. 추가로, 이러한 등가물들이 현재 공지되어 있는 등가물들 뿐만 아니라 장래에 개발될 등가물들, 즉, 구조에 관계없이 동일한 기능을 수행하는 개발되는 임의의 엘리먼트들을 포함한다는 것이 의도된다.
따라서, 예를 들어, 본 명세서에 제공된 블록도들이 본 개시내용의 원리들을 실시하는 예시적인 회로의 개념도들을 나타낸다는 것이 본 기술분야의 통상의 기술자에 의해 이해될 것이다. 유사하게, 임의의 플로우차트들, 흐름도들, 상태 천이도들, 의사코드 등이 컴퓨터 판독가능 매체에서 실질적으로 표현될 수 있어서, 컴퓨터 또는 프로세서가 명시적으로 도시되든 안 되든, 이러한 컴퓨터 또는 프로세서에 의해 실행될 수 있는 다양한 프로세스들을 나타낸다는 것이 이해될 것이다.
도면들에 도시된 다양한 엘리먼트들의 기능들은 전용 하드웨어 뿐만 아니라 적절한 소프트웨어와 관련하여 소프트웨어를 실행할 수 있는 하드웨어의 사용을 통해 제공될 수 있다. 프로세서에 의해 제공될 때, 기능들은 단일의 전용 프로세서에 의해, 단일의 공유 프로세서에 의해, 또는 그 일부가 공유될 수 있는 복수의 개별 프로세서들에 의해 제공될 수 있다. 더욱이, 용어 "프로세서" 또는 "제어기"의 명시적인 사용이 소프트웨어를 실행할 수 있는 하드웨어를 배타적으로 지칭하는 것으로 해석되어서는 안 되고, 디지털 신호 프로세서(DSP), 소프트웨어를 저장하기 위한 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 및 비휘발성 스토리지를 제한없이 함축적으로 포함할 수 있다.
종래의 그리고/또는 통상적인 다른 하드웨어가 또한 포함될 수 있다. 유사하게, 도면들에 도시된 임의의 스위치들은 단지 개념적이다. 이들의 기능들은 프로그램 로직의 동작을 통해, 전용 로직을 통해, 프로그램 제어와 전용 로직의 상호작용을 통해, 또는 심지어 수동으로 실행될 수 있고, 특정한 기법이 문맥으로부터 더욱 구체적으로 이해되는 바와 같이 구현자에 의해 선택가능하다.
본 개시내용의 청구항들에서, 특정한 기능을 수행하는 수단으로서 표현된 임의의 엘리먼트는 예를 들어, a) 그 기능을 수행하는 회로 엘리먼트들의 조합 또는 b) 기능을 수행하기 위해 소프트웨어를 실행하는 적절한 회로와 조합된 펌웨어, 마이크로코드 등을 포함하는 임의의 형태의 소프트웨어를 포함하는 그 기능을 수행하는 임의의 방식을 포함하는 것으로 의도된다. 이러한 청구항들에 정의된 바와 같은 본 개시내용은 다양한 인용된 수단들에 의해 제공된 기능들이 청구항들이 요구하는 방식으로 조합되고 종합된다는 사실에 상주한다. 따라서, 이들 기능들을 제공할 수 있는 임의의 수단들이 본 명세서에 나타낸 바와 동등하다는 것이 간주된다.
설명에서, 모듈에 대해 참조가 이루어진다. 이러한 모듈은 실행가능한 코드를 포함하고, 공유 라이브러리, 실행파일(executable) 또는 라이브러리의 일부, 또는 심지어 전체 애플리케이션일 수 있다.
본 원리들의 방법 및 디바이스들은 모듈의 2개의 버전: 탈옥하지 않은 디바이스들(이하, "정품 디바이스들"로 칭함) 상에서 실행될 일 버전, 및 탈옥한 디바이스들상에서 실행될 일 버전을 포함하는 애플리케이션 패키지를 제공한다. 각각의 버전은 동일한 기능을 구현하지만, 상이한 소프트웨어 보호 메커니즘들을 사용하여 보호된다(그러나, 일부 소프트웨어 보호 메커니즘들이 버전들 양자에 의해 공유될 수 있다는 것이 이해될 것이다).
도 1은 본 원리들을 구현하는 시스템(100)을 예시한다. 시스템(100)은 iOS 모듈을 생성하여, iOS 모듈을 실행하도록 구성된 iOS 디바이스(120)에 직접적으로 또는 간접적으로 제공하도록 구성된 애플리케이션 제공자(110)를 포함한다. 애플리케이션 제공자(110)와 iOS 디바이스(120)는 적어도 하나의 하드웨어 프로세싱 유닛("프로세서")(111, 121), 메모리(112, 122), 및 다른 디바이스와 통신하도록 구성된 적어도 하나의 통신 인터페이스(113, 123)를 포함한다. 통상의 기술자는 예시된 디바이스들이 명확화를 이유로 매우 단순화되어 있다는 것을 이해할 것이고; 이와 같이, 내부 연결부들 및 전원들과 같은 특징부들이 예시되지 않는다. 이하 더 설명하는 바와 같이, 비일시적 저장 매체(130)가 iOS 모듈을 저장한다.
도 2는 본 원리들에 따른 보호된 모듈을 생성하는 방법을 예시한다. 단계(S20)에서, 장치 제공자는 정품 디바이스들상에서 실행될 모듈의 버전을 획득하고, 단계(S21)에서, 탈옥한 디바이스들상에서 실행될 모듈의 버전을 획득한다. 각각의 버전은 단지 그 자체를 지칭하고(즉, 다른 버전을 지칭하지 않음), 탈옥한 디바이스 또는 정품 디바이스에 의해 실행되도록 의도되는지에 따라 특정한 소프트웨어 보호 메커니즘들을 사용하여 보호된다.
정품 디바이스들상에서, 사용자 모듈들(즉, 사용자에 의해 다운로딩된 모듈들)은 넌-루트(non-root)로 구동한다. 디버깅 공격들은 디폴트 암호화를 적용하고, 애플리케이션에 대한 격리(샌드박싱(sandboxing)를 프로세싱하며, 넌-루트 애플리케이션들로부터 디버거들의 부착을 금지하는 운영 시스템들에 의해 카운터된다. iOS가 동적 공격들에 대한 보호를 제공하기 때문에, 정품 디바이스들 자체에 대한 버전의 코드에서, 예를 들어, CFG 평면화를 사용하여 정적 분석에 대한 보호를 제공하는 것이 애플리케이션 제공자(110)에 대해 충분할 수 있다. 또한, 무결성 확인이 모듈을 보호하기 위해 사용될 수 있다.
탈옥한 디바이스들 상에서, 디버깅 또는 동적 공격들이 iOS에 의해 방지되지 않지만, 동시에, 탈옥에 의해 작성된 해제된(broken) 샌드박스 격리와 같은 iOS의 변경된 시스템 권한들이 동적 코드 암호화(셀프-변경 코드) 및 안티-디버깅과 같은, 저레벨 소프트웨어 보호 메커니즘들의 사용을 인에이블한다. 이것은 애플리케이션 제공자가 탈옥한 디바이스들에 대한 버전에서 이러한 소프트웨어 보호 메커니즘들을 포함하는 것을 가능하게 한다. 따라서, 탈옥한 디바이스의 버전은 예를 들어, 동적 암호화 및 무결성 확인을 사용하여 동적 공격들에 대해 보호될 수 있다.
단계(S22)에서, 애플리케이션 제공자(110)는 정품 디바이스들에 대한 보호된 버전을 획득하기 위해 정품 iOS에 의해 허용된 적어도 하나의 소프트웨어 보호 기법을 정품 디바이스들에 대한 버전에 적용하고, 단계(S23)에서, 애플리케이션 제공자(110)는 탈옥한 디바이스들에 대한 보호된 버전을 획득하기 위해 탈옥한 iOS에 특정된(즉, 탈옥한 iOS에 의해 허용되지만 정품 iOS에 의해서는 허용되지 않는) 적어도 하나의 소프트웨어 보호 기법을 탈옥한 디바이스들에 적용한다. 단계들(S20 및 S21)에서 획득된 버전들이 획득될 때의 이들의 소프트웨어 보호 방법들을 사용하여 이미 보호되는 것이 또한 가능하다.
그 후, 애플리케이션 제공자(110)는 단계(S24)에서, 탈옥 검출 기능을 생성한다. 탈옥 검출 기능은 탈옥 검출 기능이 실행되는 디바이스가 정품 디바이스 또는 탈옥한 디바이스인지를 결정할 수 있다. 포킹(forking)이 정품 디바이스들에 대해 허용되지 않기 때문에, 탈옥 검출 기능은 성공적으로 포크되었는지를 확인하기 위해 예를 들어, fork()를 사용할 수 있고 리턴된 프로세스 id를 확인할 수 있고, 이 경우에, 디바이스가 탈옥하였다는 것이 결정될 수 있다. 유사하게, 널 인수를 갖는 system()을 호출하는 것은 탈옥한 디바이스에 대해 1을 리턴하고, 정품 디바이스에 대해 0을 리턴하며, 이는 또한 탈옥의 결정을 인에이블할 수 있다. 다른 탈옥 검출 기능들이 Zdziarski에 의한 "Hacking and Securing iOS Applications"에 설명되어 있다. 탈옥 검출 기능이 탈옥을 검출하는 복수의 상이한 방법들을 사용하는 것이 바람직하다.
검출이 이러한 버전의 실행 동안 또한 수행되도록 탈옥 검출 기능이 정품 디바이스들에 대한 버전의 코드에 또한 삽입되는 것이 바람직하다. 정품 버전 내부의 탈옥 검출 기능들이 무결성 확인에 의해 바람직하게 보호되고, 실행 디바이스가 탈옥한다는 것이 결정되는 경우에 실행 흐름을 변경하도록 구성된다. 정품 버전으로의 탈옥 검출 기능들의 삽입은 정품 버전을 보호하는 시점에 또는 그 이전에 수행될 수 있다.
그 후, 애플리케이션 제공자(110)는 단계(S25)에서, 탈옥 검출 기능, 정품 디바이스들상에서 사용을 위한 버전, 및 탈옥한 디바이스 상에서 사용을 위한 버전을 포함하는 애플리케이션 패키지를 생성하고, 여기서, 탈옥 검출 기능은 실행 디바이스의 탈옥 상태 - 즉, 정품 또는 탈옥함 - 에 따라 적절한 버전을 호출한다. 단계(S26)에서, 애플리케이션 제공자(110)는 iOS 디바이스(120) 또는 중간저장소(store)(미도시)에 애플리케이션 패키지를 직접적으로 출력한다.
도 3은 실행 디바이스의 탈옥 상태를 결정한 후, 애플리케이션의 정품 버전(320) 또는 탈옥한 버전(330)을 호출하도록 구성된 탈옥 검출 기능(310)을 포함하는 본 원리들에 따라 애플리케이션 패키지(300)를 예시한다. 정품 버전의 코드는 설명한 바와 같이, 복수의 탈옥 검출 기능들(325)을 포함한다.
도 3에서, 애플리케이션 패키지(300)는 3개의 모듈들: 탈옥 검출 기능(310) 및 모듈의 2개의 버전들(320, 330)을 갖는 것으로 도시되어 있다. 3개의 모듈들이 어느 버전을 실행할지 결정하는 탈옥 검출 기능(310)에 실행 동안 도달하는 단일 애플리케이션의 일부일 수 있다는 것이 이해될 것이다.
변형으로, 애플리케이션 패키지는 3개의 애플리케이션을 포함하고, 여기서, 각각의 애플리케이션은 탈옥 검출 기능과 2개의 버전 중 하나를 포함한다. 탈옥 검출 기능을 포함하는 애플리케이션은 실행될 제1 애플리케이션이고, 디바이스가 탈옥하였는지 여부의 결정의 결과에 따라 다른 2개의 애플리케이션 중 하나를 호출한다.
따라서, 본 원리들이 적어도 특정한 경우들에서, 종래의 보호 방법들을 개선시킬 수 있는 iOS 소프트웨어 모듈들의 소프트웨어 보호를 위한 솔루션을 제공한다는 것이 이해될 것이다. 특히, 실시예에 따라, 본 원리들은 동일한 애플리케이션 패키지를 정품 디바이스들 및 탈옥한 디바이스들에 분포시키는 것을 가능하게 할 수 있다.
본 원리들은 이것이 본 원리가 가장 관심이 있는 사용을 제공할 수 있다고 여겨지기 때문에 iOS와의 사용에 대해 설명되었다. 그러나, 본 원리들은 특히, 메모리 페이지들에서 쓰기 권한을 제한하는 경우에, 안드로이드와 같은 다른 (보안) 운영 시스템들을 위해 사용될 수 있다는 것이 이해될 것이다.
설명 및 (적절하게는) 청구범위와 도면들에 개시된 각각의 특징들은 독립적으로 또는 임의의 적절한 조합으로 제공될 수 있다. 하드웨어에서 구현되는 것으로 설명된 특징들은 소프트웨어에서 또한 구현될 수 있고, 이 반대의 경우도 가능하다. 청구항들에서 나타나는 참조부호들은 단지 예시이며, 청구항들의 범위를 제한하는 효과를 갖지 않는다.
Claims (13)
- 운영 시스템을 갖고 정품(genuine) 또는 탈옥한(jailbroken) 실행 디바이스(120)에 의해 실행되도록 의도된 모듈을 보호하는 애플리케이션 제공자 디바이스(110)로서, 상기 애플리케이션 제공자 디바이스는,
정품 실행 디바이스 상에서 실행되도록 의도된 상기 모듈(320)의 제1 버전 - 상기 제1 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 - 을 획득하고;
탈옥한 디바이스 상에서 실행되도록 의도된 상기 모듈(330)의 제2 버전 - 상기 제2 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 - 을 획득하고;
상기 실행 디바이스가 정품 또는 탈옥하였는지를 결정하고, 상기 실행 디바이스가 정품인 경우에 상기 모듈의 상기 제1 버전을 호출하고, 상기 실행 디바이스가 탈옥한 경우에 상기 모듈의 상기 제2 버전을 호출하도록 구성된 탈옥 검출 기능(jailbreak detection function)(310)을 획득하며;
상기 탈옥 검출 기능(310), 상기 모듈(320)의 상기 제1 버전, 및 상기 모듈(330)의 상기 제2 버전을 포함하는 애플리케이션 패키지(300)를 생성하도록 구성된
프로세싱 유닛(111); 및
상기 애플리케이션 패키지를 출력하도록 구성된 인터페이스(113)
를 포함하는, 애플리케이션 제공자 디바이스(110). - 제1항에 있어서, 상기 프로세싱 유닛(111)은 상기 모듈(320)의 상기 제1 버전을 보호하기 위해 상기 제1 소프트웨어 보호 기법을 사용하도록 더 구성되는, 애플리케이션 제공자 디바이스(110).
- 제2항에 있어서, 상기 제1 소프트웨어 보호 기법은 제어 흐름 그래프 평면화(flattening) 및 상기 실행 디바이스가 정품이라는 검증 중 적어도 하나를 포함하는, 애플리케이션 제공자 디바이스(110).
- 제1항에 있어서, 상기 프로세싱 유닛(111)은 상기 모듈(320)의 상기 제2 버전을 보호하기 위해 상기 제2 소프트웨어 보호 기법을 사용하도록 더 구성되는, 애플리케이션 제공자 디바이스(110).
- 제4항에 있어서, 상기 제2 소프트웨어 보호 기법은 동적 암호화(dynamic ciphering)인, 애플리케이션 제공자 디바이스(110).
- 운영 시스템을 갖고 정품 또는 탈옥한 실행 디바이스(120)에 의해 실행되도록 의도된 모듈을 보호하는 방법으로서, 상기 방법은 애플리케이션 제공자 디바이스에서:
프로세싱 유닛(111)이, 정품 실행 디바이스 상에서 실행되도록 의도된 모듈(320)의 제1 버전을 획득하는 단계(S20) - 상기 제1 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -;
상기 프로세싱 유닛(111)이, 탈옥한 디바이스 상에서 실행되도록 의도된 상기 모듈(330)의 제2 버전을 획득하는 단계(S22) - 상기 제2 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -;
상기 프로세싱 유닛(111)이, 상기 실행 디바이스가 정품 또는 탈옥하였는지를 결정하고, 상기 실행 디바이스가 정품인 경우에 상기 모듈의 상기 제1 버전을 호출하고, 상기 실행 디바이스가 탈옥한 경우에 상기 모듈의 상기 제2 버전을 호출하도록 구성된 탈옥 검출 기능(310)을 획득하는 단계(S24);
상기 프로세싱 유닛(111)이, 상기 탈옥 검출 기능(310), 상기 모듈(320)의 상기 제1 버전, 및 상기 모듈(330)의 상기 제2 버전을 포함하는 애플리케이션 패키지(300)를 생성하는 단계(S25); 및
인터페이스(113)가, 상기 애플리케이션 패키지를 출력하는 단계(S26)
를 포함하는, 방법. - 제6항에 있어서, 상기 프로세싱 유닛(111)이, 상기 모듈(320)의 상기 제1 버전을 보호하기 위해 상기 제1 소프트웨어 보호 기법을 사용하는 단계(S21)를 더 포함하는, 방법.
- 제7항에 있어서, 상기 제1 소프트웨어 보호 기법은 제어 흐름 그래프 평면화 및 상기 실행 디바이스가 정품이라는 검증 중 적어도 하나를 포함하는, 방법.
- 제6항에 있어서, 상기 프로세싱 유닛(111)이, 상기 모듈(320)의 상기 제2 버전을 보호하기 위해 상기 제2 소프트웨어 보호 기법을 사용하는 단계(S23)를 더 포함하는, 방법.
- 제9항에 있어서, 상기 제2 소프트웨어 보호 기법은 동적 암호화인, 방법.
- 프로세서에 의해 실행가능한 프로그램 코드 명령어들을 포함하는 컴퓨터 프로그램으로서, 상기 프로그램 코드는:
정품 실행 디바이스 상에서 실행되도록 의도된 모듈(320)의 제1 버전 - 상기 제1 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -;
탈옥한 디바이스 상에서 실행되도록 의도된 상기 모듈(330)의 제2 버전 - 상기 제2 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -; 및
탈옥 기능(310)을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하고, 상기 실행 디바이스가 정품인 경우에 상기 모듈의 상기 제1 버전을 호출하고, 상기 실행 디바이스가 탈옥한 경우에 상기 모듈의 상기 제2 버전을 호출하도록 구성된 탈옥 검출 기능(310)
을 포함하는, 컴퓨터 프로그램. - 비일시적 컴퓨터 판독가능 매체상에 저장되는 컴퓨터 프로그램 제품으로서,
정품 실행 디바이스 상에서 실행되도록 의도된 모듈(320)의 제1 버전 - 상기 제1 버전은 상기 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -;
탈옥한 디바이스 상에서 실행되도록 의도된 상기 모듈(330)의 제2 버전 - 상기 제2 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -; 및
탈옥 기능(310)을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하고, 상기 실행 디바이스가 정품인 경우에 상기 모듈의 상기 제1 버전을 호출하고, 상기 실행 디바이스가 탈옥한 경우에 상기 모듈의 상기 제2 버전을 호출하도록 구성된 탈옥 검출 기능(310)
을 포함하는, 컴퓨터 프로그램 제품. - 운영 시스템을 갖는 실행 디바이스(120)로서,
정품 실행 디바이스 상에서 실행되도록 의도되고 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현하는 모듈(320)의 제1 버전, 탈옥한 디바이스 상에서 실행되도록 의도되고 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현하는 상기 모듈(330)의 제2 버전, 및 탈옥 기능(310)을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하도록 구성된 탈옥 검출 기능(310)을 저장하는 메모리(122); 및
상기 실행 디바이스가 정품 또는 탈옥하였는지를 결정하기 위해 상기 탈옥 검출 기능(310)을 실행하며;
상기 실행 디바이스가 정품이라는 것이 결정된 경우에 상기 모듈의 상기 제1 버전을 호출하고, 상기 실행 디바이스가 탈옥하였다는 것이 결정된 경우에 상기 모듈의 상기 제2 버전을 호출하도록 구성된
프로세싱 유닛(121)
을 포함하는, 실행 디바이스(120).
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15305876.3 | 2015-06-09 | ||
EP15305876.3A EP3104291A1 (en) | 2015-06-09 | 2015-06-09 | Device and method for protection of ios software modules |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160144921A true KR20160144921A (ko) | 2016-12-19 |
Family
ID=53442696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160069723A KR20160144921A (ko) | 2015-06-09 | 2016-06-03 | Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160364569A1 (ko) |
EP (2) | EP3104291A1 (ko) |
JP (1) | JP2017004528A (ko) |
KR (1) | KR20160144921A (ko) |
CN (1) | CN106250728A (ko) |
ES (1) | ES2668991T3 (ko) |
PL (1) | PL3104292T3 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220021311A (ko) | 2020-08-13 | 2022-02-22 | 주식회사 안랩 | 응용프로그램인터페이스 보호 방법 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107133169B (zh) * | 2017-04-26 | 2021-03-23 | 腾讯科技(深圳)有限公司 | 应用测试包生成方法及生成装置 |
JP6381837B1 (ja) | 2018-01-17 | 2018-08-29 | 株式会社Cygames | 通信を行うためのシステム、プログラム、方法及びサーバ |
CN108334775B (zh) * | 2018-01-23 | 2022-09-23 | 创新先进技术有限公司 | 一种越狱插件检测方法及装置 |
CN112784264B (zh) * | 2021-01-18 | 2024-04-02 | 北京洛塔信息技术有限公司 | 越狱状态检测方法、装置、设备及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9881151B2 (en) * | 2011-08-31 | 2018-01-30 | Lenovo (Singapore) Pte. Ltd. | Providing selective system privileges on an information handling device |
US9787681B2 (en) * | 2012-01-06 | 2017-10-10 | Optio Labs, Inc. | Systems and methods for enforcing access control policies on privileged accesses for mobile devices |
US8826169B1 (en) * | 2012-06-04 | 2014-09-02 | Amazon Technologies, Inc. | Hiding content of a digital content item |
US9619653B2 (en) * | 2012-07-31 | 2017-04-11 | Adobe Systems Incorporated | System and method for detecting a security compromise on a device |
US8862892B2 (en) * | 2012-07-31 | 2014-10-14 | Adobe Systems Incorporated | System and method for detecting a security compromise on a device |
US20140173733A1 (en) * | 2012-12-17 | 2014-06-19 | Fixmo, Inc. | Exploit detection and reporting of a device using server chaining |
EP3005209B1 (en) * | 2013-05-30 | 2021-02-17 | JScrambler S.A. | Web application protection |
US9910724B2 (en) * | 2013-09-13 | 2018-03-06 | Airwatch Llc | Fast and accurate identification of message-based API calls in application binaries |
CN103561176B (zh) * | 2013-11-07 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 一种终端设备的通话记录获取方法、装置及终端设备 |
EP2913773A1 (en) * | 2014-02-27 | 2015-09-02 | Thomson Licensing | Run-time Continuous Address Space Layout Randomization of flattened Control Flow Graph |
US9516491B2 (en) * | 2015-02-27 | 2016-12-06 | T-Mobile Usa, Inc. | Remote device modification |
-
2015
- 2015-06-09 EP EP15305876.3A patent/EP3104291A1/en not_active Withdrawn
-
2016
- 2016-06-01 PL PL16172364T patent/PL3104292T3/pl unknown
- 2016-06-01 ES ES16172364.8T patent/ES2668991T3/es active Active
- 2016-06-01 EP EP16172364.8A patent/EP3104292B1/en active Active
- 2016-06-03 KR KR1020160069723A patent/KR20160144921A/ko unknown
- 2016-06-07 CN CN201610396826.3A patent/CN106250728A/zh active Pending
- 2016-06-08 US US15/177,067 patent/US20160364569A1/en not_active Abandoned
- 2016-06-09 JP JP2016115671A patent/JP2017004528A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20220021311A (ko) | 2020-08-13 | 2022-02-22 | 주식회사 안랩 | 응용프로그램인터페이스 보호 방법 |
Also Published As
Publication number | Publication date |
---|---|
PL3104292T3 (pl) | 2018-08-31 |
ES2668991T3 (es) | 2018-05-23 |
EP3104292B1 (en) | 2018-04-18 |
EP3104292A1 (en) | 2016-12-14 |
EP3104291A1 (en) | 2016-12-14 |
CN106250728A (zh) | 2016-12-21 |
US20160364569A1 (en) | 2016-12-15 |
JP2017004528A (ja) | 2017-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20160144921A (ko) | Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법 | |
US9280644B2 (en) | Methods for restricting resources used by a program based on entitlements | |
US10445396B2 (en) | Device, method, and graphical user interface for extending functionality of a host application to another application | |
CA3023939C (en) | Method and apparatus for dynamic executable verification | |
CN107077562B (zh) | 用于动态控制代码执行的计算机实现的方法和系统 | |
US20110321016A1 (en) | Injection context based static analysis of computer software applications | |
US10013553B2 (en) | Protecting software application | |
US20170024230A1 (en) | Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine | |
CN105930694B (zh) | 用于模糊虚拟机的灵活指令集 | |
CN107430650B (zh) | 保护计算机程序以抵御逆向工程 | |
Zhang et al. | IntPatch: Automatically fix integer-overflow-to-buffer-overflow vulnerability at compile-time | |
KR20130093710A (ko) | 암 코어 기반의 프로세서를 위한 외부 공격 방어 장치 및 이를 이용한 방법 | |
GB2527323A (en) | Runtime protection of web services | |
US20160171213A1 (en) | Apparatus and method for controlling instruction execution to prevent illegal accesses to a computer | |
US10120987B2 (en) | Device and method for executing protected iOS software modules | |
Fleischer et al. | Memory corruption attacks within Android TEEs: a case study based on OP-TEE | |
CN104537281A (zh) | 用于移动应用保护的系统和方法 | |
KR20180015723A (ko) | 보안 구역과 하위 보안 구역 사이의 전이를 위한 장치 및 방법 | |
KR101628101B1 (ko) | 시그니처 탐지를 위한 침입 차단 시스템 장비 | |
KR20180093529A (ko) | 바이트코드와 네이티브코드 간의 상호 의존성에 기반한 어플리케이션 위변조 방지 방법 및 장치 | |
JP2007041777A (ja) | 言語処理方法 | |
CN115982672A (zh) | 越狱检测应用程序生成方法、检测方法、设备及存储介质 | |
CN111240699A (zh) | 软件产品处理方法和装置、源码解释器 | |
CN116028945A (zh) | 防止执行注入的恶意代码的保护 |