KR102355760B1 - 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법 - Google Patents
악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법 Download PDFInfo
- Publication number
- KR102355760B1 KR102355760B1 KR1020150031674A KR20150031674A KR102355760B1 KR 102355760 B1 KR102355760 B1 KR 102355760B1 KR 1020150031674 A KR1020150031674 A KR 1020150031674A KR 20150031674 A KR20150031674 A KR 20150031674A KR 102355760 B1 KR102355760 B1 KR 102355760B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- virtual address
- malicious code
- electronic device
- address
- Prior art date
Links
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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
전자 장치의 제어 방법이 개시된다. 본 발명의 다양한 실시예에서, 전자 장치의 제어 방법은, 호스트 시스템의 CPU(central processing unit)의 CDI(Core debug interface)로부터 출력되는 제 1 데이터를 획득하는 동작 및 상기 제 1 데이터를 이용하여 악성 코드 실행 여부를 판단하는 동작을 포함할 수 있다.
Description
본 발명은 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법에 관한 것으로, 더욱 상세하게는 CPU(central processing unit)로부터의 데이터에 기초하여 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법에 관한 것이다.
근자에 들어서, 악성 코드 실행을 감시하는 다양한 프로그램의 개발이 활발하게 진행되고 있다. 악성 코드는 전자 장치가, 웹페이지를 검색할 때, P2P(peer to peer) 서비스를 이용할 때, 셰어웨어를 사용할 때, 불법복제 프로그램을 사용할 때, 내부자(해커)가 직접 설치할 때 또는 전자우편의 첨부파일 또는 메신저 파일을 열 때 전자 장치에 침투할 수 있다. 악성 코드는, 전자 장치로 하여금, 네트워크 트래픽 발생, 시스템 성능 저하, 파일 삭제, 이메일 자동발송, 개인 정보 유출, 원격 제어 등의 기능을 수행하도록 한다. 이에 따라, 전자 장치의 성능 저하 및 개인 정보 유출 등의 보안 관련 문제가 발생할 수 있다.
종래의 전자 장치는, 악성 코드의 실행 여부를 판단하기 위한 다양한 프로그램을 저장한다. 예를 들어, 종래의 전자 장치는, 호스트 시스템 내의 버스(bus)에서 발생하는 메모리 트래픽을 감시함으로써, 악성 코드 실행 여부를 판단할 수 있다.
종래의 전자 장치는, 악성 코드 실행 여부 판단을 위하여 호스트 시스템 내의 버스에서 발생하는 메모리 트래픽을 감시한다. 이에 따라, 종래의 전자 장치는, 버스에 메모리 트래픽을 유발하지 않는 악성 코드를 모니터링할 수 없다.
본 발명은 상술한 문제점 또는 다른 문제점을 해결하기 위하여 안출된 것으로, CPU의 CDI(Core debug interface)로부터 출력되는 데이터를 이용하여 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법을 제공할 수 있다.
본 발명의 다양한 실시예에서, 전자 장치의 제어 방법은, 호스트 시스템의 CPU(central processing unit)의 CDI로부터 출력되는 제 1 데이터를 획득하는 동작; 및 상기 제 1 데이터를 이용하여 악성 코드 실행 여부를 판단하는 동작을 포함할 수 있다.
본 발명의 다양한 실시예에서, 전자 장치는, 호스트 시스템의 CPU의 CDI에 연결되어, 상기 CPU(central processing unit)의 상기 CDI(Core debug interface)로부터 출력되는 제 1 데이터를 획득하는 인터페이스; 및 상기 제 1 데이터를 이용하여 악성 코드 실행 여부를 판단하는 악성 코드 판별기를 포함할 수 있다.
본 발명의 다양한 실시예에 의하여, 호스트 시스템의 CPU의 CDI(Core debug interface)로부터 출력되는 데이터를 이용하여 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법이 제공될 수 있다. 이에 따라, 본 발명의 다양한 실시예에 의한 전자 장치는 버스에 메모리 트래픽을 유발하지 않는 악성 코드의 실행 여부를 판단할 수 있다.
도 1은 본 발명과의 비교를 위한 비교예에 의한 블록도를 도시한다.
도 2는 본 발명의 다양한 실시예에 의한 모니터링 장치 및 호스트 시스템에 대한 블록도를 도시한다.
도 3은 본 발명의 다양한 실시예에 의한 전자 장치의 제어 방법의 흐름도를 도시한다.
도 4a 및 4b는 본 발명의 다양한 실시예에 의한 전자 장치의 블록도를 도시한다.
도 5a 및 5b는 본 발명의 다양한 실시예에 의한 전자 장치의 제어 방법의 흐름도를 도시한다.
도 6은 본 발명의 다양한 실시예에 의한 주소 변환 과정을 설명하기 위한 블록도를 도시한다.
도 7a 및 7b는 본 발명의 다양한 실시예에 따른 전자 장치의 제어 방법의 흐름도를 도시한다.
도 8a 및 8b는 본 발명의 다양한 실시에에 의한 가상 주소 필터의 블록도를 도시한다.
도 9는 본 발명의 다양한 실시예에 의한 전자 장치의 제어 방법의 흐름도를 도시한다.
도 10a 및 10b는 본 발명의 다양한 실시예에 의한 전자 장치의 블록도를 도시한다.
도 2는 본 발명의 다양한 실시예에 의한 모니터링 장치 및 호스트 시스템에 대한 블록도를 도시한다.
도 3은 본 발명의 다양한 실시예에 의한 전자 장치의 제어 방법의 흐름도를 도시한다.
도 4a 및 4b는 본 발명의 다양한 실시예에 의한 전자 장치의 블록도를 도시한다.
도 5a 및 5b는 본 발명의 다양한 실시예에 의한 전자 장치의 제어 방법의 흐름도를 도시한다.
도 6은 본 발명의 다양한 실시예에 의한 주소 변환 과정을 설명하기 위한 블록도를 도시한다.
도 7a 및 7b는 본 발명의 다양한 실시예에 따른 전자 장치의 제어 방법의 흐름도를 도시한다.
도 8a 및 8b는 본 발명의 다양한 실시에에 의한 가상 주소 필터의 블록도를 도시한다.
도 9는 본 발명의 다양한 실시예에 의한 전자 장치의 제어 방법의 흐름도를 도시한다.
도 10a 및 10b는 본 발명의 다양한 실시예에 의한 전자 장치의 블록도를 도시한다.
이하, 본 문서의 다양한 실시예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 문서의 실시예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 문서에서 사용된 "제 1," "제 2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 예를 들면, 제 1 사용자 기기와 제 2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 문서에 기재된 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소(예: 제 1 구성요소)가 다른 구성요소(예: 제 2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제 3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제 1 구성요소)가 다른 구성요소(예: 제 2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 다른 실시예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 문서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 문서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 문서의 실시예들을 배제하도록 해석될 수 없다.
본 문서의 다양한 실시예들에 따른 전자 장치는, 예를 들면, 스마트폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 영상 전화기, 전자책 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), 서버, PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera), 또는 웨어러블 장치(wearable device) 중 적어도 하나를 포함할 수 있다. 다양한 실시예에 따르면, 웨어러블 장치는 액세서리형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈, 또는 머리 착용형 장치(head-mounted-device(HMD)), 직물 또는 의류 일체형(예: 전자 의복), 신체 부착형(예: 스킨 패드(skin pad) 또는 문신), 또는 생체 이식형(예: implantable circuit) 중 적어도 하나를 포함할 수 있다.
어떤 실시예들에서, 전자 장치는 가전 제품(home appliance)일 수 있다. 가전 제품은, 예를 들면, 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스(set-top box), 홈 오토매이션 컨트롤 패널(home automation control panel), 보안 컨트롤 패널(security control panel), TV 박스(예: 삼성 HomeSyncTM, 애플TVTM, 또는 구글 TVTM), 게임 콘솔(예: XboxTM, PlayStationTM), 전자 사전, 전자 키, 캠코더(camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시예에서, 전자 장치는, 각종 의료기기(예: 각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기, 또는 초음파기 등), 네비게이션(navigation) 장치, 위성 항법 시스템(GNSS(global navigation satellite system)), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기(avionics), 보안 기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 금융 기관의 ATM(automatic teller's machine), 상점의 POS(point of sales), 또는 사물 인터넷 장치(internet of things)(예: 전구, 각종 센서, 전기 또는 가스 미터기, 스프링클러 장치, 화재경보기, 온도조절기(thermostat), 가로등, 토스터(toaster), 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다.
어떤 실시예에 따르면, 전자 장치는 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터(projector), 또는 각종 계측 기기(예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시예에서, 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 어떤 실시예에 따른 전자 장치는 플렉서블 전자 장치일 수 있다. 또한, 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 기술 발전에 따른 새로운 전자 장치를 포함할 수 있다.
이하, 첨부 도면을 참조하여, 다양한 실시예에 따른 전자 장치가 설명된다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1은 본 발명과의 비교를 위한 비교예에 의한 블록도를 도시한다.
도 1에 도시된 바와 같이, 비교 예에 의한 전자 장치는 CPU(central processing unit)(1) 및 메모리(3)를 포함할 수 있다. 비교 예에 의한 전자 장치는 CPU(1) 및 메모리(3)를 연결하는 버스(5)를 포함할 수 있다. 버스(5)는, 예를 들면, CPU(1) 및 메모리(3)를 서로 연결하고, CPU(1) 및 메모리(3) 간의 통신(예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다. 이에 따라, 전자 장치는 CPU(1)로부터 발생하는 메모리(3)에 저장이 요구되는 데이터를 버스(5)를 통하여 메모리(3)로 전달할 수 있다.
비교 예에 의한 모니터링 장치(6)는 버스(5)로부터의 트래픽(7)을 모니터링할 수 있다. 이에 따라, 비교 예에 의한 모니터링 장치(6)는 CPU(1)로부터 발생하는 메모리(3)에 저장이 요구되는 데이터가 악성 코드에 의한 것인지를 판단할 수 있다. 다만, 비교 예에 의한 모니터링 장치(6)는 모니터링 대상 호스트 시스템이 write-through 캐시 정책 (cache policy)을 사용하는 시스템인 경우에만 적용이 가능할 수 있다.
하지만, 모니터링 대상 호스트 시스템이 write-through 캐시 정책 이외의 캐시 정책, 예를 들어 write-back 캐시 정책을 사용하는 경우에는, 비교 예에 의한 모니터링 장치(6)는 악성 코드 실행 여부를 판단할 수 없다. 더욱 상세하게는, Write-back 캐시 정책의 경우, 호스트 시스템이 메모리 연산을 하더라도 버스에 트래픽이 유발되지 않을 수 있어 감시장치가 악성코드의 행위를 감시 못하는 경우가 발생할 수 있다.
특히, CPU(1)가 캐시 메모리(4)만을 이용하여 데이터를 읽기/쓰기하는 경우에는, AHB 마스터 인터페이스(2)를 통하여 버스(5)로 데이터를 출력하지 않을 수 있다. 이에 따라, 종래의 모니터링 장치(6)는 버스(5)에서 발생한 트래픽(7)만으로는 악성 코드의 실행 여부를 판단하지 못할 수 있다.
도 2는 본 발명의 다양한 실시예에 의한 모니터링 장치 및 호스트 시스템에 대한 블록도를 도시한다.
본원의 다양한 실시예에 의한 호스트 시스템은 CPU(1) 및 버스(5)를 포함할 수 있다. 한편, 도시되지는 않았지만, 호스트 시스템의 CPU(1)는 버스(5)를 통하여 메모리(미도시)에 연결될 수 있다. 또 다른 실시예에서, CPU(1)는 버스(5)를 통하여 적어도 하나의 소자, 예를 들어 DMA(Direct memory access), 메모리 콘트롤러(memory controller)에 연결될 수 있으며, 상술한 적어도 하나의 소자를 통하여 메모리에 연결될 수도 있다. CPU는 구현에 따라, 어플리케이션 프로세서(application processor(AP)), 커뮤니케이션 프로세서(communication processor(CP)) 또는 프로세서로 명명될 수 있다.
한편, 본원의 다양한 실시예에 의한 호스트 시스템의 CPU(1)는 CDI(10)를 포함할 수 있다. CDI(10)는 호스트 시스템의 CPU(1)에 존재하는 디버그 인터페이스로, 디버깅을 위한 데이터(11)를 출력할 수 있다. CDI(10)로부터 출력되는 데이터는, 가상 주소, 코드 및 콘텍스트 ID(identifier) 중 적어도 하나를 포함할 수 있다. CDI(10)는 CPU(1)가 버스(5)에 트래픽을 발생시키는 데이터뿐만 아니라, write-back 캐시 정책에 의하여 발생되는 데이터를 출력할 수도 있다. 즉, CDI(10)는 CPU(1)가 책정한 캐시 정책에 구애받지 않고, 실행시 발생하는 데이터(11)를 출력할 수 있다.
본 발명의 다양한 실시예에 의한 전자 장치(101)는 CDI(10)로부터의 데이터(11)를 이용하여 악성 코드 실행 여부를 판단할 수 있다. 본 발명의 다양한 실시예에서, 전자 장치(101)는 데이터(11)에 포함된 가상 주소, 코드 및 콘텍스트 ID 중 적어도 하나를 이용하여 악성 코드 실행 여부를 판단할 수 있다. 예를 들어, 전자 장치(101)는 가상 주소, 코드 및 콘텍스트 ID 중 적어도 하나에 대하여 허용가능한지 여부를 판단할 수 있는 알고리즘 또는 프로그램을 저장할 수 있다. 전자 장치(101)는 가상 주소, 코드 및 콘텍스트 ID 중 적어도 하나가 허용된 것인지 여부를 판단함으로써 데이터(11)가 허용된 데이터인지 여부를 판단할 수 있다. 전자 장치(101)는 허용되지 않은 데이터(11)가 검출되면, 악성 코드가 호스트 시스템에서 실행되는 것으로 판단할 수 있다. 또는, 전자 장치(101)는 허용되지 않은 데이터(11)가 검출되면, 해당 데이터에 대한 악성 코드 실행 여부를 판단할 수 있다. 하나의 실시예에서, 전자 장치(101)는 허용되지 않은 데이터(11)를 물리 주소로 변환하고, 변환된 물리 주소를 이용하여 악성 코드 실행 여부를 판단할 수도 있다. 또는, 전자 장치(101)는 허용되지 않은 데이터(11)에 대한 다양한 악성 코드 판단 알고리즘을 적용하여, 악성 코드 실행 여부를 판단할 수도 있다. 물리 주소는, 메모리의 물리 영역에 할당된 주소일 수 있다. 또는, 전자 장치(101)는 허용되지 않은 데이터(11)를 바로 악성 코드에 의한 데이터로 판단할 수도 있다.
한편, 전자 장치(101)는 호스트 시스템의 악성 코드 실행 여부를 결정할 수 있도록, 호스트 시스템에 연결 가능한 전자 장치일 수 있다. 또는, 전자 장치(101)는 호스트 시스템의 내부에 포함되는 모듈로 구현될 수도 있다. 뿐만 아니라, 전자 장치(101)는 호스트 시스템의 CDI(10)로부터의 데이터(11)를 유/무선 통신을 통하여 수신할 수 있는 통신 모듈을 포함한 전자 장치로 구현될 수도 있다.
도 3은 본 발명의 다양한 실시예에 의한 전자 장치의 제어 방법의 흐름도를 도시한다.
310 동작에서, 전자 장치(101)는 호스트 시스템의 CPU(central processing unit)의 CDI(Core debug interface)로부터 출력되는 제 1 데이터를 획득할 수 있다.
320 동작에서, 전자 장치(101)는 상기 제 1 데이터를 이용하여 악성 코드 실행 여부를 판단할 수 있다.
본 발명의 다양한 실시예에서, 상기 악성 코드 실행 여부를 판단하는 동작은, 상기 제 1 데이터의 가상 주소에 기초하여 상기 악성 코드 실행 여부를 판단할 수 있다.
본 발명의 다양한 실시예에서, 상기 악성 코드 실행 여부를 판단하는 동작은, 상기 제 1 데이터의 가상 주소가 악성 코드 검사가 필요한 가상 주소인지 여부에 기초하여 상기 악성 코드 실행 여부를 판단할 수 있다.
본 발명의 다양한 실시예에서, 상기 악성 코드 실행 여부를 판단하는 동작은, 상기 제 1 데이터의 가상 주소가 기설정된 적어도 하나의 참조용 가상 주소에 대응되는지 여부에 기초하여 상기 악성 코드 실행 여부를 판단할 수 있다.
본 발명의 다양한 실시예에서, 상기 악성 코드 실행 여부를 판단하는 동작은, 상기 제 1 데이터의 가상 주소가 기설정된 적어도 하나의 참조용 가상 주소범위에 속하는지 여부에 기초하여 상기 악성 코드 실행 여부를 판단할 수 있다.
본 발명의 다양한 실시예에서, 전자 장치의 제어 방법은, 상기 제 1 데이터의 가상 주소를 물리 주소로 변환하는 동작을 더 포함할 수도 있다.
본 발명의 다양한 실시예에서, 전자 장치의 제어 방법은, 상기 제 1 데이터가 악성 코드인지 여부를, 상기 변환된 물리 주소에 기초하여 판단하는 동작을 더 포함할 수도 있다.
본 발명의 다양한 실시예에서, 상기 제 1 데이터가 악성 코드인지 여부를, 상기 변환된 물리 주소에 기초하여 판단하는 동작은, 상기 변환된 물리 주소가 악성 코드 검사가 필요한 주소인지 여부에 기초하여 상기 제 1 데이터가 악성 코드인지 여부를 판단할 수 있다.
본 발명의 다양한 실시예에서, 상기 제 1 데이터의 가상 주소를 물리 주소로 변환하는 동작은, 상기 제 1 데이터의 가상 주소를 FIFO(first in first out) 큐잉 방식으로, 상기 물리 주소로 변환할 수 있다.
본 발명의 다양한 실시예에서, 상기 악성 코드 실행 여부를 판단하는 동작은, 상기 제 1 데이터의 코드가 이용 가능한 것으로 설정된 코드인지 여부에 기초하여 상기 악성 코드 실행 여부를 판단할 수 있다.
본 발명의 다양한 실시예에서, 상기 악성 코드 실행 여부를 판단하는 동작은, 상기 제 1 데이터의 가상주소에 저장되는 데이터에 대한 분석에 기초하여 상기 악성 코드 실행 여부를 판단할 수 있다.
도 4a 및 4b는 본 발명의 다양한 실시예에 의한 전자 장치의 블록도를 도시한다.
우선, 도 4a를 참조하면, 본 발명의 다양한 실시예에 의한 전자 장치(101)는 인터페이스(405), 가상 주소 필터(410), 버퍼(420) 및 주소 변환 모듈(430)을 포함할 수 있다.
인터페이스(405)는 호스트 시스템의 CPU의 CDI에 연결될 수 있다. 인터페이스(405)는 물리적 또는 논리적으로 호스트 시스템의 CPU의 CDI에 연결될 수 있으며, CDI로부터 출력되는 데이터(11)를 수신할 수 있다. 인터페이스(405)는 CDI로부터 출력되는 데이터(11)를 가상 주소 필터(410)로 출력할 수 있다. 인터페이스(405)는 구현에 따라서 가상 주소 필터(410)와 별도의 모듈로 구현될 수 있으며, 또는 가상 주소 필터(410)의 일부로 구현될 수도 있다.
가상 주소 필터(410)는 인터페이스(405)를 통하여 호스트 시스템의 CPU의 CDI로부터의 데이터(11)를 획득할 수 있다. 상술한 바와 같이, 데이터(11)는 가상 주소, 코드 및 콘텍스트 ID 중 적어도 하나를 포함할 수 있다. 가상 주소는, 구현에 따라 논리적 주소로 명명될 수도 있다. 가상 주소 필터(410)는 획득된 데이터(11)의 가상 주소를 이용하여, 데이터를 필터링할 수 있다.
본 발명의 다양한 실시예에서, 가상 주소 필터(410)는 수신된 데이터(11) 중 악성 코드 검사가 필요하지 않은 가상 주소를 가진 데이터를 필터링하고, 악성 코드 검사가 필요한 가상 주소를 가진 데이터를 출력할 수 있다. 예를 들어, 가상 주소 필터(410)는 악성 코드 검사가 필요 여부를 판별하기 위한 참조용 가상 주소를 미리 설정할 수 있다. 예를 들어, 전자 장치(101)는 이용이 허용되지 않은 커널의 코드 영역 등에 대응하는 가상 주소를 참조용 가상 주소로 미리 설정할 수 있다. 본 발명의 다양한 실시예에서, 가상 주소 필터(410)는 적어도 하나의 참조용 가상 주소를 설정하거나 또는 참조용 가상 주소의 범위를 설정할 수도 있다. 가상 주소 필터(410)는 참조용 가상 주소 또는 참조용 가상 주소의 범위에 대응하는 가상 주소를 가지는 데이터를 버퍼(420)로 출력할 수 있다.
버퍼(420)는 가상 주소 필터(410)로부터 출력된 데이터를 버퍼링하여 주소 변환 모듈(430)로 출력할 수 있다. 본 발명의 다양한 실시예에서, 버퍼(420)는 FIFO(first in first out) 큐잉 방식으로 데이터를 출력할 수 있다. 다만, 큐잉 방식에는 제한이 없음을 당업자는 용이하게 이해할 수 있을 것이다. 도 4a에 도시된 바와 같이, 버퍼(420)의 이전에서는 CPU 클럭(CPU_CLK) 속도로 프로세스가 진행될 수 있으며, 버퍼(420)의 이후에서는 버스 클럭(BUS_CLK) 속도로 프로세스가 진행될 수 있다. 이에 따라, 클럭 속도에 의한 오버페이스가 발생하지 않도록 버퍼(420)는 입력된 데이터를 출력할 수 있다.
주소 변환 모듈(430)은 버퍼(420)로부터 입력되는 데이터의 가상 주소를 물리 주소로 변환할 수 있다. 주소 변환 모듈(430)은 물리 주소로 변환한 데이터를 출력할 수 있다. 본 발명의 다양한 실시예에서, 추가적인 모니터링 장치가 주소 변환 모듈(430)로부터 물리 주소로 변환한 데이터를 입력받아, 물리 주소를 이용하여 악성 코드 실행 여부를 판단할 수 있다. 다른 실시예에서는, 도시되지는 않았지만, 전자 장치(101)는 악성 코드 판별기(미도시)를 더 포함할 수 있으며, 물리 주소로 변환한 데이터를 주소 변환 모듈(430)로부터 입력받을 수도 있다. 악성 코드 판별기(미도시)는 변환된 데이터의 물리 주소를 이용하여 악성 코드 실행 여부를 판단할 수 있다.
도 4b는 본 발명의 다양한 실시예에 따른 전자 장치의 블록도를 도시한다.
도 4b의 실시예는 도 4a의 실시예와는 대조적으로, 전자 장치(101)는 악성 코드 판별기(440)를 포함할 수 있다. 본 발명의 다양한 실시예에서, 버퍼(420)는 가상 주소 필터(410)로부터 출력된 데이터를 버퍼링하여 악성 코드 판별기(440)로 출력할 수 있다.
악성 코드 판별기(440)는 수신된 데이터를 이용하여 악성 코드 실행 여부를 판단할 수 있다. 즉, 본 발명의 다양한 실시예에 의한 전자 장치(101)는 물리 주소로의 주소 변환 없이, 악성 코드 실행 여부를 판단할 수 있다. 하나의 실시예에서, 악성 코드 판별기(440)는 가상 주소 필터(410)로부터 출력된 데이터의 가상 주소를 이용하여 악성 코드 실행 여부를 판단할 수 있다. 상술한 바와 같이, 가상 주소 필터(410)는 미리 설정한 참조용 가상 주소에 대응하는 가상 주소를 가지는 데이터를 출력할 수 있다. 예를 들어, 악성 코드 판별기(440)는 가상 주소 필터(410)로부터 출력된 데이터를 악성 코드에 의한 데이터로 판단할 수 있다. 또는, 악성 코드 판별기(440)는 가상 주소 필터(410)로부터 출력된 데이터에 대하여 추가적인 판단 알고리즘을 적용할 수도 있으며, 적용 결과에 기초하여 악성 코드 실행 여부를 판단할 수도 있다.
도 5a 및 5b는 본 발명의 다양한 실시예에 의한 전자 장치의 제어 방법의 흐름도를 도시한다.
우선, 도 5a를 참조하면, 510 동작에서 전자 장치(101)는 CDI로부터 출력된 데이터의 가상 주소를 확인할 수 있다. 상술한 바와 같이, CDI로부터 출력된 데이터는 가상 주소를 포함할 수 있으며, 전자 장치(101)는 데이터의 가상 주소를 확인할 수 있다. 아울러, 본 발명의 다양한 실시예에서 가상 주소는 가상 페이지 넘버 및 페이지 오프셋을 포함할 수도 있으며, 전자 장치(101)는 가상 페이지 넘버 및 페이지 오프셋을 확인할 수 있다.
520 동작에서, 전자 장치(101)는 확인된 가상 주소가 악성 코드 검사가 필요한 가상 주소인지 여부를 판단할 수 있다. 상술한 바와 같이, 전자 장치는 악성 코드 검사가 필요하지 않은 가상 주소 및 악성 코드 검사가 필요한 참고용 가상 주소를 미리 설정할 수 있다. 본 발명의 다양한 실시예에서, 전자 장치(101)는 하나 또는 이상의 참고용 가상 주소를 미리 설정할 수 있다. 전자 장치(101)는 확인된 가상 주소가 악성 코드 검사가 필요한 가상 주소인지 여부를, 미리 설정한 참고용 가상 주소와의 비교를 통하여 판단할 수 있다.
데이터의 가상 주소가 이용이 악성 코드 검사가 필요한 가상 주소인 경우에는, 530 동작에서 전자 장치(101)는 해당 데이터에 대한 악성 코드 여부를 판단할 수 있다. 예를 들어, 전자 장치(101)는 악성 코드 검사가 필요한 가상 주소를 가진 데이터를 악성 코드에 의한 데이터로 바로 판단할 수 있다. 또는, 전자 장치(101)는 악성 코드 검사가 필요한 가상 주소를 가진 데이터에 대한 추가적인 악성 코드 판단 알고리즘을 적용하고, 적용 결과에 기초하여 악성 코드 실행 여부를 판단할 수도 있다.
도 5b는 본 발명의 다양한 실시예에 따른 전자 장치의 제어 방법의 흐름도를 도시한다.
510 동작에서 전자 장치(101)는 CDI로부터 출력된 데이터의 가상 주소를 확인할 수 있다. 520 동작에서, 전자 장치(101)는 확인된 가상 주소가 악성 코드 검사가 필요한 가상 주소인지 여부를 판단할 수 있다. 상술한 바와 같이, 전자 장치는 악성 코드 검사가 필요하지 않은 가상 주소 및 악성 코드 검사가 필요한 참고용 가상 주소를 미리 설정할 수 있다. 본 발명의 다양한 실시예에서, 전자 장치(101)는 하나 또는 이상의 참고용 가상 주소를 미리 설정할 수 있다. 전자 장치(101)는 확인된 가상 주소가 악성 코드 검사가 필요한 가상 주소인지 여부를, 미리 설정한 참고용 가상 주소와의 비교를 통하여 판단할 수 있다.
540 동작에서, 전자 장치(101)는 해당 데이터의 가상 주소를 물리 주소로 변환할 수 있다. 전자 장치(101)는 다양한 방식으로 가상 주소를 물리 주소로 변환할 수 있으며, 변환 방식에는 제한이 없음을 당업자는 용이하게 이해할 수 있을 것이다.
550 동작에서, 전자 장치(101)는 물리 주소를 기반으로 악성 코드 여부를 판단할 수 있다. 전자 장치(101)는 변환된 물리 주소가 악성 코드 검사가 필요한 물리 주소인지 여부에 따라 악성 코드 실행 여부를 판단할 수 있다. 또는, 전자 장치(101)는 변환된 물리 주소에 추가적인 악성 코드 판단 알고리즘을 적용할 수 있으며, 적용 결과에 기초하여 악성 코드 실행 여부를 판단할 수 있다.
상술한 바와 같이, 전자 장치(101)는 가상 주소를 이용하거나 또는 물리 주소를 이용하여 악성 코드 실행 여부를 판단할 수 있다. 또는, 전자 장치(101)는 가상 주소 및 물리 주소를 함께 이용하여 악성 코드 실행 여부를 판단할 수도 있다.
도 6은 본 발명의 다양한 실시예에 의한 주소 변환 과정을 설명하기 위한 블록도를 도시한다.
본 발명의 다양한 실시예에 의한 주소 변환 모듈(430)은 매핑 테이블(431)을 저장할 수 있다. 여기에서, 매핑 테이블(431)은 가상 주소와 물리 주소 사이의 연관 정보가 저장될 수 있다.
주소 변환 모듈(430)은 입력된 가상 주소를 매핑 테이블(431)을 참조하여 물리 주소로 변환할 수 있다. 매핑 테이블(431)은 다양한 주소 변환 알고리즘의 입력 및 출력 결과를 미리 저장할 수 있으며, 이에 따라 전자 장치(101)는 별다른 알고리즘 적용 없이 신속하게 주소 변환을 수행할 수 있다.
또 다른 실시예에서, 주소 변환 모듈(430)은 주소 변환 알고리즘을 미리 저장할 수도 있다. 주소 변환 모듈(430)은 주소 변환 알고리즘을 입력된 데이터의 가상 주소에 적용함으로써, 변환된 물리 주소를 획득할 수 있다.
도 7a 및 7b는 본 발명의 다양한 실시예에 따른 전자 장치의 제어 방법의 흐름도를 도시한다. 도 7a 및 7b는 도 8a 및 8b를 각각 참조하여 더욱 상세하게 설명하도록 한다. 도 8a 및 8b는 본 발명의 다양한 실시에에 의한 가상 주소 필터의 블록도를 도시한다.
우선, 도 7a를 참조하면, 710 동작에서 전자 장치(101)는 호스트 시스템의 CPU의 CDI로부터 출력되는 데이터를 획득할 수 있다. 예를 들어, 도 8a와 같이, 가상 주소 필터(800)는 호스트 시스템으로부터 데이터(805)를 수신할 수 있다. 하나의 실시예에서, 가상 주소 필터(800)는 인터페이스를 통하여 호스트 시스템으로부터 데이터(805)를 수신할 수 있다.
720 동작에서, 전자 장치(101)는 데이터의 가상 주소가 미리 설정된 적어도 하나의 주소에 대응되는지 필터링할 수 있다. 도 8a에 도시된 바와 같이, 본 발명의 다양한 실시예에 의한 가상 주소 필터(800)는 XOR 게이트(810), 적어도 하나의 레지스터(811,813,815), 적어도 하나의 필터(812,814,816) 및 출력부(817)를 포함할 수 있다.
적어도 하나의 레지스터(811,813,815) 각각에는 미리 설정된 참조용 가상 주소가 저장될 수 있다. 적어도 하나의 필터(812,814,816)는 데이터(805)의 주소가 레지스터(811,813,815)에 저장된 참조용 가상 주소와 동일한지 비교할 수 있다. 예를 들어, 제 1 레지스터(811)에는 "0xC0004321"의 참조용 가상 주소가 저장될 수 있다. 해당 참조용 가상 주소는, 악성 코드 검사가 필요한 영역, 예를 들어 커널의 코드 영역 등에 대응하는 가상 주소일 수 있다. 제 1 필터(812)는 제 1 레지스터(811)에 저장된 참조용 가상 주소를 데이터(805)의 가상 주소와 비교할 수 있다. 제 1 필터(812)는 비교 결과가 동일한 경우에는 "1"의 출력값을 출력할 수 있으며, 비교 결과가 상이한 경우에는 "0"의 출력값을 출력할 수 있다. 예를 들어, 데이터(805)의 가상 주소가 "0xC0004321"라면, 제 1 필터(812)는 "1"의 출력값을 출력할 수 있다. 한편, 본 발명의 다양한 실시예에서, "0xC0004321" 가상 주소에서의 "0xC0004"는 가상 페이지 넘버일 수 있으며, "321"는 페이지 오프셋일 수 있다. 본 발명의 다양한 실시예에서, 주소 변환 모듈은 페이지 오프셋 기반의 주소 변환을 수행할 수 있다. 이 경우에는, 필터(812,814,816)는 페이지 오프셋을 기준으로 비교 및 필터링을 수행할 수도 있다.
XOR 게이트(810)는 적어도 하나의 필터(812,814,816)로부터의 값을 입력받아, XOR 연산 후 출력값을 출력할 수 있다. 예를 들어, 데이터(805)의 가상 주소가 적어도 하나의 레지스터(811,813,815) 중 하나에 저장된 가상 주소와 동일한 경우에는, XOR 게이트(810)의 입력값에 "1"이 포함될 수 있으며, 이 경우 XOR 게이트(810)는 "1"의 출력값을 출력할 수 있다.
출력부(817)는 XOR 게이트(810)로부터의 출력값에 기초하여 데이터(805)를 출력(820)하여 악성 코드 실행 여부를 더 판단할지를 결정할 수 있다. 예를 들어, 상술한 바와 같이, 데이터(805)의 가상 주소가 적어도 하나의 레지스터(811,813,815) 중 하나에 저장된 가상 주소와 동일한 경우에는, XOR 게이트(810)의 출력값이 "1"일 수 있다. 출력부(817)는 XOR 게이트(810)의 출력값이 "1"인 경우에는 데이터(805)를 악성 코드 실행 여부 판단을 위하여 출력(820)할 수 있다. 출력부(817)는 XOR 게이트(810)의 출력값이 "0"인 경우에는 데이터(805)를 필터링할 수 있다. 출력부(817)는 주소 변환 모듈 또는 악성 코드 판별기로 데이터(805)를 출력(820)할 수 있다.
도 7b를 참조하면, 710 동작에서 전자 장치(101)는 호스트 시스템의 CPU의 CDI로부터 출력되는 데이터를 획득할 수 있다. 예를 들어, 도 8a와 같이, 가상 주소 필터(800)는 호스트 시스템으로부터 데이터(805)를 수신할 수 있다. 하나의 실시예에서, 가상 주소 필터(800)는 인터페이스를 통하여 호스트 시스템으로부터 데이터(805)를 수신할 수 있다.
740 동작에서, 전자 장치(101)는 데이터의 가상 주소가 미리 설정된 범위에 속하는지 여부에 기초하여 필터링을 수행할 수 있다. 도 8b에 도시된 바와 같이, 본 발명의 다양한 실시예에 의한 가상 주소 필터(850)는 XOR 게이트(851), 적어도 하나의 레지스터(852,854), 적어도 하나의 필터(853,855) 및 출력부(856)를 포함할 수 있다.
적어도 하나의 레지스터(852,854) 각각에는 미리 설정된 참조용 가상 주소의 범위가 저장될 수 있다. 적어도 하나의 필터(853,855)는 데이터(805)의 주소가 레지스터(852,854)에 저장된 참조용 가상 주소의 범위에 속하는지 여부를 비교할 수 있다.
예를 들어, 제 1 레지스터(852)에는 "0x200" 내지 "0x300"의 참조용 가상 주소의 범위가 저장될 수 있다. 상술한 바와 같이, 본원 발명의 다양한 실시예에서, 필터(853,855)는 가상 주소 중 페이지 오프셋 기반의 비교 및 필터링을 수행할 수 있으며, 이 경우에는 레지스터(852,854)에도 참조용 가상 주소의 범위 중 페이지 오프셋의 범위가 저장될 수 있다. 해당 참조용 가상 주소의 범위는, 악성 코드 검사가 필요한 영역, 예를 들어 커널의 코드 영역 등에 대응하는 가상 주소의 범위일 수 있다. 제 1 필터(853)는 제 1 레지스터(852)에 저장된 참조용 가상 주소의 범위에 데이터(805)의 가상 주소가 속하는지 비교할 수 있다. 제 1 필터(853)는 비교 결과가 동일한 경우에는 "1"의 출력값을 출력할 수 있으며, 비교 결과가 상이한 경우에는 "0"의 출력값을 출력할 수 있다. 예를 들어, 데이터(805)의 가상 주소가 "0xC0080200"라면, 제 1 필터(853)는 "1"의 출력값을 출력할 수 있다. 또는, 데이터(805)의 가상 주소가 "0xC0004324"라면, 제 1 필터(853)는 "0"의 출력값을 출력할 수 있다.
XOR 게이트(851)는 적어도 하나의 필터(853,855)로부터의 값을 입력받아, XOR 연산 후 출력값을 출력할 수 있다. 예를 들어, 데이터(805)의 가상 주소가 적어도 하나의 레지스터(852,584) 중 하나에 저장된 범위에 속하는 경우에는, XOR 게이트(851)의 입력값에 "1"이 포함될 수 있으며, 이 경우 XOR 게이트(851)는 "1"의 출력값을 출력할 수 있다.
출력부(856)는 XOR 게이트(851)로부터의 출력값에 기초하여 데이터(805)를 출력(820)하여 악성 코드 실행 여부를 더 판단할지를 결정할 수 있다. 예를 들어, 상술한 바와 같이, 데이터(805)의 가상 주소가 적어도 하나의 레지스터(852,854)에 저장된 범위에 속하는 경우에는, XOR 게이트(851)의 출력값이 "1"일 수 있다. 출력부(856)는 XOR 게이트(851)의 출력값이 "1"인 경우에는 데이터(805)를 악성 코드 실행 여부 판단을 위하여 출력(870)할 수 있다. 출력부(856)는 XOR 게이트(851)의 출력값이 "0"인 경우에는 데이터(805)를 필터링할 수 있다. 출력부(856)는 주소 변환 모듈 또는 악성 코드 판별기로 데이터(805)를 출력(870)할 수 있다.
도 9는 본 발명의 다양한 실시예에 의한 전자 장치의 제어 방법의 흐름도를 도시한다.
910 동작에서, 전자 장치(101)는 호스트 시스템의 CPU의 CDI로부터의 데이터의 코드를 확인할 수 있다. 상술한 바와 같이, CDI로부터의 데이터는 가상 주소, 코드 및 콘텍스트 ID 중 적어도 하나를 포함할 수 있으며, 전자 장치(101)는 데이터의 코드를 확인할 수 있다.
920 동작에서, 전자 장치(101)는 확인된 코드가 악성 코드 검사가 필요한 코드인지 여부를 판단할 수 있다. 전자 장치(101)는 악성 코드 검사가 필요한 참조용 코드를 미리 저장할 수 있다. 예를 들어, 전자 장치(101)는 악성 코드 검사가 필요한 참조용 코드를 직접 저장하여 관리하거나 또는 악성 코드 검사가 필요한 참조용 코드의 종류 또는 악성 코드 검사가 필요한 참조용 코드에 대응하는 하드웨어의 참조용 물리 주소를 미리 저장하여 관리할 수 있다.
본 발명의 다양한 실시예에서, 전자 장치(101)는 CDI로부터 출력된 데이터의 코드가 미리 저장된 코드에 대응되는지 여부를 판단할 수 있다. 예를 들어, 전자 장치(101)는 CDI로부터 출력된 데이터의 코드가 미리 저장된 참조용 코드와 동일한지 여부를 판단할 수 있다. 또는, 전자 장치(101)는 CDI로부터 출력된 데이터의 코드의 종류가 미리 저장된 참조용 코드의 종류와 동일한지 여부를 판단할 수 있다. 또는, 전자 장치(101)는 CDI로부터 출력된 데이터의 코드에 대응하는 물리 주소가 미리 저장된 참조용 코드의 참조용 물리 주소와 동일한지 여부를 판단할 수 있다.
930 동작에서, 전자 장치(101)는 악성 코드 검사가 필요한 것으로 판단된 데이터에 대한 악성 코드 여부를 판단할 수 있다. 본 발명의 다양한 실시예에서, 전자 장치(101)는 악성 코드 검사가 필요한 것으로 판단된 데이터를 악성 코드에 의한 데이터로 판단할 수 있다. 또는, 전자 장치(101)는 악성 코드 검사가 필요한 것으로 판단된 데이터에 대하여 추가적인 악성 코드 판단 알고리즘을 적용하고, 적용 결과에 기초하여 악성 코드 실행 여부를 판단할 수도 있다.
도 10a 및 10b는 본 발명의 다양한 실시예에 의한 전자 장치의 블록도를 도시한다.
도 10a를 우선 참조하면, 본 발명의 다양한 실시예에 의한 전자 장치(1000)는 인터페이스(1005), 코드 필터(410), 버퍼(1020) 및 주소 변환 모듈(1030)을 포함할 수 있다.
인터페이스(1005)는 호스트 시스템의 CPU의 CDI에 연결될 수 있다. 인터페이스(1005)는 물리적 또는 논리적으로 호스트 시스템의 CPU의 CDI에 연결될 수 있으며, CDI로부터 출력되는 데이터를 수신할 수 있다. 인터페이스(1005)는 CDI로부터 출력되는 데이터를 코드 필터(1010)로 출력할 수 있다. 인터페이스(1005)는 구현에 따라서 코드 필터(1010)와 별도의 모듈로 구현될 수 있으며, 또는 코드 필터(1010)의 일부로 구현될 수도 있다.
코드 필터(1010)는 인터페이스(1005)를 통하여 호스트 시스템의 CPU의 CDI로부터의 데이터를 획득할 수 있다. 상술한 바와 같이, 데이터는 가상 주소, 코드 및 콘텍스트 ID 중 적어도 하나를 포함할 수 있다. 가상 주소는, 구현에 따라 논리적 주소로 명명될 수도 있다. 코드 필터(1010)는 획득된 데이터의 코드를 이용하여, 데이터를 필터링할 수 있다.
본 발명의 다양한 실시예에서, 코드 필터(1010)는 수신된 데이터 중 악성 코드 검사가 필요하지 않은 코드를 가진 데이터를 필터링하고, 악성 코드 검사가 필요한 코드를 가진 데이터를 출력할 수 있다. 예를 들어, 코드 필터(1010)는 악성 코드 검사가 필요 여부를 판별하기 위한 참조용 코드와 관련된 정보를 미리 설정할 수 있다.
코드 필터(1010)는 CDI로부터 출력된 데이터의 코드가 미리 저장된 코드에 대응되는지 여부를 판단할 수 있다. 예를 들어, 코드 필터(1010)는 CDI로부터 출력된 데이터의 코드가 미리 저장된 참조용 코드와 동일한지 여부를 판단할 수 있다. 또는, 코드 필터(1010)는 CDI로부터 출력된 데이터의 코드의 종류가 미리 저장된 참조용 코드의 종류와 동일한지 여부를 판단할 수 있다. 또는, 코드 필터(1010)는 CDI로부터 출력된 데이터의 코드에 대응하는 물리 주소가 미리 저장된 참조용 코드의 참조용 물리 주소와 동일한지 여부를 판단할 수 있다. 코드 필터(1010)는 상술한 과정을 통하여 악성 코드 검사가 필요한 코드를 가지는 데이터를 버퍼(1020)로 출력할 수 있다.
버퍼(1020)는 코드 필터(1010)로부터 출력된 데이터를 버퍼링하여 주소 변환 모듈(1030)로 출력할 수 있다. 본 발명의 다양한 실시예에서, 버퍼(1020)는 FIFO(first in first out) 큐잉 방식으로 데이터를 출력할 수 있다. 다만, 큐잉 방식에는 제한이 없음을 당업자는 용이하게 이해할 수 있을 것이다. 버퍼(1020)의 이전에서는 CPU 클럭 속도로 프로세스가 진행될 수 있으며, 버퍼(1020)의 이후에서는 버스 클럭 속도로 프로세스가 진행될 수 있다. 이에 따라, 클럭 속도에 의한 오버페이스가 발생하지 않도록 버퍼(1020)는 입력된 데이터를 출력할 수 있다.
주소 변환 모듈(1030)은 버퍼(1020)로부터 입력되는 데이터의 가상 주소를 물리 주소로 변환할 수 있다. 주소 변환 모듈(1030)은 물리 주소로 변환한 데이터를 출력할 수 있다. 본 발명의 다양한 실시예에서, 추가적인 모니터링 장치가 주소 변환 모듈(1030)로부터 물리 주소로 변환한 데이터를 입력받아, 물리 주소를 이용하여 악성 코드 실행 여부를 판단할 수 있다. 다른 실시예에서는, 도시되지는 않았지만, 전자 장치(1000)는 악성 코드 판별기(미도시)를 더 포함할 수 있으며, 물리 주소로 변환한 데이터를 주소 변환 모듈(430)로부터 입력받을 수도 있다. 악성 코드 판별기(미도시)는 변환된 데이터의 물리 주소를 이용하여 악성 코드 실행 여부를 판단할 수 있다.
도 10b는 본 발명의 다양한 실시예에 따른 전자 장치의 블록도를 도시한다.
도 10b의 실시예는 도 10a의 실시예와는 대조적으로, 전자 장치(1000)는 악성 코드 판별기(1040)를 포함할 수 있다. 본 발명의 다양한 실시예에서, 버퍼(1020)는 코드 필터(1010)로부터 출력된 데이터를 버퍼링하여 악성 코드 판별기(1040)로 출력할 수 있다.
악성 코드 판별기(1040)는 수신된 데이터를 이용하여 악성 코드 실행 여부를 판단할 수 있다. 즉, 본 발명의 다양한 실시예에 의한 전자 장치(1000)는 물리 주소로의 주소 변환 없이, 악성 코드 실행 여부를 판단할 수 있다. 하나의 실시예에서, 악성 코드 판별기(1040)는 코드 필터(1010)로부터 출력된 데이터의 코드를 이용하여 악성 코드 실행 여부를 판단할 수 있다. 상술한 바와 같이, 코드 필터(1010)는 미리 설정한 참조용 코드의 정보에 대응하는 코드를 가지는 데이터를 출력할 수 있다.
예를 들어, 코드 필터(1010)는 CDI로부터 출력된 데이터의 코드가 미리 저장된 참조용 코드와 동일한지 여부를 판단할 수 있다. 또는, 코드 필터(1010)는 CDI로부터 출력된 데이터의 코드의 종류가 미리 저장된 참조용 코드의 종류와 동일한지 여부를 판단할 수 있다. 또는, 코드 필터(1010)는 CDI로부터 출력된 데이터의 코드에 대응하는 물리 주소가 미리 저장된 참조용 코드의 참조용 물리 주소와 동일한지 여부를 판단할 수 있다. 코드 필터(1010)는 상술한 과정을 통하여 악성 코드 검사가 필요한 코드를 가지는 데이터를 버퍼(1020)로 출력할 수 있다. 예를 들어, 악성 코드 판별기(1040)는 코드 필터(1010)로부터 출력된 데이터를 악성 코드에 의한 데이터로 판단할 수 있다. 또는, 악성 코드 판별기(1040)는 코드 필터(1010)로부터 출력된 데이터에 대하여 추가적인 판단 알고리즘을 적용할 수도 있으며, 적용 결과에 기초하여 악성 코드 실행 여부를 판단할 수도 있다.
상기 전자 장치의 전술한 구성요소들 각각은 하나 또는 그 이상의 부품(component)으로 구성될 수 있으며, 해당 구성 요소의 명칭은 전자 장치의 종류에 따라서 달라질 수 있다. 다양한 실시예에서, 전자 장치는 전술한 구성요소 중 적어도 하나를 포함하여 구성될 수 있으며, 일부 구성요소가 생략되거나 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 또한, 다양한 실시예에 따른 전자 장치의 구성 요소들 중 일부가 결합되어 하나의 개체(entity)로 구성됨으로써, 결합되기 이전의 해당 구성 요소들의 기능을 동일하게 수행할 수 있다.
본 문서에서 사용된 용어 “모듈”은, 예를 들면, 하드웨어, 소프트웨어 또는 펌웨어(firmware) 중 하나 또는 둘 이상의 조합을 포함하는 단위(unit)를 의미할 수 있다. “모듈”은, 예를 들면, 유닛(unit), 로직(logic), 논리 블록(logical block), 부품(component), 또는 회로(circuit) 등의 용어와 바꾸어 사용(interchangeably use)될 수 있다. “모듈”은, 일체로 구성된 부품의 최소 단위 또는 그 일부가 될 수 있다. “모듈”은 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수도 있다. “모듈”은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들면,“모듈”은, 알려졌거나 앞으로 개발될, 어떤 동작들을 수행하는 ASIC(application-specific integrated circuit) 칩, FPGAs(field-programmable gate arrays) 또는 프로그램 가능 논리 장치(programmable-logic device) 중 적어도 하나를 포함할 수 있다.
다양한 실시예에 따른 장치(예: 모듈들 또는 그 기능들) 또는 방법(예: 동작들)의 적어도 일부는, 예컨대, 프로그램 모듈의 형태로 컴퓨터로 읽을 수 있는 저장매체(computer-readable storage media)에 저장된 명령어로 구현될 수 있다. 상기 명령어는, 프로세서에 의해 실행될 경우, 상기 하나 이상의 프로세서가 상기 명령어에 해당하는 기능을 수행할 수 있다. 컴퓨터로 읽을 수 있는 저장매체는, 예를 들면, 메모리가 될 수 있다.
상기 컴퓨터로 판독 가능한 기록 매체는, 하드디스크, 플로피디스크, 마그네틱 매체(magnetic media)(예: 자기테이프), 광기록 매체(optical media)(예: CD-ROM(compact disc read only memory), DVD(digital versatile disc), 자기-광 매체(magneto-optical media)(예: 플롭티컬 디스크(floptical disk)), 하드웨어 장치(예: ROM(read only memory), RAM(random access memory), 또는 플래시 메모리 등) 등을 포함할 수 있다. 또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다. 상술한 하드웨어 장치는 다양한 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지다.
다양한 실시예에 따른 모듈 또는 프로그램 모듈은 전술한 구성요소들 중 적어도 하나 이상을 포함하거나, 일부가 생략되거나, 또는 추가적인 다른 구성요소를 더 포함할 수 있다. 다양한 실시예에 따른 모듈, 프로그램 모듈 또는 다른 구성요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱(heuristic)한 방법으로 실행될 수 있다. 또한, 일부 동작은 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
본 발명의 다양한 실시예에 따르면, 명령들을 저장하고 있는 저장 매체에 있어서, 상기 명령들은 적어도 하나의 프로세서에 의하여 실행될 때에 상기 적어도 하나의 프로세서로 하여금 적어도 하나의 동작을 수행하도록 설정된 것으로서, 상기 적어도 하나의 동작은, 호스트 시스템의 CPU(central processing unit)의 CDI(Core debug interface)로부터 출력되는 제 1 데이터를 획득하는 동작; 및 상기 제 1 데이터를 이용하여 악성 코드 실행 여부를 판단하는 동작을 포함할 수 있다.
그리고 본 문서에 개시된 실시예는 개시된, 기술 내용의 설명 및 이해를 위해 제시된 것이며, 본 개시의 범위를 한정하는 것은 아니다. 따라서, 본 개시의 범위는, 본 개시의 기술적 사상에 근거한 모든 변경 또는 다양한 다른 실시예를 포함하는 것으로 해석되어야 한다.
Claims (20)
- 전자 장치의 제어 방법에 있어서,
호스트 시스템의 CPU(central processing unit)의 CDI(Core debug interface)로부터 출력되는 제 1 데이터의 가상 주소를 획득하는 동작;
상기 제 1 데이터의 가상 주소가, 이용이 허용되지 않은 커널의 코드 영역에 대응하는 적어도 하나의 참조용 가상 주소에 대응하는지 여부를 확인하는 동작;
상기 제 1 데이터의 가상 주소가 상기 적어도 하나의 참조용 가상 주소에 대응하는 것으로 확인된 경우, 상기 제 1 데이터의 가상 주소를 물리 주소로 변환하는 동작; 및
상기 변환된 물리 주소가 악성 코드 검사가 필요한 주소인지 여부에 기초하여 상기 제 1 데이터가 악성 코드인지 여부를 결정하는 동작
을 포함하는 전자 장치의 제어 방법. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 제 1 항에 있어서,
상기 제 1 데이터의 가상 주소를 상기 물리 주소로 변환하는 동작은,
상기 제 1 데이터의 가상 주소를 FIFO(first in first out) 큐잉 방식으로, 상기 물리 주소로 변환하는 전자 장치의 제어 방법. - 제 1 항에 있어서,
상기 제 1 데이터의 코드가 이용 가능한 것으로 설정된 코드인지 여부에 기초하여 상기 제 1 데이터가 악성 코드인지 여부를 결정하는 동작을 더 포함하는 전자 장치의 제어 방법. - 모니터링 대상인 호스트 시스템의 CPU(central processing unit)의 CDI(Core debug interface)에 연결되어, 상기 CPU의 상기 CDI로부터 출력되는 제 1 데이터의 가상 주소를 획득하는 인터페이스;
상기 제 1 데이터의 가상 주소가, 이용이 허용되지 않은 커널의 코드 영역에 대응하는 적어도 하나의 참조용 가상 주소에 대응하는지 여부를 확인하는 가상 주소 필터;
상기 제 1 데이터의 가상 주소가 상기 적어도 하나의 참조용 가상 주소에 대응하는 것으로 확인된 경우, 상기 제 1 데이터의 가상 주소를 물리 주소로 변환하는 주소 변환 모듈; 및
상기 변환된 물리 주소가 악성 코드 검사가 필요한 주소인지 여부에 기초하여 상기 제 1 데이터가 악성 코드인지 여부를 결정하는 악성 코드 판별기를 포함하는 전자 장치. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 제 11 항에 있어서,
상기 가상 주소 필터로부터의 제 1 데이터를 FIFO(first in first out) 큐잉 방식으로, 상기 주소 변환 모듈로 출력하는 버퍼
를 더 포함하는 전자 장치. - 제 11 항에 있어서,
상기 악성 코드 판별기는,
상기 제 1 데이터의 코드가 이용 가능한 것으로 설정된 코드인지 여부에 기초하여 상기 제 1 데이터가 악성 코드인지 여부를 결정하는 전자 장치.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150031674A KR102355760B1 (ko) | 2015-03-06 | 2015-03-06 | 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150031674A KR102355760B1 (ko) | 2015-03-06 | 2015-03-06 | 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160107985A KR20160107985A (ko) | 2016-09-19 |
KR102355760B1 true KR102355760B1 (ko) | 2022-01-26 |
Family
ID=57103492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150031674A KR102355760B1 (ko) | 2015-03-06 | 2015-03-06 | 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102355760B1 (ko) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004171565A (ja) * | 2002-11-18 | 2004-06-17 | Arm Ltd | マルチドメインプロセッサのための診断データ捕捉制御 |
KR101265173B1 (ko) * | 2012-05-11 | 2013-05-15 | 주식회사 안랩 | 비실행 파일 검사 장치 및 방법 |
-
2015
- 2015-03-06 KR KR1020150031674A patent/KR102355760B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004171565A (ja) * | 2002-11-18 | 2004-06-17 | Arm Ltd | マルチドメインプロセッサのための診断データ捕捉制御 |
KR101265173B1 (ko) * | 2012-05-11 | 2013-05-15 | 주식회사 안랩 | 비실행 파일 검사 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR20160107985A (ko) | 2016-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190347559A1 (en) | Input processing method using neural network computation, and apparatus therefor | |
US10979901B2 (en) | Electronic device and method for processing data in electronic device | |
KR102456598B1 (ko) | 전자 장치 및 그의 동작 방법 | |
KR102294118B1 (ko) | 보안 연결 장치 및 방법 | |
US20180152454A1 (en) | Method and apparatus for managing program of electronic device | |
CN106357599B (zh) | 电子设备、认证代理服务器和支付系统 | |
KR102297383B1 (ko) | 보안 데이터 처리 | |
KR102294359B1 (ko) | 전자 장치 및 전자 장치에서 알림을 제어하는 방법 | |
KR20150059564A (ko) | 전자 장치의 무결성 검증을 위한 방법, 저장 매체 및 전자 장치 | |
US20160092022A1 (en) | Method for reducing ghost touch and electronic device thereof | |
US20150242622A1 (en) | Method and apparatus to sandbox run-time android applications with lightweight container | |
KR102337990B1 (ko) | 권한 설정 토큰을 이용하는 전자 장치 | |
US11423168B2 (en) | Electronic apparatus and method of transforming content thereof | |
KR20170050702A (ko) | 제스처 감지 방법 및 이를 지원하는 전자 장치 | |
US10416720B2 (en) | Electronic device comprising transparent display and method for controlling transparent display thereof | |
US20170330170A1 (en) | Payment system, electronic device and payment method thereof | |
KR102561108B1 (ko) | 전자 장치 및 전자 장치의 디스플레이 방법 | |
US20170295174A1 (en) | Electronic device, server, and method for authenticating biometric information | |
KR102416071B1 (ko) | 전자장치 및 전자장치의 어플리케이션 실행 방법 | |
US10664578B2 (en) | Security information inputting/outputting method and electronic device adapted to the method | |
KR102208696B1 (ko) | 센서 데이터 획득 방법 및 그 장치 | |
US10482237B2 (en) | Method for processing security of application and electronic device supporting the same | |
KR102376962B1 (ko) | 서버, 전자 장치 및 전자 장치에서 이미지를 처리하는 방법 | |
KR102355760B1 (ko) | 악성 코드 실행 여부를 판단하는 전자 장치 및 그 제어 방법 | |
KR102365532B1 (ko) | 보안 기능 수행 방법 및 이를 지원하는 전자 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |