KR101632152B1 - 모바일 플랫폼 동적 분석 방지 장치 및 그 방법 - Google Patents

모바일 플랫폼 동적 분석 방지 장치 및 그 방법 Download PDF

Info

Publication number
KR101632152B1
KR101632152B1 KR1020150113290A KR20150113290A KR101632152B1 KR 101632152 B1 KR101632152 B1 KR 101632152B1 KR 1020150113290 A KR1020150113290 A KR 1020150113290A KR 20150113290 A KR20150113290 A KR 20150113290A KR 101632152 B1 KR101632152 B1 KR 101632152B1
Authority
KR
South Korea
Prior art keywords
virtual machine
debugger
variable
global variable
mobile platform
Prior art date
Application number
KR1020150113290A
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 KR1020150113290A priority Critical patent/KR101632152B1/ko
Application granted granted Critical
Publication of KR101632152B1 publication Critical patent/KR101632152B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software

Landscapes

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

Abstract

본 발명은 모바일 플랫폼 동적 분석 방지 장치 및 그 방법에 대한 것이다.
본 발명에 따른 모바일 플랫폼 동적 분석 방지 장치는 모바일 플랫폼의 달빅가상머신에 접근하여 모바일 플랫폼의 버전정보를 검출하고, 버전정보를 참고로 달빅가상머신 내 전역변수의 주소값을 포인터변수에 저장하고, 포인터변수를 참고로 전역변수의 필드 값을 획득하고 제어 명령에 따라 해당 전역변수의 필드 값을 변조하는 달빅가상머신 어댑터와, 달빅가상머신 어댑터를 통해 전역변수 중 디버거 관련 전역변수의 필드 값을 전달받아 달빅가상머신과 외부 디버거 간 연결 유무를 판단하고 판단 결과에 따라 외부 디버거의 연결을 해제시키는 디버거탐지모듈과, 전역변수 중 통신 관련 전역변수의 필드 값을 변조하기 위한 제어 명령을 생성하여 달빅가상머신 어댑터에 전달하는 전송제어모듈 및 전역변수 중 외부 디버거가 사용하는 브레이크포인트 관련 전역변수의 필드 값을 변조하기 위한 제어 명령을 생성하여 달빅가상머신 어댑터에 전달하는 브레이크포인트방지모듈을 포함한다.
본 발명에 따르면, 모바일 플랫폼 어플리케이션에서 디버거가 플랫폼과 통신하기 위해 사용되는 변수 값을 변조하여 접근을 차단함으로써 디버거를 통한 동적 분석을 원천적으로 방지할 수 있다.

Description

모바일 플랫폼 동적 분석 방지 장치 및 그 방법{APPARATUS FOR PREVENTING DYNAMIC ANALYSIS ON MOBILE PLATFORM AND METHOD THEREOF}
본 발명은 모바일 플랫폼 동적 분석 방지 장치 및 그 방법에 관한 것으로서, 보다 상세하게는 모바일 플랫폼 어플리케이션에서 디버거(Debugger)가 플랫폼과 통신하기 위해 사용되는 변수 값을 변조하여 접근을 차단함으로써 디버거를 통한 동적 분석을 원천적으로 방지하는 모바일 플랫폼 동적 분석 방지 장치 및 그 방법에 관한 것이다.
디버깅을 통한 공격에 취약한 모바일 어플리케이션을 보호하기 위해 디버깅 방지 기법들이 다수 개발되었지만, 어플리케이션 수준의 보호기법들은 역공학과 분석도구들을 통해 분석이 가능하여 이를 방지할 수 있는 플랫폼 수준의 보안 서비스를 필요로 한다.
일반적으로 공격자는 원본 프로그램을 변경하여 개인정보탈취 코드 등의 악성코드들을 삽입 할 수 있는데, 기존의 여러 플랫폼에서의 동적 분석 방지 기법은 역공학 시 발생하는 특징들을 분석하고 이를 활용하여 실행 코드의 암호화를 통해 소프트웨어의 코드 분석이 차단되도록 한다.
또한, 기존의 실행파일 보호 기법은 대상 파일을 분석하여 실행파일인지 여부를 분석한 뒤 결과가 실행파일일 경우, 중앙처리장치에 의해 실행파일의 실행코드가 실행되도록 한다. 그러나, 이러한 방법은 실행 코드에 대한 방어 방안이 없이 실행되기 때문에, 실행 코드에 대한 악의적인 액세스에 노출될 우려가 있다.
특히, 안드로이드 모바일 플랫폼의 달빅가상머신(Dalvik Virtual Machine)에서 수행되는 달빅 바이트 코드(Dalvik Bite Code)를 추출하면 구조적 특성상 해당 어플리케이션의 구조를 간단하게 분석할 수 있으므로 이를 방지하기 위한 디버깅 방지 기술의 개발이 시급하다.
본 발명의 배경이 되는 기술은 대한민국 공개특허공보 제10-2014-0148153호(2014. 12. 31. 공개)에 개시되어 있다.
본 발명은 상기와 같은 문제점을 개선하기 위해 창출된 것으로, 본 발명의 목적은 모바일 플랫폼 어플리케이션에서 디버거가 플랫폼과 통신하기 위해 사용되는 변수 값을 변조하여 접근을 차단함으로써 디버거를 통한 동적 분석을 원천적으로 방지하는 모바일 플랫폼 동적 분석 방지 장치 및 그 방법을 제공하는 것이다.
이러한 기술적 과제를 이루기 위한 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치는, 모바일 플랫폼의 달빅가상머신(Dalvik Virtual Machine)에 접근하여 상기 모바일 플랫폼의 버전정보를 검출하고, 상기 버전정보를 참고로 상기 달빅가상머신 내 전역변수의 주소값을 포인터변수에 저장하고, 상기 포인터변수를 참고로 상기 전역변수의 필드 값을 획득하고 제어 명령에 따라 해당 전역변수의 필드 값을 변조하는 달빅가상머신 어댑터; 상기 달빅가상머신 어댑터를 통해 상기 전역변수 중 디버거 관련 전역변수의 필드 값을 전달받아 상기 달빅가상머신과 외부 디버거 간 연결 유무를 판단하고 판단 결과에 따라 상기 외부 디버거의 연결을 해제시키는 디버거탐지모듈; 상기 전역변수 중 통신 관련 전역변수의 필드 값을 변조하기 위한 제어 명령을 생성하여 상기 달빅가상머신 어댑터에 전달하는 전송제어모듈; 및 상기 전역변수 중 상기 외부 디버거가 사용하는 브레이크포인트 관련 전역변수의 필드 값을 변조하기 위한 제어 명령을 생성하여 상기 달빅가상머신 어댑터에 전달하는 브레이크포인트방지모듈을 포함한다.
또한, 상기 달빅가상머신 어댑터는 전역변수 호출함수를 통해 접근하기 위한 전역변수를 호출하고, 상기 포인터변수에 저장된 주소값을 참고하여 제어 명령에 따라 해당 전역변수의 필드 값을 변조할 수 있다.
또한, 상기 디버거탐지모듈은 상기 달빅가상머신과 외부 디버거 간 연결이 감지되면, 상기 달빅가상머신 내 스레드(thread)와 상기 외부 디버거 간 커뮤니케이션을 제공하는 인터페이스를 통해 상기 외부 디버거의 연결을 해제시킬 수 있다.
또한, 상기 제어 명령은 해당 전역변수의 필드 값을 변조하여 상기 외부 디버거의 연결을 해제시키기 위한 제어 명령일 수 있다.
또한, 상기 달빅가상머신은 안드로이드 플랫폼 내에서 실행되고, 상기 외부 디버거는 JDWP(Java Debug Wire Protocol)를 이용하여 어플리케이션을 디버깅하는 디버거일 수 있다.
또한, 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치를 이용한 분석 방지 방법은, 상기 모바일 플랫폼의 달빅가상머신(Dalvik Virtual Machine)에 접근하여 상기 모바일 플랫폼의 버전정보를 검출하는 단계; 상기 버전정보를 참고로 상기 달빅가상머신 내 전역변수의 주소값을 포인터변수에 저장하는 단계; 상기 주소값을 참고하여 상기 전역변수 중 디버거 관련 전역변수의 필드 값을 전달받아 상기 달빅가상머신과 외부 디버거 간 연결 유무를 판단하는 단계; 상기 판단 결과 상기 달빅가상머신과 외부 디버거 간 연결이 감지되면, 상기 외부 디버거의 연결을 해제시키는 단계; 및 상기 외부 디버거의 연결이 해제되면, 상기 전역변수 중 통신 및 상기 외부 디버거가 사용하는 브레이크포인트 관련 전역변수의 필드 값을 변조하는 단계를 포함한다.
본 발명에 따른 모바일 플랫폼 동적 분석 방지 장치 및 그 방법은 모바일 플랫폼 어플리케이션에서 디버거가 플랫폼과 통신하기 위해 사용되는 변수 값을 변조하여 접근을 차단함으로써 디버거를 통한 동적 분석을 원천적으로 방지할 수 있다.
또한, 본 발명은 모바일 플랫폼에서의 디버그 컨트롤 모듈이 사용하는 변수 등의 리소스를 제한하는 간단한 코드를 통해 동적 분석을 방지할 수 있으므로 복잡한 분석 방지 코드가 불필요하여 어플리케이션의 실행 성능을 저하시키지 않는 장점이 있다.
또한, 본 발명은 디버거의 종류나 특징에 상관없이 해당 디버깅 프로토콜을 사용하는 동적 분석 도구의 접근을 방지할 수 있다.
또한, 본 발명은 정적 분석 방지 기법에 영향을 미치지 않으므로 보호하고자 하는 어플리케이션에 정적 분석 방지 기법과 함께 동시에 적용할 수 있다.
도 1은 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치가 포함된 안드로이드 플랫폼의 구조와 JDWP를 이용하는 디버거를 나타낸 구성도이다.
도 2는 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치에서 달빅가상머신 어댑터가 달빅가상머신의 전역변수에 접근하는 과정을 설명하기 위한 도면이다.
도 3은 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치에서 디버깅 관련 전역변수 중 일부와 해당 변수의 메모리 주소를 도시한 도면이다.
도 4 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 방법의 동작 흐름을 도시한 순서도이다.
이하 첨부된 도면을 참조하여 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치 및 그 방법을 설명한다. 이 과정에서 도면에 도시된 선들의 두께나 구성요소의 크기 등은 설명의 명료성과 편의상 과장되게 도시되어 있을 수 있다.
또한 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서, 이는 사용자, 운용자의 의도 또는 관례에 따라 달라질 수 있다. 그러므로 이러한 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
먼저, 도 1을 통해 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치에 대하여 설명한다.
도 1은 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치가 포함된 안드로이드 플랫폼의 구조와 JDWP를 이용하는 디버거를 나타낸 구성도이다.
도 1을 참고하면 알 수 있듯이, 본 발명의 실시예에 따른 모바일 기반의 안드로이드 플랫폼(Android Platform) 내에는 동적 분석 방지 장치(Debug Control Module, 100)와, 달빅가상머신(Dalvik Virtual Machine, 200)이 구비되며, 달빅가상머신(200) 내에는 외부 디버거(300)와 인터페이스(400)를 통해 통신하는 스레드(220)와, 달빅가상머신(200)에서 사용하는 전역변수(210)인 gDVM 구조체가 구비된다.
이때, 외부 디버거(300)는 JDWP(Java Debug Wire Protocol)을 이용하여 어플리케이션을 디버깅하는 디버거이다.
여기서, JDWP는 디버거와 플랫폼과의 통신을 위한 규약이다. 즉, NetBeans는 JDWP형식으로 플랫폼과의 통신을 하므로 플랫폼 내에 통신을 위해 다양한 정보를 담고 있다. 그 중에서 안드로이드 플랫폼에는 달빅가상머신(200) 내에 존재하는 전역변수(210)인 gDVM이라는 변수를 통해 디버깅 관련 모든 정보를 담고 있다.
또한, 인터페이스(Android Debug Bridge, 400)는 PC 플랫폼과 안드로이드 플랫폼 간 커뮤니케이션을 제공하는 커맨드 라인 도구(Command-line Tool)이다. 따라서, 외부 디버거(300)는 인터페이스(400)를 이용하여 안드로이드 플랫폼에 존재하는 JDWP스레드(JDWP Thread, 220)와 통신한다. 안드로이드 어플리케이션을 디버깅하려면 인터페이스(400)를 이용하여 안드로이드 플랫폼과 통신을 하여 원격 디버깅을 해야 한다.
또한, 스레드(220)는 인터페이스(400)를 통해 JDWP 프로토콜로 요청하는 외부 디버거(300)들의 명령어를 처리한다. 즉, gDVM의 디버깅 관련 전역변수(210)에 접근하여 해당 요청을 처리한다.
이를 기반으로 한 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치(100)는 도 1에서와 같이 달빅가상머신 어댑터(110), 전송제어모듈(120), 브레이크포인트방지모듈(130) 및 디버거탐지모듈(140)을 포함한다.
달빅가상머신 어댑터(110)는 안드로이드 플랫폼의 달빅가상머신(200)에 접근하여 안드로이드 플랫폼의 버전정보를 검출한다. 그 이유는 안드로이드 플랫폼의 버전에 따라 로딩되는 라이브러리의 메모리상 주소 즉, 오프셋(off set)이 달라지기 때문이다.
또한, 달빅가상머신 어댑터(110)는 버전정보를 참고로 달빅가상머신(200) 내 전역변수(gDVM, 210)의 주소값을 포인터변수(pDVM, 111)에 저장하고, 포인터변수(111)를 참고로 전역변수(210)의 필드 값을 획득하고 제어 명령에 따라 해당 전역변수(210)의 필드 값을 변조한다.
이를 정리하자면, 달빅가상머신 어댑터(110)는 달빅가상머신(200) 내에 존재하는 전역변수(210)인 gDVM의 주소값을 연산하여 전역변수(210)의 포인터변수(111)인 pDVM에 저장한다. 그리고, 포인터변수(111)를 통해 달빅가상머신(200) 내 전역변수(210)에 접근하여 제어 명령에 따라 전역변수(210)를 제어한다.
따라서, 달빅가상머신 어댑터(110)는, 전역변수(210) 호출함수를 통해 접근하기 위한 전역변수(210)를 호출하고, 포인터변수(111)에 저장된 주소값을 참고하여 제어 명령에 따라 해당 전역변수(210)의 필드 값을 변조한다.
이를 통해, 외부 디버거(300)의 접근을 방지할 수 있다.
도 2는 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치에서 달빅가상머신 어댑터가 달빅가상머신의 전역변수에 접근하는 과정을 설명하기 위한 도면이다.
도 2를 참고하여 이를 자세히 설명하자면, 달빅가상머신(200)의 모든 상태를 저장하는 gDVM 구조체는 libdvm 라이브러리에 존재하고 gDVM은 전역변수(210)로 선언된다. 이때, gDVM은 전역변수(210)이기 때문에 라이브러리의 데이터 영역에 존재한다. 즉, gDVM이 데이터 영역에 있기 때문에 사용자가 정의한 라이브러리를 사용하여 읽고 쓰기가 가능하다.
따라서, 달빅가상머신 어댑터(110)는 사용자가 정의한 DBGPrevention 라이브러리를 사용하여 libdvm 내에 있는 gDVM에 접근한다. 이때, gDVM 내에 있는 디버깅 정보를 접근하기 위해서 gDVM의 주소를 getGDVM() 함수를 사용하여 구한다. 즉, gDVM 내의 정보를 사용하여 디버깅을 예방 혹은 탐지하는 것이 가능하게 된다.
도 3은 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치에서 디버깅 관련 전역변수 중 일부와 해당 변수의 메모리 주소를 도시한 도면이다.
달빅가상머신 어댑터(110) 도 2와 같은 과정을 통해 gDVM의 주소값을 연산하여 도 3와 같이 획득한 메모리 주소를 포인터변수(111)인 pDVM에 저장한다.
먼저, 디버거탐지모듈(140)은 달빅가상머신 어댑터(110)를 통해 전역변수(210) 중 디버거 관련 전역변수(210)의 필드 값을 전달받아 달빅가상머신(200)과 외부 디버거(300) 간 연결 유무를 판단하고 판단 결과에 따라 외부 디버거(300)의 연결을 해제시킨다.
자세히는, 전역변수(210) 중 debuggerConnected와 debuggerActive 변수를 확인하여 외부 디버거(300)가 현재 연결되어있는지 확인한다. 해당 전역변수(210)들은 외부 디버거(300)가 연결되어있으면 True, 연결되어있지 않으면 False 값을 갖는다.
따라서, 디버거탐지모듈(140)은 debuggerConnected 또는 debuggerActive 변수가 True 값을 가지면 외부 디버거(300)가 연결된 것으로 판단하여 달빅가상머신(200) 내 스레드(220)와 외부 디버거(300) 간 커뮤니케이션을 제공하는 인터페이스(400)를 통해 외부 디버거(300)의 연결을 해제시킨다.
전송제어모듈(120)은 전역변수(210) 중 통신 관련 전역변수(210)의 필드 값을 변조하기 위한 제어 명령을 생성하여 달빅가상머신 어댑터(110)에 전달한다.
즉, 달빅가상머신 어댑터(110)를 통해 통신 관련 전역변수(210)인 jdwpState 변수에 접근하여 해당 변수에 NULL 값을 대입하기 위한 제어 명령을 생성하여 달빅가상머신 어댑터(110)에 전달한다.
따라서, 달빅가상머신(200) 내 스레드(220)가 통신 관련 전역변수(210)에 접근하면 세그멘테이션 오류가 발생하며, 외부 디버거(300)의 연결이 해제된다.
브레이크포인트방지모듈(130)은 전역변수(210) 중 외부 디버거(300)가 사용하는 브레이크포인트 관련 전역변수(210)의 필드 값을 변조하기 위한 제어 명령을 생성하여 달빅가상머신 어댑터(110)에 전달한다.
즉, 달빅가상머신 어댑터(110)를 통해 브레이크포인트 관련 전역변수(210)인 breakpointSet 변수에 접근하여 해당 변수에 NULL 값을 대입하기 위한 제어 명령을 생성하여 달빅가상머신 어댑터(110)에 전달한다.
따라서, 달빅가상머신(200) 내 스레드(220)가 브레이크포인트 관련 전역변수(210)에 접근하면 세그멘테이션 오류가 발생하며, 외부 디버거(300)의 연결이 해제된다.
또한, 달빅가상머신 어댑터(110)는 외부 디버거(300)의 통신 요청이 감지 되지 않으면 안드로이드 플랫폼의 어플리케이션을 실행한다.
이하에서는 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 방법에 대하여 설명한다.
도 4는 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 방법의 동작 흐름을 도시한 순서도로서, 이를 참조하여 본 발명의 구체적인 동작을 설명한다.
본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 방법에 따르면, 먼저, 달빅가상머신 어댑터(110)는 안드로이드 플랫폼의 달빅가상머신(Dalvik Virtual Machine, 200)에 접근하여 안드로이드 플랫폼의 버전정보를 검출한다(S410).
그 이유는 안드로이드 플랫폼의 버전에 따라 로딩되는 라이브러리의 메모리상 주소 즉, 오프셋(offset)이 달라지기 때문이다.
그 다음, 달빅가상머신 어댑터(110)는 S410단계에서 검출한 버전정보를 참고로 달빅가상머신(200) 내 전역변수(210)의 주소값을 포인터변수(111)에 저장한다(S420).
그 다음, 디버거탐지모듈(140)은 S420단계에서 저장한 주소값을 참고하여 전역변수(210) 중 디버거 관련 전역변수의 필드 값을 전달받아 달빅가상머신(200)과 외부 디버거(300) 간 연결이 감지되는지 판단한다(S430).
S430단계의 판단 결과 달빅가상머신(200)과 외부 디버거(300) 간 연결이 감지되면, 디버거탐지모듈(140)은 외부 디버거(300)의 연결을 해제시킨다(S440).
자세히는, 디버거탐지모듈(140)은 달빅가상머신 어댑터(110)를 통해 전역변수(210) 중 debuggerConnected와 debuggerActive 변수를 확인하여 외부 디버거(300)가 현재 연결되어있는지 확인한다. 해당 전역변수(210)들은 외부 디버거(300)가 연결되어있으면 True, 연결되어있지 않으면 False 값을 갖는다.
따라서, 디버거탐지모듈(140)은 debuggerConnected 또는 debuggerActive 변수가 True 값을 가지면 외부 디버거(300)가 연결된 것으로 판단하여 달빅가상머신(200) 내 스레드(220)와 외부 디버거(300) 간 커뮤니케이션을 제공하는 인터페이스(400)를 통해 외부 디버거(300)의 연결을 해제시킨다.
만약, S430단계의 판단 결과 (200)과 외부 디버거(300) 간 연결이 감지되지 않거나, 인터페이스(400)를 통해 외부 디버거(300)의 연결을 해제되면, 달빅가상머신 어댑터(110)는 전역변수(210) 중 통신 및 외부 디버거(300)가 사용하는 브레이크포인트 관련 전역변수의 필드 값을 변조한다(S450).
즉, 달빅가상머신 어댑터(110)는 전역변수(210) 호출함수를 통해 접근하기 위한 전역변수를 호출하고, 포인터변수(111)에 저장된 주소값을 참고하여 해당 전역변수(210)의 필드 값을 변조한다.
S450단계를 상세히 설명하자면, 먼저 전송제어모듈(120)은 전역변수(210) 중 통신 관련 전역변수(210)의 필드 값을 변조하기 위한 제어 명령을 생성하여 달빅가상머신 어댑터(110)에 전달한다.
즉, 달빅가상머신 어댑터(110)를 통해 통신 관련 전역변수(210)인 jdwpState 변수에 접근하여 해당 변수에 NULL 값을 대입하기 위한 제어 명령을 생성하여 달빅가상머신 어댑터(110)에 전달한다.
따라서, 달빅가상머신(200) 내 스레드(220)가 통신 관련 전역변수(210)에 접근하면 세그멘테이션 오류가 발생하며, 외부 디버거(300)의 연결이 해제된다.
그리고, 브레이크포인트방지모듈(130)은 전역변수(210) 중 외부 디버거(300)가 사용하는 브레이크포인트 관련 전역변수(210)의 필드 값을 변조하기 위한 제어 명령을 생성하여 달빅가상머신 어댑터(110)에 전달한다.
즉, 달빅가상머신 어댑터(110)를 통해 브레이크포인트 관련 전역변수(210)인 breakpointSet 변수에 접근하여 해당 변수에 NULL 값을 대입하기 위한 제어 명령을 생성하여 달빅가상머신 어댑터(110)에 전달한다.
그 다음, 달빅가상머신 어댑터(110)는 외부 디버거(300)의 통신 요청이 감지 되는지 판단한다(S460).
S460단계의 판단 결과, 외부 디버거(300)의 통신 요청이 감지 되면, 달빅가상머신 어댑터(110)는 외부 디버거를 종료시킨 후(S470), 안드로이드 플랫폼의 어플리케이션을 실행한다(S480).
상술한 바와 같이, 본 발명의 실시예에 따른 모바일 플랫폼 동적 분석 방지 장치 및 그 방법은 모바일 플랫폼 어플리케이션에서 디버거가 플랫폼과 통신하기 위해 사용되는 변수 값을 변조하여 접근을 차단함으로써 디버거를 통한 동적 분석을 원천적으로 방지할 수 있다.
또한, 모바일 플랫폼에서의 디버그 컨트롤 모듈이 사용하는 변수 등의 리소스를 제한하는 간단한 코드를 통해 동적 분석을 방지할 수 있으므로 복잡한 분석 방지 코드가 불필요하여 어플리케이션의 실행 성능을 저하시키지 않는 장점이 있다.
또한, 디버거의 종류나 특징에 상관없이 해당 디버깅 프로토콜을 사용하는 동적 분석 도구의 접근을 방지할 수 있다.
또한, 정적 분석 방지 기법에 영향을 미치지 않으므로 보호하고자 하는 어플리케이션에 정적 분석 방지 기법과 함께 동시에 적용할 수 있다.
본 발명은 도면에 도시된 실시예를 참고로 하여 설명되었으나 이는 예시적인 것에 불과하며, 당해 기술이 속하는 분야에서 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호범위는 아래의 특허청구범위에 의해서 정하여져야 할 것이다.
100 : 동적 분석 방지 장치 110 : 달빅가상머신 어댑터
111 : 포인터변수 120 : 전송제어모듈
130 : 브레이크포인트방지모듈 140 : 디버거탐지모듈
200 : 달빅가상머신 210 : 전역변수
220 : 스레드 300 : 외부 디버거
400 : 인터페이스

Claims (10)

  1. 모바일 플랫폼의 달빅가상머신(Dalvik Virtual Machine)에 접근하여 상기 모바일 플랫폼의 버전정보를 검출하고, 상기 버전정보를 참고로 상기 달빅가상머신 내 전역변수의 주소값을 포인터변수에 저장하고, 상기 포인터변수를 참고로 상기 전역변수의 필드 값을 획득하고 제어 명령에 따라 해당 전역변수의 필드 값을 변조하는 달빅가상머신 어댑터;
    상기 달빅가상머신 어댑터를 통해 상기 전역변수 중 디버거 관련 전역변수의 필드 값을 전달받아 상기 달빅가상머신과 외부 디버거 간 연결 유무를 판단하고 판단 결과에 따라 상기 외부 디버거의 연결을 해제시키는 디버거탐지모듈;
    상기 전역변수 중 통신 관련 전역변수의 필드 값을 변조하기 위한 제어 명령을 생성하여 상기 달빅가상머신 어댑터에 전달하는 전송제어모듈; 및
    상기 전역변수 중 상기 외부 디버거가 사용하는 브레이크포인트 관련 전역변수의 필드 값을 변조하기 위한 제어 명령을 생성하여 상기 달빅가상머신 어댑터에 전달하는 브레이크포인트방지모듈을 포함하는 모바일 플랫폼 동적 분석 방지 장치.
  2. 제1항에 있어서,
    상기 달빅가상머신 어댑터는,
    전역변수 호출함수를 통해 접근하기 위한 전역변수를 호출하고, 상기 포인터변수에 저장된 주소값을 참고하여 제어 명령에 따라 해당 전역변수의 필드 값을 변조하는 모바일 플랫폼 동적 분석 방지 장치.
  3. 제1항에 있어서,
    상기 디버거탐지모듈은,
    상기 달빅가상머신과 외부 디버거 간 연결이 감지되면, 상기 달빅가상머신 내 스레드(thread)와 상기 외부 디버거 간 커뮤니케이션을 제공하는 인터페이스를 통해 상기 외부 디버거의 연결을 해제시키는 모바일 플랫폼 동적 분석 방지 장치.
  4. 제1항에 있어서,
    상기 제어 명령은,
    해당 전역변수의 필드 값을 변조하여 상기 외부 디버거의 연결을 해제시키기 위한 제어 명령인 모바일 플랫폼 동적 분석 방지 장치.
  5. 제1항에 있어서,
    상기 달빅가상머신은 안드로이드 플랫폼 내에서 실행되고, 상기 외부 디버거는 JDWP(Java Debug Wire Protocol)를 이용하여 어플리케이션을 디버깅하는 디버거인 모바일 플랫폼 동적 분석 방지 장치.
  6. 모바일 플랫폼 동적 분석 방지 장치를 이용한 분석 방지 방법에 있어서,
    상기 모바일 플랫폼의 달빅가상머신(Dalvik Virtual Machine)에 접근하여 상기 모바일 플랫폼의 버전정보를 검출하는 단계;
    상기 버전정보를 참고로 상기 달빅가상머신 내 전역변수의 주소값을 포인터변수에 저장하는 단계;
    상기 주소값을 참고하여 상기 전역변수 중 디버거 관련 전역변수의 필드 값을 전달받아 상기 달빅가상머신과 외부 디버거 간 연결 유무를 판단하는 단계;
    상기 판단 결과 상기 달빅가상머신과 외부 디버거 간 연결이 감지되면, 상기 외부 디버거의 연결을 해제시키는 단계; 및
    상기 외부 디버거의 연결이 해제되면, 상기 전역변수 중 통신 및 상기 외부 디버거가 사용하는 브레이크포인트 관련 전역변수의 필드 값을 변조하는 단계를 포함하는 모바일 플랫폼 동적 분석 방지 방법.
  7. 제6항에 있어서,
    상기 전역변수의 필드 값을 변조하는 단계는,
    전역변수 호출함수를 통해 접근하기 위한 전역변수를 호출하고, 상기 포인터변수에 저장된 주소값을 참고하여 해당 전역변수의 필드 값을 변조하는 모바일 플랫폼 동적 분석 방지 방법.
  8. 제6항에 있어서,
    상기 외부 디버거의 연결을 해제시키는 단계는,
    상기 달빅가상머신 내 스레드(thread)와 상기 외부 디버거 간 커뮤니케이션을 제공하는 인터페이스를 통해 상기 외부 디버거의 연결을 해제시키는 모바일 플랫폼 동적 분석 방지 방법.
  9. 제6항에 있어서,
    상기 외부 디버거의 통신 요청이 감지 되지 않으면, 상기 모바일 플랫폼의 어플리케이션을 실행하는 단계를 더 포함하는 모바일 플랫폼 동적 분석 방지 방법.
  10. 제6항에 있어서,
    상기 달빅가상머신은 안드로이드 플랫폼 내에서 실행되고, 상기 외부 디버거는 JDWP(Java Debug Wire Protocol)를 이용하여 어플리케이션을 디버깅하는 디버거인 모바일 플랫폼 동적 분석 방지 방법.
KR1020150113290A 2015-08-11 2015-08-11 모바일 플랫폼 동적 분석 방지 장치 및 그 방법 KR101632152B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150113290A KR101632152B1 (ko) 2015-08-11 2015-08-11 모바일 플랫폼 동적 분석 방지 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150113290A KR101632152B1 (ko) 2015-08-11 2015-08-11 모바일 플랫폼 동적 분석 방지 장치 및 그 방법

Publications (1)

Publication Number Publication Date
KR101632152B1 true KR101632152B1 (ko) 2016-06-21

Family

ID=56354000

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150113290A KR101632152B1 (ko) 2015-08-11 2015-08-11 모바일 플랫폼 동적 분석 방지 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR101632152B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271786A (zh) * 2017-07-18 2019-01-25 中国电信股份有限公司 动态信息获取方法和装置
WO2019231000A1 (ko) * 2018-05-29 2019-12-05 라인플러스 주식회사 프로그램 보호를 위한 자바 디버거 차단 방법 및 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100101933A (ko) * 2009-03-10 2010-09-20 주식회사 케이티 기능별로 모듈화된 구조로 이루어진 모바일 플랫폼이 탑재된 이동통신단말, 그 모바일 플랫폼의 동작 방법 및 대기화면 어플리케이션 관리 방법
KR20130022489A (ko) * 2011-08-24 2013-03-07 주식회사 팬택 휴대 단말 시스템에서의 보안 장치
KR20140000397A (ko) * 2012-06-22 2014-01-03 인텔렉추얼디스커버리 주식회사 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100101933A (ko) * 2009-03-10 2010-09-20 주식회사 케이티 기능별로 모듈화된 구조로 이루어진 모바일 플랫폼이 탑재된 이동통신단말, 그 모바일 플랫폼의 동작 방법 및 대기화면 어플리케이션 관리 방법
KR20130022489A (ko) * 2011-08-24 2013-03-07 주식회사 팬택 휴대 단말 시스템에서의 보안 장치
KR20140000397A (ko) * 2012-06-22 2014-01-03 인텔렉추얼디스커버리 주식회사 다중 언어로 개발된 어플리케이션을 위한 프로파일링 수행 시스템 및 이를 이용한 프로파일링 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109271786A (zh) * 2017-07-18 2019-01-25 中国电信股份有限公司 动态信息获取方法和装置
WO2019231000A1 (ko) * 2018-05-29 2019-12-05 라인플러스 주식회사 프로그램 보호를 위한 자바 디버거 차단 방법 및 시스템
JP2021530014A (ja) * 2018-05-29 2021-11-04 ライン プラス コーポレーションLINE Plus Corporation プログラム保護のためのJavaデバッガ遮断方法およびシステム
JP7076014B2 (ja) 2018-05-29 2022-05-26 ライン プラス コーポレーション プログラム保護のためのJavaデバッガ遮断方法およびシステム

Similar Documents

Publication Publication Date Title
KR101845162B1 (ko) 컨테이너 기반의 가상화 시스템용 조작 포획 방법 및 장치
US20060259763A1 (en) Transparent code
US10853483B2 (en) Identification device, identification method, and identification program
JP2018519603A (ja) シェルコードの検知
Cho et al. Anti-debugging scheme for protecting mobile apps on android platform
CN112256570A (zh) 远程调试方法、装置、设备及存储介质
CN109669724B (zh) 一种基于Linux系统的多命令并发式代理服务方法及系统
US20190138713A1 (en) Method for Detecting a Deviation of a Security State of a Computing Device from a Desired Security State
CN109684795B (zh) 应用程序反调试的方法、装置及电子设备
KR101896503B1 (ko) 디바이스 정보자원이 유출되는지 여부를 탐지하는 방법 및 장치
CN114021142A (zh) 一种安卓应用程序漏洞检测方法
KR101926142B1 (ko) 프로그램 분석 장치 및 방법
CN108021791B (zh) 数据保护方法及装置
CN104932972A (zh) 一种反动态调试应用程序的方法及装置
CN107122656B (zh) 一种通过自调试防止外部调试的方法和装置
KR101632152B1 (ko) 모바일 플랫폼 동적 분석 방지 장치 및 그 방법
JP2011510417A (ja) プロセス分離実行を通じたdrmクライアント衝突防止システム及び方法
Matsumoto et al. A proposal for the privacy leakage verification tool for android application developers
CN111367505A (zh) 一种JavaScript源代码保密方法、装置、设备及存储介质
CN106557693A (zh) 一种恶意Hook行为检测方法及系统
KR101842263B1 (ko) 어플리케이션에 대한 역공학 차단 방법 및 장치
KR20110057297A (ko) 악성 봇 동적 분석 시스템 및 방법
KR101053470B1 (ko) 유해 트래픽 제어 및 해킹을 차단하는 장치 및 방법
CN112632534A (zh) 一种恶意行为检测方法及装置
CN113704753A (zh) 对系统调用进行拦截替换的方法和装置、电子设备和介质

Legal Events

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

Payment date: 20190401

Year of fee payment: 4