KR20230004133A - 펌웨어 메모리 맵 정보 추출 장치 및 방법 - Google Patents
펌웨어 메모리 맵 정보 추출 장치 및 방법 Download PDFInfo
- Publication number
- KR20230004133A KR20230004133A KR1020210086011A KR20210086011A KR20230004133A KR 20230004133 A KR20230004133 A KR 20230004133A KR 1020210086011 A KR1020210086011 A KR 1020210086011A KR 20210086011 A KR20210086011 A KR 20210086011A KR 20230004133 A KR20230004133 A KR 20230004133A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- data
- memory map
- firmware
- map information
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000000605 extraction Methods 0.000 claims abstract description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 3
- 238000012407 engineering method Methods 0.000 description 2
- 238000012038 vulnerability analysis Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- 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/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
펌웨어 메모리 맵 정보 추출 장치 및 방법이 개시된다. 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 장치는 하나 이상의 프로세서; 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은 펌웨어에서 메모리 관련 데이터를 검색하고, 상기 메모리 관련 데이터로부터 바이너리 코드를 분석하여 데이터 구조를 설정하고, 상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색한다.
Description
본 발명은 펌웨어 역공학 분석 기술에 관한 것으로, 보다 상세하게는 펌웨어 메모리 맵 정보 추출 기술에 관한 것이다.
제어가 필요한 시스템에서 특정 기능을 수행하도록 특화된 임베디드 보드 사용이 더욱 일반화되고 있다. 임베디드 보드는 보드 구동을 위하여 펌웨어 소프트웨어를 탑재한다. 보통 이러한 펌웨어는 복잡한 운영 체제를 포함하지 않는 경우가 많아 보안에 취약할 수 있지만, 보드의 소스 코드는 제공하지 않는 경우가 대부분이므로 바이너리 코드 분석을 통하여 보안 취약점 분석이 수행되어야 한다. 펌웨어의 메모리 맵 관련 정보는 이러한 분석의 시작점에서 매우 필요한 데이터이지만 이러한 정보도 제공되지 않는 경우가 대부분이다. 이러한 경우 메모리 맵 관련 정보 추출을 바이너리 코드 분석을 통하여 수행하여야 한다. 또한 대부분의 펌웨어들이 각자의 방식으로 구현되는 관계로 대상 시스템이 바뀌면 별도의 분석 작업이 수행되어야 하는 어려움이 있다.
한편, 한국등록특허 제 10-1995176 호“프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템”는 프로그램 실행 컨텍스트를 모두 저장하고 저장한 컨텍스트를 효율적으로 분석하는 프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템 에 관하여 개시하고 있다.
본 발명은 펌웨어에서 메모리 맵 관련 정보를 수월하게 추출하는 것을 목적으로 한다.
또한, 본 발명은 펌웨어 보안의 취약점 분석을 제공하는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 장치는 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은 펌웨어에서 메모리 관련 데이터를 검색하고, 상기 메모리 관련 데이터로부터 바이너리 코드를 분석하여 데이터 구조를 설정하고, 상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 메모리 관련 검색 결과로 출력할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 메모리 관련 검색 결과로 상기 주소를 참조하는 참조 주소 값을 더 출력할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 메모리 관련 검색 결과로부터 분석된 구조체를 이용하여 메모리 맵 구조체 검색에 이용할 데이터 구조를 정의할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 데이터 구조를 정의된 시작 주소와 끝 주소 사이의 바이너리 데이터를 이용하여 상기 메모리 맵 구조체를 검색할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 데이터 이름(Name)을 기반으로 검색된 비구조체 데이터에서 네임 어드레스 주변에 존재하는 주소들을 출력할 수 있다.
또한, 상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법은 펌웨어 메모리 맵 정보 추출 장치의 펌웨어 메모리 맵 정보 추출 방법에 있어서, 펌웨어에서 메모리 관련 데이터를 검색하는 단계; 상기 메모리 관련 데이터로부터 바이너리 코드를 분석하여 데이터 구조를 정의하는 단계 및 상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색하는 단계를 포함한다.
이 때, 상기 메모리 관련 데이터를 검색하는 단계는 기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 메모리 관련 검색 결과로 출력할 수 있다.
이 때, 상기 메모리 관련 데이터를 검색하는 단계는 상기 메모리 관련 검색 결과로 상기 주소를 참조하는 참조 주소 값을 더 출력할 수 있다.
이 때, 상기 데이터 구조를 정의하는 단계는 상기 메모리 관련 검색 결과로부터 분석된 구조체를 이용하여 메모리 맵 구조체 검색에 이용할 데이터 구조를 정의할 수 있다.
이 때, 상기 메모리 맵 구조체를 검색하는 단계는 상기 데이터 구조를 정의된 시작 주소와 끝 주소 사이의 바이너리 데이터를 이용하여 상기 메모리 맵 구조체를 검색할 수 있다.
이 때, 상기 메모리 관련 데이터를 검색하는 단계는 상기 데이터 이름(Name)을 기반으로 검색된 비구조체 데이터에서 네임 어드레스 주변에 존재하는 주소들을 출력할 수 있다.
본 발명은 펌웨어에서 메모리 맵 관련 정보를 수월하게 추출할 수 있다.
또한, 본 발명은 펌웨어 보안의 취약점 분석을 제공할 수 있다.
도 1 및 도 2는 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법을 나타낸 동작흐름도이다.
도 3은 도 2에 도시된 메모리 관련 검색 단계의 일 예를 세부적으로 나타낸 동작흐름도이다.
도 4는 본 발명의 일실시예에 따른 검색어 DB에 사전에 정의된 메모리 맵 관련 검색어들을 나타낸 도면이다.
도 5는 본 발명의 일실시예에 따른 메모리 관련 데이터의 검색 결과를 나타낸 도면이다.
도 6은 본 발명의 일실시예에 따른 분석된 구조체와 데이터 구조를 나타낸 도면이다.
도 7은 본 발명의 일실시예에 따른 비구조체 메모리 맵 데이터 검색 과정을 나타낸 동작흐름도이다.
도 8은 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 도면이다.
도 3은 도 2에 도시된 메모리 관련 검색 단계의 일 예를 세부적으로 나타낸 동작흐름도이다.
도 4는 본 발명의 일실시예에 따른 검색어 DB에 사전에 정의된 메모리 맵 관련 검색어들을 나타낸 도면이다.
도 5는 본 발명의 일실시예에 따른 메모리 관련 데이터의 검색 결과를 나타낸 도면이다.
도 6은 본 발명의 일실시예에 따른 분석된 구조체와 데이터 구조를 나타낸 도면이다.
도 7은 본 발명의 일실시예에 따른 비구조체 메모리 맵 데이터 검색 과정을 나타낸 동작흐름도이다.
도 8은 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 도면이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1 및 도 2는 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법을 나타낸 동작흐름도이다. 도 3은 도 2에 도시된 메모리 관련 검색 단계의 일 예를 세부적으로 나타낸 동작흐름도이다. 도 4는 본 발명의 일실시예에 따른 검색어 DB에 사전에 정의된 메모리 맵 관련 검색어들을 나타낸 도면이다. 도 5는 본 발명의 일실시예에 따른 메모리 관련 데이터의 검색 결과를 나타낸 도면이다. 도 6은 본 발명의 일실시예에 따른 분석된 구조체와 데이터 구조를 나타낸 도면이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법은 먼저 초기 데이터를 검색할 수 있다(S110).
또한, 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법은 구조체 및 비구조체 메모리 맵 데이터를 검색할 수 있다(S120).
이 때, 단계(S120)는 단계(110)의 초기 검색된 데이터를 이용하여 구조체를 가지는 메모리 맵 정보를 추출하며, 이에 해당되지 않는 정보는 비구조체 메모리 맵 데이터로 정보를 추출할 수 있다.
또한, 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법은 메모리 맵 데이터의 검색 결과를 출력할 수 있다(S130).
도 2를 참조하면, 도 1에 도시된 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법을 세부적으로 나타낸 것을 알 수 있다.
본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법은 펌웨어에서 메모리 관련 데이터를 검색할 수 있다(S210).
즉, 단계(S210)는 기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 메모리 관련 검색 결과로 출력할 수 있다.
도 3을 참조하면, 단계(S210)는 먼저 미리 정의된 검색어 데이터베이스에 접근할 수 있다(S310).
또한, 단계(S210)는 기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 검색할 수 있다(S320).
이 때, 단계(S210)는 상기 메모리 관련 검색 결과로 상기 주소를 참조하는 참조 주소 값을 더 검색할 수 있다.
특정 검색어들은 "*"를 붙여 검색어가 포함된 모든 데이터 검색에 사용될 수 있다.
또한, 단계(S210)는 검색된 데이터를 출력할 수 있다(S330).
즉, 단계(S330)는 이름(Name), 주소(addressoffset) 및 상기 주소를 참조하는 참조 주소 값을 검색 결과로 출력할 수 있다.
도 4를 참조하면, 검색어 데이터베이스에 미리 정의된 메모리 맵 관련 검색어들의 일 예를 나타낸 것을 알 수 있다.
도 5를 참조하면, 검색된 이름(Name), 주소(addressoffset) 및 상기 주소를 참조하는 참조 주소 값을 검색 결과로 출력한 일 예를 나타낸 것을 알 수 있다.
검색어 데이터베이스는 미리 많이 알려진 메모리 맵 관련 검색어들의 모음이며 사용자에 의해 검색어가 추가될 수도 있다. 이 때, 구조체 검색 결과 새로 검색된 관련 데이터들도 검색어 데이터베이스에 새로 추가될 수 있다.
또한, 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법은 코드 및 데이터를 분석할 수 있다(S220).
즉, 단계(S220)는 상기 검색된 메모리 관련 데이터로부터 바이너리 코드를 분석할 수 있다.
이 때, 단계(S220)는 IDA(Interactive DisAssembler)와 같은 바이너리 분석 툴에서 메모리 관련 데이터의 주소값 분석으로 구조체 형태를 확인할 수 있다.
구조체 형태의 메모리 관련 데이터인 메모리 맵 정보는 대부분의 펌웨어에서 데이터(data) 영역에 존재하며, 비구조체 형태의 메모리 관련 데이터는 펌웨어에서 코드 영역 내에 존재할 수 있다.
또한, 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법은 메모리 관련 데이터를 분석한 결과 구조체 형태의 데이터에 해당하는 지 확인할 수 있다(S230).
즉, 단계(S230)는 메모리 관련 데이터가 구조체 형태인 경우, 데이터 구조를 정의할 수 있고(S240), 구조체 형태가 아닌 경우 검색 데이터를 재설정할 수 있다(S260).
즉, 단계(S240)는 상기 분석된 결과로부터 데이터 구조를 정의할 수 있다.
이 때, 단계(S240)는 상기 메모리 관련 검색 결과로부터 분석된 구조체를 이용하여 메모리 맵 구조체 검색에 이용할 데이터 구조를 정의할 수 있다.
도 6을 참조하면, 이러한 분석된 구조체(10)와 이에 따른 데이터 구조(20)를 정의한 예를 나타낸 것을 알 수 있다.
분석된 구조체(10)는 ID와 name(혹은 name address), 메모리의 주소 영역 정보(low address, high address), flag 등을 포함할 수 있다. 분석 시 몇몇 명확하지 않는 데이터(unknown)가 존재할 수 있으며 구조체가 불연속적이거나 name 길이가 가변적인 경우 다음 구조체의 address가 존재할 수 있다.
데이터 구조(20)는 분석된 구조체(10)를 기반으로 검색에 사용할 데이터 구조가 정의된 것을 알 수 있다.
데이터 구조(20)는 Start address와 end address가 검색의 시작 주소와 끝 주소이며, 시작 주소와 끝 주소 사이의 바이너리 데이터에 대하여 정의된 구조체들을 나타낸 것을 알 수 있다.
즉, 단계(S250)는 상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색할 수 있다.
이 때, 단계(S250)는 상기 데이터 구조를 정의된 시작 주소와 끝 주소 사이의 바이너리 데이터를 이용하여 상기 메모리 맵 구조체를 검색할 수 있다.
이 때, 단계(S250)는 정의된 데이터 구조에 따라 하나의 바이너리에서 몇 개의 다른 형태의 구조체가 적용되기도 하며, 이러한 경우 별도의 데이터 구조로 다시 정의해서 검색을 수행할 수도 있다(S260).
이 때, 단계(S250)는 메모리 맵 구조체 검색 결과의 이름(name)은 초기 메모리 관련 검색에 사용되는 검색어 데이터베이스에 업데이트 시킬 수도 있다.
단계(S260)는 재설정된 검색 데이터를 이용하여 메모리 관련 데이터를 재검색할 수 있다(S270).
또한, 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법은 검색 결과를 출력할 수 있다(S280).
도 7은 본 발명의 일실시예에 따른 비구조체 메모리 맵 데이터 검색 과정을 나타낸 동작흐름도이다.
도 7을 참조하면, 본 발명의 일실시예에 따른 비구조체 메모리 맵 데이터 검색 과정 도 1에 도시된 단계(S120)에서 비구조체 데이터 검색 과정의 일 예를 세부적으로 나타낸 것을 알 수 있다.
먼저, 단계(S410)는 펌웨어에서 비구조체 데이터를 검색할 수 있다.
즉, 단계(S410)는 초기 검색의 이름(name) 결과를 기반으로 수행되며 구조체 메모리 맵 데이터 검색 결과에 존재하는 이름(name)은 제거하고 검색할 수 있다.
이 때, 단계(S410)는 초기 검색의 이름(name) 결과를 참조하는 어드레스 검색이 되지 않는 경우가 존재하며, 이는 동적 디버깅에서만 확인 가능할 수 있다.
즉, 단계(S420)는 참조 어드레스가 존재하는 경우 참조 어드레스를 출력할 수 있고(S430), 참조 어드레스가 존재하지 않는 경우, 네임 어드레스(name address) 주변에 존재하는 주소(address)들을 검색하여 출력할 수 있다.
이러한 주소들은 실제 보드 동작 시 검색된 데이터와 관련된 함수의 주소에 상응할 수 있다.
도 8은 본 발명의 일실시예에 따른 컴퓨터 시스템을 나타낸 도면이다.
도 8을 참조하면, 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1100)에서 구현될 수 있다. 도 8에 도시된 바와 같이, 컴퓨터 시스템(1100)은 버스(1120)를 통하여 서로 통신하는 하나 이상의 프로세서(1110), 메모리(1130), 사용자 인터페이스 입력 장치(1140), 사용자 인터페이스 출력 장치(1150) 및 스토리지(1160)를 포함할 수 있다. 또한, 컴퓨터 시스템(1100)은 네트워크(1180)에 연결되는 네트워크 인터페이스(1170)를 더 포함할 수 있다. 프로세서(1110)는 중앙 처리 장치 또는 메모리(1130)나 스토리지(1160)에 저장된 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1130) 및 스토리지(1160)는 다양한 형태의 휘발성 또는 비휘발성 저장 매체일 수 있다. 예를 들어, 메모리는 ROM(1131)이나 RAM(1132)을 포함할 수 있다.
본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 장치는 하나 이상의 프로세서(1110); 및 상기 하나 이상의 프로세서(1110)에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리(1130)를 포함하고, 상기 적어도 하나 이상의 프로그램은 펌웨어에서 메모리 관련 데이터를 검색하고, 상기 메모리 관련 데이터로부터 바이너리 코드를 분석하여 데이터 구조를 설정하고, 상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 메모리 관련 검색 결과로 출력할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 메모리 관련 검색 결과로 상기 주소를 참조하는 참조 주소 값을 더 출력할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 메모리 관련 검색 결과로부터 분석된 구조체를 이용하여 메모리 맵 구조체 검색에 이용할 데이터 구조를 정의할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 데이터 구조를 정의된 시작 주소와 끝 주소 사이의 바이너리 데이터를 이용하여 상기 메모리 맵 구조체를 검색할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 데이터 이름(Name)을 기반으로 검색된 비구조체 데이터에서 네임 어드레스 주변에 존재하는 주소들을 출력할 수 있다.
이상에서와 같이 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 장치 및 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
1100: 컴퓨터 시스템
1110: 프로세서
1120: 버스 1130: 메모리
1131: 롬 1132: 램
1140: 사용자 인터페이스 입력 장치
1150: 사용자 인터페이스 출력 장치
1160: 스토리지 1170: 네트워크 인터페이스
1180: 네트워크
1120: 버스 1130: 메모리
1131: 롬 1132: 램
1140: 사용자 인터페이스 입력 장치
1150: 사용자 인터페이스 출력 장치
1160: 스토리지 1170: 네트워크 인터페이스
1180: 네트워크
Claims (12)
- 하나 이상의 프로세서; 및
상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고,
상기 적어도 하나 이상의 프로그램은
펌웨어에서 메모리 관련 데이터를 검색하고,
상기 메모리 관련 데이터로부터 바이너리 코드를 분석하여 데이터 구조를 설정하고,
상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치. - 청구항 1에 있어서,
상기 적어도 하나 이상의 프로그램은
기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 메모리 관련 검색 결과로 출력하는 것을 특징으로 하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치. - 청구항 2에 있어서,
상기 적어도 하나 이상의 프로그램은
상기 메모리 관련 검색 결과로 상기 주소를 참조하는 참조 주소 값을 더 출력하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치. - 청구항 3에 있어서,
상기 적어도 하나 이상의 프로그램은
상기 메모리 관련 검색 결과로부터 분석된 구조체를 이용하여 메모리 맵 구조체 검색에 이용할 데이터 구조를 정의하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치. - 청구항 4에 있어서,
상기 적어도 하나 이상의 프로그램은
상기 데이터 구조를 정의된 시작 주소와 끝 주소 사이의 바이너리 데이터를 이용하여 상기 메모리 맵 구조체를 검색하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치. - 청구항 5에 있어서,
상기 적어도 하나 이상의 프로그램은
상기 데이터 이름(Name)을 기반으로 검색된 비구조체 데이터에서 네임 어드레스 주변에 존재하는 주소들을 출력하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치. - 펌웨어 메모리 맵 정보 추출 장치의 펌웨어 메모리 맵 정보 추출 방법에 있어서,
펌웨어에서 메모리 관련 데이터를 검색하는 단계;
상기 메모리 관련 데이터로부터 바이너리 코드를 분석하여 데이터 구조를 정의하는 단계; 및
상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색하는 단계;
를 포함하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법. - 청구항 7에 있어서,
상기 메모리 관련 데이터를 검색하는 단계는
기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 메모리 관련 검색 결과로 출력하는 것을 특징으로 하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법. - 청구항 8에 있어서,
상기 메모리 관련 데이터를 검색하는 단계는
상기 메모리 관련 검색 결과로 상기 주소를 참조하는 참조 주소 값을 더 출력하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법. - 청구항 9에 있어서,
상기 데이터 구조를 정의하는 단계는
상기 메모리 관련 검색 결과로부터 분석된 구조체를 이용하여 메모리 맵 구조체 검색에 이용할 데이터 구조를 정의하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법. - 청구항 10에 있어서,
상기 메모리 맵 구조체를 검색하는 단계는
상기 데이터 구조를 정의된 시작 주소와 끝 주소 사이의 바이너리 데이터를 이용하여 상기 메모리 맵 구조체를 검색하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법. - 청구항 9에 있어서,
상기 메모리 관련 데이터를 검색하는 단계는
상기 데이터 이름(Name)을 기반으로 검색된 비구조체 데이터에서 네임 어드레스 주변에 존재하는 주소들을 출력하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210086011A KR102635807B1 (ko) | 2021-06-30 | 2021-06-30 | 펌웨어 메모리 맵 정보 추출 장치 및 방법 |
US17/737,174 US20230004499A1 (en) | 2021-06-30 | 2022-05-05 | Apparatus and method for extracting memory map information from firmware |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210086011A KR102635807B1 (ko) | 2021-06-30 | 2021-06-30 | 펌웨어 메모리 맵 정보 추출 장치 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20230004133A true KR20230004133A (ko) | 2023-01-06 |
KR102635807B1 KR102635807B1 (ko) | 2024-02-13 |
Family
ID=84785524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210086011A KR102635807B1 (ko) | 2021-06-30 | 2021-06-30 | 펌웨어 메모리 맵 정보 추출 장치 및 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230004499A1 (ko) |
KR (1) | KR102635807B1 (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160132322A1 (en) * | 2014-11-11 | 2016-05-12 | Red Hat, Inc. | Method and system for updating firmware |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936299B2 (en) * | 2017-04-28 | 2021-03-02 | Dell Products, L.P. | Automated intra-system persistent memory updates |
US11354135B2 (en) * | 2017-12-25 | 2022-06-07 | Intel Corporation | Pre-memory initialization multithread parallel computing platform |
US11099831B2 (en) * | 2018-02-08 | 2021-08-24 | Micron Technology, Inc. | Firmware update in a storage backed memory system |
US11347643B2 (en) * | 2018-06-29 | 2022-05-31 | Intel Corporation | Control logic and methods to map host-managed device memory to a system address space |
US11449427B2 (en) * | 2020-02-13 | 2022-09-20 | SK Hynix Inc. | Microprocessor-based system memory manager hardware accelerator |
-
2021
- 2021-06-30 KR KR1020210086011A patent/KR102635807B1/ko active IP Right Grant
-
2022
- 2022-05-05 US US17/737,174 patent/US20230004499A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160132322A1 (en) * | 2014-11-11 | 2016-05-12 | Red Hat, Inc. | Method and system for updating firmware |
Also Published As
Publication number | Publication date |
---|---|
KR102635807B1 (ko) | 2024-02-13 |
US20230004499A1 (en) | 2023-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101648235B1 (ko) | 정합-데이터 보고 모듈을 갖는 패턴 인식 프로세서 | |
CN107563201B (zh) | 基于机器学习的关联样本查找方法、装置及服务器 | |
CN110502227B (zh) | 代码补全的方法及装置、存储介质、电子设备 | |
CN111367595B (zh) | 数据处理方法、程序运行方法、装置及处理设备 | |
CN111026663B (zh) | 一种软件缺陷检测方法、装置、计算机设备和存储介质 | |
CN110825840A (zh) | 词库扩充方法、装置、设备及存储介质 | |
CN107153692B (zh) | 一种字符串匹配的方法及设备 | |
CN111158667B (zh) | 代码注入方法和装置、电子设备及存储介质 | |
JP5777843B1 (ja) | プロセッサ、処理装置、プログラム作成方法 | |
KR102635807B1 (ko) | 펌웨어 메모리 맵 정보 추출 장치 및 방법 | |
US20150095897A1 (en) | Method and apparatus for converting programs | |
CN111159162B (zh) | 数据库配置方法及设备 | |
CN111240790A (zh) | 一种应用的多语言适配方法、装置、客户端和存储介质 | |
CN110704573A (zh) | 目录存储方法、装置、计算机设备及存储介质 | |
CN114611039B (zh) | 异步加载规则的解析方法、装置、存储介质和电子设备 | |
CN110019295B (zh) | 数据库检索方法、装置、系统以及存储介质 | |
CN105740210B (zh) | 一种信息相似度确定方法及装置 | |
EP4050495A1 (en) | Trigger implementing method and device | |
CN109634844B (zh) | Js代码测试方法、装置及电子设备 | |
CN111859089B (zh) | 一种用于互联网信息的错词检测控制方法 | |
CN112947991A (zh) | 版本差异代码文件的获取方法、装置、计算机设备和介质 | |
CN107239395B (zh) | 一种源代码中无效函数的查找方法和设备 | |
CN110543622A (zh) | 文本相似度检测方法、装置、电子设备及可读存储介质 | |
CN109840273B (zh) | 一种文案生成方法和装置 | |
KR102286451B1 (ko) | 자연어 처리 기반 난독화된 식별자 인식 방법, 이를 수행하기 위한 기록 매체 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |