KR20220021311A - 응용프로그램인터페이스 보호 방법 - Google Patents

응용프로그램인터페이스 보호 방법 Download PDF

Info

Publication number
KR20220021311A
KR20220021311A KR1020200102015A KR20200102015A KR20220021311A KR 20220021311 A KR20220021311 A KR 20220021311A KR 1020200102015 A KR1020200102015 A KR 1020200102015A KR 20200102015 A KR20200102015 A KR 20200102015A KR 20220021311 A KR20220021311 A KR 20220021311A
Authority
KR
South Korea
Prior art keywords
interface
class
application
application program
application interface
Prior art date
Application number
KR1020200102015A
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 KR1020200102015A priority Critical patent/KR20220021311A/ko
Publication of KR20220021311A publication Critical patent/KR20220021311A/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
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

일 실시예에 따른 응용프로그램인터페이스 보호 장치가 수행하는 응용프로그램인터페이스 보호 방법은, 보호대상 응용프로그램인터페이스 클래스의 이름과 다른 임의의 이름을 사용하여, 보호대상 응용프로그램인터페이스의 구성요소를 포함하는 신규 응용프로그램인터페이스 클래스를 동적으로 생성하는 단계와, 신규 응용프로그램인터페이스 클래스를 런타임에 등록하는 단계와, 신규 응용프로그램인터페이스 클래스의 심볼 주소로 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체하는 단계를 포함한다.

Description

응용프로그램인터페이스 보호 방법{METHOD FOR PROTECTING APPLICATION PROGRAMMING INTERFACE}
본 발명은 응용프로그램인터페이스(Application Programming Interface, API)를 보호하여 응용프로그램인터페이스를 이용한 공격을 방어하는 기술에 관한 것이다.
iOS는 아이폰, 아이팟 터치, 아이패드에 탑재되는 운영체제로, 주로 모바일 단말과 애플 TV 등에 탑재된다. 이러한 iOS에서 탈옥(Jail-Break)은 iOS의 최고 권한을 얻기 위한 기술적 수단이며, 이 기술을 이용해 얻어진 iOS의 최고 권한은 승인된 장치와 소프트웨어 및 제어 메커니즘을 우회하는데 사용된다.
이러한 단말의 탈옥 여부를 응용프로그램이 판단할 수 있도록 하는 기능을 제공하는 것이 탈옥 스캐너(Jail-Break Scanner)이다. 탈옥 스캐너는 단말의 특정 시그니처(예를 들어, 정상 단말에는 없어야 하는 파일이나 권한이 있는지 여부를 판단)를 조사하고, 그 조사 결과에 따라 탈옥(또는 정상) 단말 정보를 응용프로그램에게 반환한다.
한편, 탈옥 시스템에서 응용프로그램 시작 프로세스 메커니즘은 시디아 섭스트레이트(Cydia Substrate)에 의해 의해 장악된다. 시디아 섭스트레이트는 응용프로그램이 로딩 될 때 응용프로그램이 로딩하는 동적 라이브러리를 제어하여 응용프로그램이 필요로 하는 동적 라이브러리 외 제 3의 동적 라이브러리를 주입하여 로딩 시킬 수 있는 방법을 제공한다. 이 제 3의 동적 라이브러리는 응용프로그램에 대해 악성 행위를 수행 할 수 있도록 제작 될 수 있으므로, 응용프로그램의 보안에 영향을 미치게 된다.
일부 공격자는 이 시디아 섭스트레이트를 이용하여, 탈옥된 iOS 모바일 기기에서 금융이나 게임 앱이 기기의 탈옥 여부를 우회하는 안티 탈옥 스캐너(Anti-Jail-Break Scanner)를 시디아 스토어(Cydia Store)를 통해 익명으로 공개하고 있다.
탈옥 단말의 소유자는 안티 탈옥 스캐너를 탈옥 단말에 설치하여, 응용프로그램이 탈옥 단말임을 인지 및 사용을 종료시키지 않도록 함으로써, 금융 앱 등과 같이 탈옥 단말에서 사용할 수 없도록 제작된 앱의 사용을 가능하게 한다.
일반적인 안티 탈옥 스캐너는 동적 라이브러리로 작성되고, 타겟팅 하는 응용프로그램이 로딩되는 시점에 같이 로딩 되도록 시디아 섭스트레이트에 의해 주입 된다. 탈옥 스캐너는 응용프로그램이 탈옥 스캐너를 동작시킬 수 있는 특정 응용프로그램인터페이스를 제공하는데, 안티 탈옥 스캐너는 이러한 특정 응용프로그램인터페이스의 클래스/심볼 이름으로 그 클래스를 얻어 내고, 대응 메소드를 하이재킹(Hijacking)하여 조작 된 값이 반환되도록 하거나, 메소드 호출을 점프 시키도록 하여 탈옥 스캐너의 기능을 무력화 한다. 이렇게 응용프로그램인터페이스의 인터페이스 동작을 조작하여 공격자가 원하는 값으로 반환 한 것처럼 보이게 함으로써 탈옥 스캐너를 사용하는 응용프로그램이 탈옥된 단말을 정상 단말로 오판하도록 한다.
한국공개특허공보, 제10-2016-0144921호 (2016.12.19. 공개)
일 실시예에 따른 해결하고자 하는 과제는, 응용프로그램이 탈옥 스캐너를 동작시킬 수 있도록 하는 특정 응용프로그램인터페이스를 보호하여 해당 응용프로그램인터페이스를 이용한 탈옥 스캔 방지 공격을 방어하는 응용프로그램인터페이스 보호 방법, 컴퓨터 판독 가능한 기록매체 및 컴퓨터 프로그램을 제공한다.
다만, 본 발명의 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
제 1 관점에 따른 응용프로그램인터페이스 보호 장치가 수행하는 응용프로그램인터페이스 보호 방법은, 보호대상 응용프로그램인터페이스 클래스의 이름과 다른 임의의 이름을 사용하여, 보호대상 응용프로그램인터페이스의 구성요소를 포함하는 신규 응용프로그램인터페이스 클래스를 동적으로 생성하는 단계와, 상기 신규 응용프로그램인터페이스 클래스를 런타임(Runtime)에 등록하는 단계와, 상기 신규 응용프로그램인터페이스 클래스의 심볼 주소로 상기 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체하는 단계를 포함한다.
여기서, 상기 신규 응용프로그램인터페이스 클래스를 동적으로 생성하는 단계는, 상기 임의의 이름을 사용하여 동적 기본 클래스를 생성하는 단계와, 상기 동적 기본 클래스에 상기 보호대상 응용프로그램인터페이스의 구성요소로서 메소드와 프로퍼티를 동적으로 추가하여 상기 신규 응용프로그램인터페이스 클래스를 생성하는 단계를 포함할 수 있다.
상기 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체하는 단계는, 상기 보호대상 응용프로그램인터페이스 클래스의 심볼 포인터를 획득하는 단계와, 상기 신규 응용프로그램인터페이스 클래스의 심볼 주소로 상기 획득된 심볼 포인터에 대응하는 심볼 주소를 교체하는 단계를 포함할 수 있다.
상기 보호대상 응용프로그램인터페이스는 탈옥 스캐너를 동작시키기 위한 응용프로그램인터페이스일 수 있다.
상기 탈옥 스캐너를 동작시키기 위한 응용프로그램인터페이스는 오브젝티브시(Objective-C) 응용프로그램인터페이스일 수 있다.
상기 응용프로그램인터페이스 보호 방법은, 보호종료 요청 응용프로그램인터페이스가 호출되면 상기 교체된 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체 전의 원본 심볼 주소로 복원하는 단계를 더 포함할 수 있다.
제 2 관점에 따른 응용프로그램인터페이스 보호 장치는, 보호대상 응용프로그램인터페이스에 대한 보호 처리를 수행하는 프로세서를 포함하고, 상기 프로세서는, 보호대상 응용프로그램인터페이스 클래스의 이름과 다른 임의의 이름을 사용하여, 상기 보호대상 응용프로그램인터페이스의 구성요소를 포함하는 신규 응용프로그램인터페이스 클래스를 동적으로 생성하며, 상기 신규 응용프로그램인터페이스 클래스를 런타임에 등록하고, 상기 신규 응용프로그램인터페이스 클래스의 심볼 주소로 상기 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체한다.
제 3 관점에 따라 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체는, 상기 컴퓨터 프로그램이, 상기 응용프로그램인터페이스 보호 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함한다.
제 4 관점에 따라 컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램은, 상기 컴퓨터 프로그램이, 상기 응용프로그램인터페이스 보호 방법을 상기 프로세서가 수행하도록 하기 위한 명령어를 포함한다.
일 실시예에 따르면, 응용프로그램이 탈옥 스캐너를 동작시킬 수 있도록 하는 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 임의의 이름으로 생성한 신규 응용프로그램인터페이스 클래스의 심볼 주소로 교체하여, 안티 탈옥 스캐너를 이용한 공격 시도로부터 보호대상인 실제 응용프로그램인터페이스 클래스가 노출되지 않도록 보호함으로써, 응용프로그램이 탈옥 스캐너를 동작시킬 수 있도록 하는 보호대상 응용프로그램인터페이스 클래스를 이용하는 탈옥 스캔 방지 공격을 방어할 수 있다.
도 1은 본 발명의 일 실시예에 따른 응용프로그램인터페이스 보호 방법이 적용될 수 있는 탈옥 스캔 방지 공격 환경을 나타낸 것이다.
도 2는 본 발명의 일 실시예에 따른 응용프로그램인터페이스 보호 방법을 설명하기 위한 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 명세서에서 단수의 표현은 문맥상 명백하게 다름을 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, '포함하다' 또는 '구성하다' 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 본 발명의 실시 예에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적인 연결뿐 아니라, 다른 매체를 통한 간접적인 연결의 경우도 포함한다. 또한 어떤 부분이 어떤 구성 요소를 포함한다는 의미는, 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있다는 것을 의미한다.
본 발명의 일 실시예에 따르면, 응용프로그램이 탈옥 스캐너를 동작시킬 수 있도록 하는 특정 응용프로그램인터페이스를 보호하여 해당 응용프로그램인터페이스를 이용한 탈옥 스캔 방지 공격을 방어하고자 한다.
탈옥 스캔 방지 공격을 하는 안티 탈옥 스캐너로부터 탈옥 스캐너를 보호하기 위한 방안으로서, 응용프로그램이 탈옥 스캐너를 동작시킬 수 있도록 하는 특정 응용프로그램인터페이스를 숨겨서 안티 탈옥 스캐너가 후킹(Hooking)할 수 없도록 하는 방안을 모색해 볼 수 있다.
그런데, 응용프로그램이 탈옥 스캐너를 동작시킬 수 있도록 하는 응용프로그램인터페이스로서, 예를 들어 오브젝티브시(Objective-C)와 같은 객체 지향 언어에 따른 클래스는 숨길 수 있는 메커니즘이 없으므로, 공격자로부터 오브젝티브시로 된 탈옥 스캔 응용프로그램인터페이스를 보호할 수 있는 새로운 방안이 요구된다.
도 1은 본 발명의 일 실시예에 따른 응용프로그램인터페이스 보호 방법이 적용될 수 있는 탈옥 스캔 방지 공격 환경을 나타낸 것이다.
도 1을 참조하면, 탈옥 스캔 방지 공격 환경에서 응용프로그램인터페이스 보호 방법을 수행할 수 있는 응용프로그램인터페이스 보호 장치는 탈옥 스캔 서버(100)로 구현하거나 탈옥 스캔 서버(100)와 연동하도록 별도로 구현할 수 있다. 도 1의 예시에서는 본 발명의 일 실시예에 따라 응용프로그램인터페이스 보호 장치는 탈옥 스캔 서버(100)로 구현한 경우를 예시하였다.
iOS 단말(10)은 iOS가 탑재된 모바일 단말로서, 예를 들어, 아이폰 등과 같이 모바일 통신을 지원하는 기기일 수 있다. 프로세서(11)는 탈옥 스캔 서버(100)에 의해 제공되는 특정 응용프로그램인터페이스에 통신 인터페이스(13)를 거쳐서 접속하여, 탈옥 스캔 서버(100)의 프로세서(110)에 의해 지원되는 탈옥 스캐너를 동작시킬 수 있고, 탈옥 스캐너로부터 iOS 단말(10)에 대한 탈옥 단말 정보 또는 정상 단말 정보를 반환 받을 수 있다.
탈옥 스캔 서버(100)는 프로세서(110)에 의해 지원되는 탈옥 스캐너를 iOS 단말(10)에 설치된 응용프로그램이 동작시킬 수 있도록 하는 응용프로그램인터페이스를 통신 인터페이스(130)를 통해 제공한다. 예를 들어, 탈옥 스캔 서버(100)는 탈옥 스캐너를 동작시킬 수 있도록 하는 응용프로그램인터페이스로서, Objective-C API를 제공할 수 있다.
iOS 단말(10)의 메모리(12)와 탈옥 스캔 서버(100)의 메모리(120)는 각각의 OS가 저장될 수 있고, 각각의 프로세서(11, 110)에 의한 연산 및 처리 결과를 저장할 수 있다. 예를 들어, 메모리(12, 120)는 각각의 프로세서(11, 110)에 내장될 수도 있고, 플래시 메모리 타입(flash memory type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 램(RAM), 롬(ROM) 중 적어도 하나의 타입의 저장매체를 포함할 수 있다.
탈옥 스캔 서버(100)의 프로세서(110)는 탈옥 스캐너를 iOS 단말(10)에 설치된 응용프로그램이 동작시킬 수 있도록 하는 객체 지향 언어에 따른 응용프로그램인터페이스, 예컨대 Objective-C API를 보호해 안티 탈옥 스캔 공격을 방어하기 위하여, 다음의 응용프로그램인터페이스 보호 처리를 수행할 수 있다. 이하의 설명에서는 안티 탈옥 스캔 공격을 방어하기 위하여 보호하여야 하는 보호대상 응용프로그램인터페이스가 Objective-C API인 경우를 예시적으로 설명하기로 한다.
프로세서(110)는 응용프로그램인터페이스 보호 처리로서, Objective-C API 클래스의 이름과 다른 임의의 이름을 사용하여, Objective-C API의 구성요소를 포함하는 신규 API 클래스를 동적으로 생성한다. 그리고, 프로세서(110)는 신규 API 클래스를 Objective-C 런타임(Runtime)에 등록한다. 그리고, 프로세서(110)는 신규 API 클래스의 심볼 주소로 Objective-C API 클래스의 심볼 주소를 교체한다.
프로세서(110)는 신규 API 클래스를 동적으로 생성하기 위하여, 임의의 이름을 사용하여 동적 기본 클래스를 생성한 후, 생성된 동적 기본 클래스에 Objective-C API의 구성요소로서 메소드와 프로퍼티(property)를 동적으로 추가하여 신규 API 클래스를 생성할 수 있다.
프로세서(110)는 신규 API 클래스의 심볼 주소로 Objective-C API 클래스의 심볼 주소를 교체하기 위하여, 동적 기본 클래스를 생성하기 전에 Objective-C API 클래스의 심볼 포인터를 획득할 수 있다. 그리고, 프로세서(110)는 신규 API 클래스를 생성한 후 신규 API 클래스의 심볼 주소로 앞서 획득된 심볼 포인터에 대응하는 심볼 주소를 교체할 수 있다.
또한, 프로세서(110)는 보호종료 요청 응용프로그램인터페이스가 호출되면 앞서 교체된 Objective-C API 클래스의 심볼 주소를 교체 전의 원본 심볼 주소로 복원할 수 있다.
도 2는 본 발명의 일 실시예에 따른 응용프로그램인터페이스 보호 방법을 설명하기 위한 흐름도이다.
이하, 도 1 및 도 2를 참조하여 본 발명의 일 실시예에 따른 응용프로그램인터페이스 보호 장치가 수행하는 응용프로그램인터페이스 보호 방법에 대하여 살펴보기로 한다. 아래의 설명에서는 안티 탈옥 스캔 공격을 방어하기 위하여 보호하여야 하는 보호대상 응용프로그램인터페이스가 Objective-C API인 경우를 예시적으로 설명하기로 한다.
먼저, 탈옥 스캔 서버(100)의 프로세서(110)는 탈옥 스캐너를 iOS 단말(10)에 설치된 응용프로그램이 동작시킬 수 있도록 하는 Objective-C API를 통신 인터페이스(130)를 통하여 제공한다.
그리고, iOS 단말(10)의 응용프로그램이 탈옥 스캔 서버(100)에 의해 제공되는 Objective-C API를 통하여 탈옥 스캐너를 동작시키면, 탈옥 스캐너는 iOS 단말(10)의 특정 시그니처(예를 들어, 정상 단말에는 없어야 하는 파일이나 권한이 있는지 여부를 판단)를 조사하고, 그 조사 결과로서 탈옥 단말 정보 또는 정상 단말 정보를 iOS 단말(10)의 응용프로그램에게 반환한다.
그런데, iOS 단말(10)에 안티 탈옥 스캐너가 설치된 경우에는 iOS 단말(10)의 타겟팅 하는 응용프로그램이 로딩되는 시점에 안티 탈옥 스캐너가 같이 로딩 되고, 로딩된 안티 탈옥 스캐너는 Objective-C API의 클래스/심볼 이름으로 그 클래스를 얻어 내고, 대응 메소드를 하이재킹하여, 탈옥 스캐너에 의한 탈옥 단말 정보(또는 정상 단말 정보)가 아닌 조작 된 값이 반환되도록 하거나, 메소드 호출을 점프 시키도록 하여 탈옥 스캐너의 기능을 무력화 할 수 있다.
이에, 탈옥 스캔 서버(100)의 프로세서(110)는 안티 탈옥 스캐너가 Objective-C API의 클래스를 얻어 낼 수 없도록, 해당 클래스를 숨김으로써 보호하는 처리를 수행한다.
프로세서(110)는 우선, Objective-C API 클래스의 심볼 포인터를 획득한다. 예를 들어, 프로세서(110)는 __DATA__ 섹션 중 __objc_classrefs 섹션에서 탈옥 스캐너의 Objective-C API 클래스의 심볼 저장 주소를 계산해 획득할 수 있다. 예컨대, 프로세서(110)는 추출된 심볼 이름에 기초하여 심볼 저장 주소를 계산할 수 있다(S210).
그리고, 프로세서(110)는 Objective-C API 클래스의 이름과 다른 임의의 이름을 사용하여 동적 기본 클래스를 생성한다. 이처럼, 임의의 이름을 사용하여 클래스를 동적으로 생성하기 때문에 안티 탈옥 스캐너가 동적 기본 클래스의 이름을 유추할 수가 없고, 동적으로 클래스가 생성되기 때문에 안티 탈옥 스캐너가 정적 분석으로는 이 과정에서 생성된 동적 기본 클래스를 알아낼 수가 없다(S220).
이어서, 프로세서(110)는 단계 S220에서 생성된 동적 기본 클래스에 Objective-C API의 구성요소로서 메소드와 프로퍼티(property)를 동적으로 추가하여 신규 API 클래스를 생성한다(S230).
이어서, 프로세서(110)는 단계 S230에서 생성된 신규 API 클래스를 Objective-C 런타임에 등록한다(S240).
그리고, 프로세서(110)는 단계 S240에서 런타임에 등록된 신규 API 클래스의 심볼 주소로 단계 S210에서 획득된 심볼 포인터에 대응하는 Objective-C API 클래스의 심볼 주소를 교체한다(S250).
이렇게 단계 S210 내지 S250에 의한 Objective-C API 클래스에 대한 보호 처리가 수행된 이후에는, iOS 단말(10)의 응용프로그램이 탈옥 스캔 서버(100)에 의해 제공되는 Objective-C API를 통하여 탈옥 스캐너를 동작시키려고 하면, 실제로는 단계 S240에서 Objective-C 런타임에 등록된 신규 API 클래스에 대응하는 메소드에 의하여 탈옥 스캐너가 정상 동작하고, 프로세서(110)에 의해 지원되는 탈옥 스캐너는 iOS 단말(10)에 대한 탈옥 단말 정보 또는 정상 단말 정보를 iOS 단말(10)의 응용프로그램에게 반환한다(S260). 반면에, iOS 단말(10)에 설치된 안티 탈옥 스캐너는 단계 S210 내지 S250을 통하여 보호 처리된 Objective-C API 클래스의 메소드를 하이재킹한 상태이기 때문에, 이러한 안티 탈옥 스캐너로서 동작을 할 수가 없다.
한편, 탈옥 스캔 서버(100)의 프로세서(110)는 Objective-C API에 대한 보호종료가 요청되는지를 확인한다. 예를 들어, 탈옥 스캔 서버(100)의 프로세서(110)는 자신이 통신 인터페이스(130)를 통하여 지원하는 보호종료 요청 API가 호출되면 Objective-C API에 대한 보호종료가 요청된 것으로 판단할 수 있다(S270)
탈옥 스캔 서버(100)의 프로세서(110)는 보호종료가 요청된 것으로 판단되면, 단계 S250에서 교체된 Objective-C API 클래스의 심볼 주소를 교체 전의 원본 심볼 주소, 즉 단계 S210에서 획득된 심볼 포인터에 대응하는 Objective-C API 클래스의 심볼 주소로 복원한다(S280).
지금까지 설명한 바와 같이 본 발명의 일 실시예에 따르면, 모바일 단말의 응용프로그램이 탈옥 스캐너를 동작시킬 수 있도록 하는 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 임의의 이름으로 생성한 신규 응용프로그램인터페이스 클래스의 심볼 주소로 교체하여, 안티 탈옥 스캐너를 이용한 공격 시도로부터 보호대상인 실제 응용프로그램인터페이스 클래스가 노출되지 않도록 보호함으로써, 모바일 단말의 응용프로그램이 탈옥 스캐너를 동작시킬 수 있도록 하는 보호대상 응용프로그램인터페이스 클래스를 이용하는 탈옥 스캔 방지 공격을 방어할 수 있다.
한편, 상술한 일 실시예에 따른 각각의 단계를 포함하는 응용프로그램인터페이스 보호 방법을 탈옥 스캔 서버(100)의 프로세서(110)가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 프로그램은 컴퓨터 판독 가능 기록매체에 저장될 수 있다.
또한, 상술한 일 실시예에 따른 각각의 단계를 포함하는 응용프로그램인터페이스 보호 방법을 탈옥 스캔 서버(100)의 프로세서(110)가 수행하도록 하기 위한 명령어를 포함하는 컴퓨터 프로그램이 저장되어 있는 컴퓨터 판독 가능한 기록매체가 제공될 수 있다.
본 발명에 첨부된 각 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수도 있다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 기록매체에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 기록매체에 저장된 인스트럭션들은 흐름도의 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실시예들에서는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 탈옥 스캔 서버
110: 프로세서
120: 메모리
130: 통신 인터페이스

Claims (14)

  1. 응용프로그램인터페이스 보호 장치가 수행하는 응용프로그램인터페이스 보호 방법으로서,
    보호대상 응용프로그램인터페이스 클래스의 이름과 다른 임의의 이름을 사용하여, 보호대상 응용프로그램인터페이스의 구성요소를 포함하는 신규 응용프로그램인터페이스 클래스를 동적으로 생성하는 단계와,
    상기 신규 응용프로그램인터페이스 클래스를 런타임(Runtime)에 등록하는 단계와,
    상기 신규 응용프로그램인터페이스 클래스의 심볼 주소로 상기 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체하는 단계를 포함하는
    응용프로그램인터페이스 보호 방법.
  2. 제 1 항에 있어서,
    상기 신규 응용프로그램인터페이스 클래스를 동적으로 생성하는 단계는,
    상기 임의의 이름을 사용하여 동적 기본 클래스를 생성하는 단계와,
    상기 동적 기본 클래스에 상기 보호대상 응용프로그램인터페이스의 구성요소로서 메소드와 프로퍼티를 동적으로 추가하여 상기 신규 응용프로그램인터페이스 클래스를 생성하는 단계를 포함하는
    응용프로그램인터페이스 보호 방법.
  3. 제 1 항에 있어서,
    상기 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체하는 단계는,
    상기 보호대상 응용프로그램인터페이스 클래스의 심볼 포인터를 획득하는 단계와,
    상기 신규 응용프로그램인터페이스 클래스의 심볼 주소로 상기 획득된 심볼 포인터에 대응하는 심볼 주소를 교체하는 단계를 포함하는
    응용프로그램인터페이스 보호 방법.
  4. 제 1 항에 있어서,
    상기 보호대상 응용프로그램인터페이스는 탈옥 스캐너를 동작시키기 위한 응용프로그램인터페이스인
    응용프로그램인터페이스 보호 방법.
  5. 제 4 항에 있어서,
    상기 탈옥 스캐너를 동작시키기 위한 응용프로그램인터페이스는 객체 지향 언어에 따른 응용프로그램인터페이스인
    응용프로그램인터페이스 보호 방법.
  6. 제 1 항에 있어서,
    보호종료 요청 응용프로그램인터페이스가 호출되면 상기 교체된 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체 전의 원본 심볼 주소로 복원하는 단계를 더 포함하는
    응용프로그램인터페이스 보호 방법.
  7. 응용프로그램인터페이스 보호 장치로서,
    보호대상 응용프로그램인터페이스에 대한 보호 처리를 수행하는 프로세서를 포함하고,
    상기 프로세서는,
    보호대상 응용프로그램인터페이스 클래스의 이름과 다른 임의의 이름을 사용하여, 상기 보호대상 응용프로그램인터페이스의 구성요소를 포함하는 신규 응용프로그램인터페이스 클래스를 동적으로 생성하며, 상기 신규 응용프로그램인터페이스 클래스를 런타임(Runtime)에 등록하고, 상기 신규 응용프로그램인터페이스 클래스의 심볼 주소로 상기 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체하는
    응용프로그램인터페이스 보호 장치.
  8. 제 7 항에 있어서,
    상기 프로세서는,
    상기 신규 응용프로그램인터페이스 클래스를 동적으로 생성하기 위하여, 상기 임의의 이름을 사용하여 동적 기본 클래스를 생성하고, 상기 동적 기본 클래스에 상기 보호대상 응용프로그램인터페이스의 구성요소로서 메소드와 프로퍼티를 동적으로 추가하여 상기 신규 응용프로그램인터페이스 클래스를 생성하는
    응용프로그램인터페이스 보호 장치.
  9. 제 7 항에 있어서,
    상기 프로세서는,
    상기 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체하기 위하여, 상기 보호대상 응용프로그램인터페이스 클래스의 심볼 포인터를 획득하고, 상기 신규 응용프로그램인터페이스 클래스의 심볼 주소로 상기 획득된 심볼 포인터에 대응하는 심볼 주소를 교체하는
    응용프로그램인터페이스 보호 장치.
  10. 제 7 항에 있어서,
    상기 보호대상 응용프로그램인터페이스는 탈옥 스캐너를 동작시키기 위한 응용프로그램인터페이스인
    응용프로그램인터페이스 보호 장치.
  11. 제 10 항에 있어서,
    상기 탈옥 스캐너를 동작시키기 위한 응용프로그램인터페이스는 객체 지향 언어에 따른 응용프로그램인터페이스인
    응용프로그램인터페이스 보호 장치.
  12. 제 7 항에 있어서,
    상기 프로세서는,
    보호종료 요청 응용프로그램인터페이스가 호출되면 상기 교체된 보호대상 응용프로그램인터페이스 클래스의 심볼 주소를 교체 전의 원본 심볼 주소로 복원하는
    응용프로그램인터페이스 보호 장치.
  13. 컴퓨터 프로그램을 저장하고 있는 컴퓨터 판독 가능 기록매체로서,
    상기 컴퓨터 프로그램은,
    제 1 항 내지 제 6 항 중 어느 한 항에 따른 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 판독 가능한 기록매체.
  14. 컴퓨터 판독 가능한 기록매체에 저장되어 있는 컴퓨터 프로그램으로서,
    상기 컴퓨터 프로그램은,
    제 1 항 내지 제 6 항 중 어느 한에 따른 방법을 프로세서가 수행하도록 하기 위한 명령어를 포함하는, 컴퓨터 프로그램.
KR1020200102015A 2020-08-13 2020-08-13 응용프로그램인터페이스 보호 방법 KR20220021311A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200102015A KR20220021311A (ko) 2020-08-13 2020-08-13 응용프로그램인터페이스 보호 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200102015A KR20220021311A (ko) 2020-08-13 2020-08-13 응용프로그램인터페이스 보호 방법

Publications (1)

Publication Number Publication Date
KR20220021311A true KR20220021311A (ko) 2022-02-22

Family

ID=80494137

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200102015A KR20220021311A (ko) 2020-08-13 2020-08-13 응용프로그램인터페이스 보호 방법

Country Status (1)

Country Link
KR (1) KR20220021311A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160144921A (ko) 2015-06-09 2016-12-19 톰슨 라이센싱 Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160144921A (ko) 2015-06-09 2016-12-19 톰슨 라이센싱 Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법

Similar Documents

Publication Publication Date Title
US11055438B2 (en) Methods for restricting resources used by a program based on entitlements
EP3017392B1 (en) Process evaluation for malware detection in virtual machines
US8769305B2 (en) Secure execution of unsecured apps on a device
KR20140074252A (ko) 디바이스 상의 보안되지 않은 앱들의 보안 실행
CN113569246B (zh) 漏洞检测方法、装置、计算机设备和存储介质
Haupert et al. Honey, i shrunk your app security: The state of android app hardening
DeMott Bypassing EMET 4.1
US20240143739A1 (en) Intelligent obfuscation of mobile applications
WO2023023127A1 (en) System and method for controlling js scripts access to dom/apis
US20190065223A1 (en) Disabling Just-In-Time Translation For Application Functions
US10459851B2 (en) Method and apparatus for executing a process on a device using memory privileges
JP2011145945A (ja) マルウェア検出装置及びマルウェア検出方法
KR20220021311A (ko) 응용프로그램인터페이스 보호 방법
KR20180015723A (ko) 보안 구역과 하위 보안 구역 사이의 전이를 위한 장치 및 방법
US10200401B1 (en) Evaluating results of multiple virtual machines that use application randomization mechanism
CN106922191B (zh) 生成和执行受保护的软件项目
CN112883370B (zh) 应用程序状态检测方法和装置、存储介质和电子设备
EP3754526A1 (en) Method for controlling an execution flow of an application
EP3040895A1 (en) System and method for protecting a device against return-oriented programming attacks
US20160313938A1 (en) Fine grained memory protection to thwart memory overrun attacks
CN111008375B (zh) 一种数据保护方法及装置
US9378360B2 (en) Secure if antecedent
Röpke SDN Ro2tkits: A Case Study of Subverting A Closed Source SDN Controller
CN116011010A (zh) 文件防护方法及装置、电子设备和计算机可读存储介质
CN103886251A (zh) 系统加固的方法及装置