KR102215231B1 - 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법 - Google Patents

안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법 Download PDF

Info

Publication number
KR102215231B1
KR102215231B1 KR1020190094796A KR20190094796A KR102215231B1 KR 102215231 B1 KR102215231 B1 KR 102215231B1 KR 1020190094796 A KR1020190094796 A KR 1020190094796A KR 20190094796 A KR20190094796 A KR 20190094796A KR 102215231 B1 KR102215231 B1 KR 102215231B1
Authority
KR
South Korea
Prior art keywords
application
result value
execution unit
function
application execution
Prior art date
Application number
KR1020190094796A
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 KR1020190094796A priority Critical patent/KR102215231B1/ko
Application granted granted Critical
Publication of KR102215231B1 publication Critical patent/KR102215231B1/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/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/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • 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

Abstract

본 발명은 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법에 관한 것으로서, 안드로이드 환경에서 동작하는 어플리케이션이 후킹에 의한 인위적인 메모리 변화를 방지하는 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법에 관한 것이다.
본 발명은 어플리케이션 실행으로 특정 함수를 호출하고, 상기 특정 함수로 인해 호출된 함수의 결과값을 보장하기 위해 상기 결과값을 암호화 요청하는 어플리케이션 실행부; 및 상기 어플리케이션 실행부를 통해 전달받는 결과값을 암호화하고, 상기 어플리케이션 실행부로부터 결과값 검증을 요청받아 복호화하여 상기 어플리케이션 실행부로 결과값을 전달하여 인위적인 메모리 변화를 방지하는 보안 모듈; 을 포함한다.

Description

안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법{Anti-hooking system for android application}
본 발명은 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법에 관한 것으로서, 더욱 상세하게는 안드로이드 환경에서 동작하는 어플리케이션이 후킹에 의한 인위적인 메모리 변화를 방지하는 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법에 관한 것이다.
소프트웨어 공학에서 쓰이는 후킹이라는 용어는 프로그램이 동작할 때, 함수 호출이나 메시지, 이벤트 등을 중간에 바꾸거나 가로채는 명령, 방법, 기술 등을 말한다.
안드로이드 어플리케이션이 동작할 때 후킹의 타겟이 되는 것은 주로 보안기능을 하는 함수들이라 할 수 있다. 예를 들어 금융 앱이 루팅검사 기능이 있는 함수를 포함하여 구현했다고 할 때, 루팅된 단말기를 탐지해야 한다. 하지만 악의적인 사용자가 루팅된 안드로이드 환경에서 금융 앱을 실행할 때, 루팅검사 기능이 있는 함수를 후킹해 결과 값을 조작하면 정상적으로 탐지했다고 하더라도 탐지가 안된 것처럼 프로그램을 지속 수행할 수 있다. 따라서, 후킹으로 결과 값을 조작하는 것에 대응할 필요가 있다.
종래, 한국등록특허 제1637201호에 의하면, 사용자 어플리케이션의 성능이 저하된 원인을 사용자 어플리케이션에 포함된 함수별로 측정하여 성능 저하원인이 되는 함수에 대한 성능을 관리하기 위한 기술이 공개된 바 있고, 대부분의 스마트폰은 안드로이드(Android) 운영체제를 이용하며, 안드로이드에 어플리케이션(Application)을 설치하여 여러 기능을 사용할 수 있다. 이러한 기능 중에는 금융, 쇼핑 등 다양한 전자상거래가 포함되며, 각종 서비스 제공을 위해 개인정보를 보관 및 이용하고 있다. 그에 따라 안드로이드에서 동작하는 어플리케이션은 필요에 따라 루팅검사, 무결성 검증 등 다양한 보안 기능을 탑재하게 되었다. 하지만 이러한 보안 기능들도 후킹 기술에 의해 우회될 수 있는 문제가 있다. 따라서, 이러한 후킹 기술에 대응하기 위한 기술이 개발될 필요가 있다.
본 발명은 상술한 문제점을 해결하기 위해 착안된 것으로서, 후킹 기술에 의한 보안 기능의 우회를 대응하기 위해 보안 모듈(트러스트존)을 이용한 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법을 제공함에 목적이 있다.
본 발명은 어플리케이션 실행으로 특정 함수를 호출하고, 상기 특정 함수로 인해 호출된 함수의 결과값을 보장하기 위해 상기 결과값을 암호화 요청하는 어플리케이션 실행부; 및 상기 어플리케이션 실행부를 통해 전달받는 결과값을 암호화하고, 상기 어플리케이션 실행부로부터 결과값 검증을 요청받아 복호화하여 상기 어플리케이션 실행부로 결과값을 전달하여 인위적인 메모리 변화를 방지하는 보안 모듈; 을 포함한다.
바람직하게 어플리케이션 실행부는 상기 어플리케이션 설치시, 상기 보안 모듈에 패키지 키 쌍을 요청하는 키 쌍 요청모듈;을 포함한다.
또한 바람직하게 보안 모듈은 상기 어플리케이션 실행부에서 요청한 어플리케이션이 공식앱인지 공증하고, 공식앱이면 키 쌍을 생성하여 상기 어플리케이션과 맵핑한다.
한편, 안드로이드 어플리케이션에 대한 후킹방지 방법에 있어서,
a) 어플리케이션 실행으로 특정 함수를 호출시 어플리케이션 실행부가 상기 특정 함수로 인해 호출된 함수의 결과값을 보장하기 위해 상기 결과값을 보안 모듈로 암호화 요청하는 단계; b) 상기 보안 모듈이 상기 암호화 요청에 따라 상기 결과값을 암호화하는 단계; 및 c) 상기 보안 모듈이 상기 어플리케이션 실행부로부터 결과값 검증을 요청받아 복호화하여 상기 어플리케이션 실행부로 결과값을 전달하여 인위적인 메모리 변화를 방지하는 단계;를 포함한다.
또한 바람직하게 제 a) 단계는 상기 어플리케이션 실행부에서 상기 어플리케이션 설치시, 상기 보안 모듈에 패키지 키 쌍을 요청하는 단계;를 포함한다.
그리고 바람직하게 제 a) 단계 이후, 상기 보안 모듈은 상기 어플리케이션 실행부에서 요청한 어플리케이션이 공식앱인지 공증하고, 공식앱이면 키 쌍을 생성하여 상기 어플리케이션과 맵핑하는 단계;를 포함한다.
본 발명에 따르면, 보안 모듈(트러스트존)을 이용한 안드로이드 어플리케이션을 통해 후킹 기술에 의한 보안 기능의 우회를 대응할 수 있는 효과가 있다.
도 1은 일 실시예에 따른 시스템의 구성도이다.
도 2는 일 실시예에 따른 함수 코드를 설명하기 위한 예시도이다.
도 3은 일 실시예의 함수 코드의 암호화/복호화를 설명하기 위한 예시도이다.
도 4는 일 실시예의 안드로이드 어플리케이션에 대한 후킹방지 방법의 전체적인 흐름을 나타낸 예시도이다.
도 5는 일 실시예의 어플리케이션 실행부(Application)와 보안 모듈의 관계를 나타낸 예시도이다.
도 6은 일 실시예의 키 쌍 요청을 나타낸 예시도이다.
도 7은 일 실시예의 함수 코드의 리턴 값의 암/복호화를 통한 보호로 후킹방지를 설명하기 위한 예시도이다.
이하에서는 도면을 참조하여 본 발명을 보다 상세하게 설명한다. 도면들 중 동일한 구성요소들은 가능한 한 어느 곳에서든지 동일한 부호들로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능 및 구성에 대한 설명은 생략한다.
또한 아래 설명하는 실시 예들에는 다양한 변경이 가해질 수 있다. 아래 설명하는 실시 예들은 실시 형태에 대한 한정하려는 것이 아니며, 이들에 대한 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
실시 예에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 실시 예를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다"등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
한편, 본 발명에서 제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소들과 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않는 범위 내에서, 제1구성요소는 제2구성요소로 명명될 수 있고, 유사하게는 제2구성요소는 제1구성요소로도 명명 될 수 있다.
도 1은 본 발명의 일 실시예에 따른 안드로이드 어플리케이션에 대한 후킹방지 시스템의 구성도이다. 도 1에 도시된 바와 같이, 어플리케이션 실행부(100), 보안 모듈(200)을 포함한다.
어플리케이션 실행부(100)는 어플리케이션 실행으로 특정 함수를 호출하고, 상기 특정 함수로 인해 호출된 함수의 결과값을 보장하기 위해 상기 결과값을 암호화를 요청함으로써, 호출된 함수의 결과값의 인위적인 메모리 변화 방지를 요청한다. 본 실시예에 따른 어플리케이션 실행부(100)는 어플리케이션 설치시, 상기 보안 모듈에 패키지 키 쌍을 요청하는 키 쌍 요청모듈(110)을 포함한다.
보안 모듈(200)은 어플리케이션 실행부를 통해 전달받는 결과값을 암호화하고, 어플리케이션 실행부로부터 결과값 검증을 요청받아 복호화하여 어플리케이션 실행부로 결과값을 전달하여 인위적인 메모리 변화를 방지하는 기능을 수행한다. 이러한 기능을 수행하기 위한 보안 모듈(200)은 어플리케이션 실행부에서 요청한 어플리케이션이 공식앱인지 공증하고, 공식앱이면 키 쌍을 생성하여 상기 어플리케이션과 맵핑하는 맵핑모듈(210)을 포함한다.
본 발명의 일 실시예에 따른 안드로이드 어플리케이션에 대한 후킹방지 시스템은 안드로이드 환경에서 동작하는 어플리케이션이 후킹에 의해 인위적인 메모리 변화가 일어나지 않도록 방지하는 기술을 제안하고자 한다. "안드로이드 환경에서 어플리케이션이 동작한다"하는 것은 어플리케이션이 실행되어 실행코드 및 실행과 관련한 데이터 등이 메모리에 로드되어 프로세스로서 동작하는 것을 말한다. 또한 "후킹에 의한 인위적인 메모리 변화"란 원래 실행되어야 하는 실행코드대로 흐름이 진행되지 않거나, 실행 중에 메모리 상에서 계산된 값이 임의로 수정되는 것을 말한다. "실행코드대로 흐름이 진행되지 않는다"하는 것은 원래의 함수호출 순서가 main( ) → funcA( ) → funcB( ) → funcC( )와 같은 순서일 때, main( ) → funcA( ) → funcX( ) → funcB( ) → funcC( )와 같이 변경되는 것을 의미한다. "실행 중에 메모리 상에서 계산된 값이 임의로 수정된다"하는 것은 도 2의 간단한 코드를 통해 예시로 설명이 가능하다.
도 2는 메모리 상에서 계산된 값을 출력하기 위한 코드를 나타낸 예시도이다. 도 2와 같은 코드가 있을 때, 일반적으로 A( ) 함수는 0을 리턴하므로 result는 5가 된다. 하지만, 실행 중에 후킹이 발생한다면, 1) 메모리상에서 main( )가 A( ) 함수를 호출하고, 2) A( ) 함수가 "return 0"를 실행하려고 할 때, 3) 후킹으로 0이라는 값이 저장된 레지스터를 변조하여 1로 저장한다면, 결과적으로 A( )는 0이 아니므로, main( ) 함수에서 result는 0인 상태가 유지된다.
즉, 후킹에 의한 인위적인 메모리 변화 방지를 위해, 보안 모듈을 이용하여 함수의 결과 값을 암호화/복호화하도록 한다. "보안 모듈"이라 함은 일반적인 스마트폰에 사용되는 ARM 칩셋에 포함된 TrustZone 이라고 하는 기능을 이용하는 것을 의미한다. TrustZone이란 TEE(Trust Execution Environment)를 의미하며, 실제 실행되는 영역과 별도의 영역에서 독립실행을 보장하는 형태로, 일반적으로는 사용자가 메모리 등을 임의로 읽거나 쓸 수 없다.
"함수의 결과 값을 암호화/복호화한다"라는 것은, 예를 들어 안드로이드 OS나 ARM 칩셋 수준에서 지원하여 함수 호출 명령과 리턴 명령마다 자동으로 암호화/복호화를 수행하거나, 코드를 컴파일 할 때 함수의 호출 및 리턴 부분에 암호화/복호화 수행 루틴이 추가되는 것을 의미한다. 여기서, "안드로이드 OS나 ARM 칩셋 수준에서 지원하여 자동으로 암호화/복호화를 수행한다."라는 것은 프로그램의 함수호출 특징이 나타나는 부분에서 호출 후 복호화를 수행하는 부분과 함수리턴 특징이 나타나는 부분에서 리턴할 때 암호화를 수행하는 부분이라고 말할 수 있다.
"함수리턴 특징이 나타나는 부분에서 리턴할 때 암호화를 수행한다"라는 것은 어셈블리코드 수준으로 볼 때, 'return [register]' 혹은 'return [value]'와 같은 부분이 나타날 때를 의미하여, 이 때 인자(register or value)는 보안 모듈에 의해 암호화하게 된다.
"함수호출 특징이 나타나는 부분에서 호출 후, 복호화를 수행한다"라는 것은 어셈블리 코드 수준으로 볼 때, 'call [function]'과 같은 부분이 나타날 때를 의미하며, 이 명령 줄이 완료되었을 때의 결과 값(보통 첫 번째 레지스터 값)에 대하여 복호화를 수행한다. call 할 때 불리는 function이 return 명령을 포함하는 경우에 암호화/복호화를 수행하게 된다.
"코드를 컴파일 할 때 함수의 호출 및 리턴 부분에 암호화/복호화 수행 루틴이 추가된다."라는 것은 컴파일 할 때 도 3과 같이 코드가 수정된다고 볼 수 있다. 도 3에 도시된 바와 같이, 사용자가 작성한 코드에서는 변화가 없고, 컴파일 할 때, 임시로 추가되는 형태를 의미하는 것이다. 물론 이때 작성된 enc()와 dec()는 보안 모듈을 이용한 암호화/복호화를 수행하는 코드로 약속되어 있어야 한다.
한편, 안드로이드 어플리케이션에 대한 후킹방지 방법을 도 4를 참조하여 설명하면 다음과 같다.
a) 어플리케이션 실행으로 특정 함수를 호출시 어플리케이션 실행부가 상기 특정 함수로 인해 호출된 함수의 결과값을 보장하기 위해 상기 결과값을 보안 모듈로 암호화 요청한다. 다음으로 b) 보안 모듈이 상기 암호화 요청에 따라 상기 결과값을 암호화한다. 다음으로 c) 보안 모듈이 상기 어플리케이션 실행부로부터 결과값 검증을 요청받아 복호화하여 상기 어플리케이션 실행부로 결과값을 전달하여 인위적인 메모리 변화를 방지한다.
즉, 도 5에 도시된 바와 같이, 어플리케이션 동작시, A함수가 B함수를 호출하면서, B함수의 결과 값을 보장하고 싶다고 가정하는 경우, B함수가 결과 값(r)을 리턴하기 전, 보안 모듈의 암호화(서명)함수를 통해 enc(r)로 암호화(서명)한다. A함수가 enc(r)을 보안 모듈의 복호화(검증)함수를 통해 dec(enc(r))=r로 확인한다. 보안 모듈 내에 있는 키 쌍(RSA 방식)을 통해 서명 검증을 거친 것으로, 후킹을 시도하려 해도 검증 과정을 통과할 수 없게 된다. 따라서 보안모듈을 검증 실패시 어플리케이션은 종료된다.
본 실시예에 따른 제 a)단계는 상기 어플리케이션 실행부에서 상기 어플리케이션 설치시, 상기 보안 모듈에 패키지 키 쌍을 요청하는 단계;를 포함한다. 그리고 제 a) 단계 이후, 상기 보안 모듈은 상기 어플리케이션 실행부에서 요청한 어플리케이션이 공식앱인지 공증하고, 공식앱이면 키 쌍을 생성하여 상기 어플리케이션과 맵핑하는 단계;를 포함할 수 있다.
여기서, 보안모듈에서 결과 값 암/복호화를 위한 키 쌍 관리를 도 6을 참조하여 설명하면 다음과 같다. 보안모듈에서 어플리케이션에 대한 키 쌍 할당은 어플리케이션이 공증된(공식 앱스트어를 통해 설치된) 경우, 키 쌍을 할당한다. 예를들어, 암호화 및 복호화는 com.example.hello 어플리케이션의 A.so 파일 내의 funcA( )호출에 대한 결과 값 보장을 원한다면, com.example.hello가 공증된 앱인지 확인하고, 맞으면 패키기 개인키로 결과 값을 서명하여 일반 영역에 전달한다. enc(r)->검증 요청이 오면 패키지 공개키로 확인하고, 결과값을 dec(enc(r))로 전달한다.
본 실시예에 따른 안드로이드 어플리케이션에 대한 후킹방지 방법에서 구체적으로 암호화하는 과정을 살펴보면 다음과 같다.
먼저 어플리케이션이 실행된다.
main( ) 함수에서 A( ) 함수를 호출하면서, A( ) 함수의 결과 값을 보장하고 싶은 경우, A( ) 함수에서 'return [value]'를 할 때, '[value]'에 대해 보안모듈에 encrypt를 요청한다. 다음으로 보안 모듈에서 호출을 요청한 앱이 공식앱인지 검증한다. "공식앱인이 검증한다"라는 것은 실행되어 암호화를 요청한 어플리케이션이 구글의 공식마켓을 통해 설치가 되었는지를 의미하는 것으로 구글에서 이미 제공하는 확인 방식이 있다. 공식앱이면 '[value]'를 암호화하여 돌려준다. A( ) 함수는 'enc([value])'를 리턴하게 된다. main( ) 함수는 'call A( )'형태로 A( ) 함수를 호출하여 리턴 값을 받았으므로, 보안모듈에 decrypt를 요청한다. 보안 모듈에서 'dec(enc([value]))'를 리턴하게 된다. 즉, '[value]'를 리턴하게 된다.
이 때, 암호화 및 복호화에 사용되는 키 쌍은 아래와 같이 생성 및 관리된다. 어플리케이션이 설치되고, 후킹 방지 기능을 이용할 어플리케이션인 경우, 설치될 때 보안모듈에 패키지 키 쌍을 요청한다. 보안 모듈은 요청한 어플리케이션이 공식앱인지 공증한다. 공식앱이면 키 쌍을 생성하고, 어플리케이션과 맵핑(추후 어플리케이션 이름 등을 통해 해당하는 키를 찾을 수 있도록 관련있게 저장)한다.
본 발명의 일 실시예에 따른 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 방법은 프로그램이 실행하면서 메모리상에서 생성되는 데이터를 보호하는게 목적이다. 그 데이터도 모두가 아닌 특정 함수의 호출에 따른 결과의 보호인 것이다. 도 7의 코드에서 A( )함수가 리턴하게 되는 값은 사용자가 입력한 값이 뭐냐에 따라 다르게 된다. 사용자가 'a'를 입력하게 될 수도 있고, 'b'를 입력하게 될 수도 있다. 이때, 'b'를 입력하면 result는 2가 될 것이고, 그 외의 글자를 입력하면 0이 될 것이다. 하지만 후킹에 의해 사용자가 무엇을 입력하든 A( ) 함수의 리턴 값을 'b'로 변경하면 무조건 result가 2가 되는데, 본 발명의 제안기법을 이용하면 return 결과인 사용자의 입력은 암/복호화를 통해 보호되므로 리턴 값을 임의로 'b'와 같이 변경하는 것이 안되는 안드로이드 어플리케이션에 대한 후킹방지 효과가 있다.
본 발명은 상술한 내용에서 본 발명의 실시예 및 첨부된 도면에 의해 한정되는 것은 아니며, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능함은 통상의 기술자에게 명백할 것이다.

Claims (6)

  1. 어플리케이션 실행으로 특정 함수를 호출하고, 상기 특정 함수로 인해 호출된 함수의 결과값을 보장하기 위해 상기 결과값을 암호화 요청하여 호출된 함수의 결과값의 인위적인 메모리 변화방지를 요청하는 어플리케이션 실행부; 및
    상기 어플리케이션 실행부를 통해 전달받는 결과값을 암호화하고, 상기 어플리케이션 실행부로부터 결과값 검증을 요청받아 복호화하여 상기 어플리케이션 실행부로 결과값을 전달하여 인위적인 메모리 변화를 방지하는 보안 모듈; 을 포함하며,
    상기 보안 모듈은 상기 어플리케이션 실행부에서 요청한 어플리케이션이 공식앱인지 공증하고, 공식앱이면 키 쌍을 생성하고, 상기 어플리케이션과 맵핑하는 맵핑모듈;을 포함하는 것을 특징으로 하는 안드로이드 어플리케이션에 대한 후킹방지 시스템.
  2. 제1항에 있어서,
    상기 어플리케이션 실행부는 상기 어플리케이션의 설치시, 상기 보안 모듈에 패키지 키 쌍을 요청하는 키 쌍 요청모듈;을 포함하는 것을 특징으로 하는 안드로이드 어플리케이션에 대한 후킹방지 시스템.
  3. 삭제
  4. 안드로이드 어플리케이션에 대한 후킹방지 방법에 있어서,
    a) 어플리케이션 실행으로 특정 함수를 호출시 어플리케이션 실행부가 상기 특정 함수로 인해 호출된 함수의 결과값을 보장하기 위해 상기 결과값을 보안 모듈로 암호화 요청하여 호출된 함수의 결과값의 인위적인 메모리 변화방지를 요청하는 단계;
    b) 상기 보안 모듈이 상기 암호화 요청에 따라 상기 결과값을 암호화하는 단계; 및
    c) 상기 보안 모듈이 상기 어플리케이션 실행부로부터 결과값 검증을 요청받아 복호화하여 상기 어플리케이션 실행부로 결과값을 전달하여 인위적인 메모리 변화를 방지하는 단계;를 포함하며,
    상기 a)단계 이후, 상기 보안모듈은 상기 어플리케이션 실행부에서 요청한 어플리케이션이 공식앱인지 공증하고, 공식앱이면 키 쌍을 생성하여 상기 어플리케이션과 맵핑하는 단계;를 포함하는 것을 특징으로 하는 안드로이드 어플리케이션에 대한 후킹방지 방법.
  5. 제4항에 있어서,
    상기 제 a) 단계는 상기 어플리케이션 실행부에서 상기 어플리케이션의 설치시, 상기 보안 모듈에 패키지 키 쌍을 요청하는 단계;를 포함하는 것을 특징으로 하는 안드로이드 어플리케이션에 대한 후킹방지 방법.
  6. 삭제
KR1020190094796A 2019-08-05 2019-08-05 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법 KR102215231B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190094796A KR102215231B1 (ko) 2019-08-05 2019-08-05 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190094796A KR102215231B1 (ko) 2019-08-05 2019-08-05 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법

Publications (1)

Publication Number Publication Date
KR102215231B1 true KR102215231B1 (ko) 2021-02-10

Family

ID=74560884

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190094796A KR102215231B1 (ko) 2019-08-05 2019-08-05 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR102215231B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090019484A (ko) * 2007-08-21 2009-02-25 소프트캠프(주) 클립보드 보안방법
KR20140110639A (ko) * 2013-03-08 2014-09-17 삼성전자주식회사 데이터 보호 방법 및 이를 구현하는 전자 장치
KR20150017844A (ko) * 2013-08-08 2015-02-23 삼성전자주식회사 페이지 구성 방법 및 이를 지원하는 전자 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090019484A (ko) * 2007-08-21 2009-02-25 소프트캠프(주) 클립보드 보안방법
KR20140110639A (ko) * 2013-03-08 2014-09-17 삼성전자주식회사 데이터 보호 방법 및 이를 구현하는 전자 장치
KR20150017844A (ko) * 2013-08-08 2015-02-23 삼성전자주식회사 페이지 구성 방법 및 이를 지원하는 전자 장치

Similar Documents

Publication Publication Date Title
KR102217501B1 (ko) 신뢰 실행 환경을 갖는 모바일 디바이스
US11514159B2 (en) Method and system for preventing and detecting security threats
US10853270B2 (en) Cryptographic pointer address encoding
US11416605B2 (en) Trusted execution environment instances licenses management
US8769305B2 (en) Secure execution of unsecured apps on a device
US7577852B2 (en) Microprocessor, a node terminal, a computer system and a program execution proving method
Ciardo et al. SMART: Simulation and Markovian analyzer for reliability and timing
KR20030082485A (ko) 대칭 키 암호화에 기초한 데이터의 저장 및 검색
US20180373646A1 (en) Cache unit useful for secure execution
WO2016112799A1 (zh) 一种文件处理方法和装置
US11704442B2 (en) Instance handling of a trusted execution environment
KR20180007459A (ko) 화이트박스 암호를 이용한 암/복호화 방법 및 그 장치
KR101203722B1 (ko) 데이터 보호장치 및 그 방법
KR102215231B1 (ko) 안드로이드 어플리케이션에 대한 후킹방지 시스템 및 그 방법
Janjua et al. Towards a standards-compliant pure-software trusted execution environment for resource-constrained embedded devices
US10824766B2 (en) Technologies for authenticated USB device policy enforcement
US20090172631A1 (en) Method Of Adding A Functionality To An Executable First Module Of A Program Package
US20230058046A1 (en) Apparatus and Method for Protecting Shared Objects
Ribeiro et al. DBStore: A TrustZone-backed Database Management System for Mobile Applications.
Sitawarin iOS Security

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant