KR20230004133A - 펌웨어 메모리 맵 정보 추출 장치 및 방법 - Google Patents

펌웨어 메모리 맵 정보 추출 장치 및 방법 Download PDF

Info

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
Application number
KR1020210086011A
Other languages
English (en)
Other versions
KR102635807B1 (ko
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 KR1020210086011A priority Critical patent/KR102635807B1/ko
Priority to US17/737,174 priority patent/US20230004499A1/en
Publication of KR20230004133A publication Critical patent/KR20230004133A/ko
Application granted granted Critical
Publication of KR102635807B1 publication Critical patent/KR102635807B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test 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

펌웨어 메모리 맵 정보 추출 장치 및 방법 {APPARATUS AND METHOD FOR EXTRACTING MEMORY MAP INFORMATION FROM FIRMWARE}
본 발명은 펌웨어 역공학 분석 기술에 관한 것으로, 보다 상세하게는 펌웨어 메모리 맵 정보 추출 기술에 관한 것이다.
제어가 필요한 시스템에서 특정 기능을 수행하도록 특화된 임베디드 보드 사용이 더욱 일반화되고 있다. 임베디드 보드는 보드 구동을 위하여 펌웨어 소프트웨어를 탑재한다. 보통 이러한 펌웨어는 복잡한 운영 체제를 포함하지 않는 경우가 많아 보안에 취약할 수 있지만, 보드의 소스 코드는 제공하지 않는 경우가 대부분이므로 바이너리 코드 분석을 통하여 보안 취약점 분석이 수행되어야 한다. 펌웨어의 메모리 맵 관련 정보는 이러한 분석의 시작점에서 매우 필요한 데이터이지만 이러한 정보도 제공되지 않는 경우가 대부분이다. 이러한 경우 메모리 맵 관련 정보 추출을 바이너리 코드 분석을 통하여 수행하여야 한다. 또한 대부분의 펌웨어들이 각자의 방식으로 구현되는 관계로 대상 시스템이 바뀌면 별도의 분석 작업이 수행되어야 하는 어려움이 있다.
한편, 한국등록특허 제 10-1995176 호“프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템”는 프로그램 실행 컨텍스트를 모두 저장하고 저장한 컨텍스트를 효율적으로 분석하는 프로그램 실행 컨텍스트 기반의 빅데이터를 활용한 역공학 방법 및 시스템 에 관하여 개시하고 있다.
본 발명은 펌웨어에서 메모리 맵 관련 정보를 수월하게 추출하는 것을 목적으로 한다.
또한, 본 발명은 펌웨어 보안의 취약점 분석을 제공하는 것을 목적으로 한다.
상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 장치는 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고, 상기 적어도 하나 이상의 프로그램은 펌웨어에서 메모리 관련 데이터를 검색하고, 상기 메모리 관련 데이터로부터 바이너리 코드를 분석하여 데이터 구조를 설정하고, 상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 메모리 관련 검색 결과로 출력할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 메모리 관련 검색 결과로 상기 주소를 참조하는 참조 주소 값을 더 출력할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 메모리 관련 검색 결과로부터 분석된 구조체를 이용하여 메모리 맵 구조체 검색에 이용할 데이터 구조를 정의할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 데이터 구조를 정의된 시작 주소와 끝 주소 사이의 바이너리 데이터를 이용하여 상기 메모리 맵 구조체를 검색할 수 있다.
이 때, 상기 적어도 하나 이상의 프로그램은 상기 데이터 이름(Name)을 기반으로 검색된 비구조체 데이터에서 네임 어드레스 주변에 존재하는 주소들을 출력할 수 있다.
또한, 상기한 목적을 달성하기 위한 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법은 펌웨어 메모리 맵 정보 추출 장치의 펌웨어 메모리 맵 정보 추출 방법에 있어서, 펌웨어에서 메모리 관련 데이터를 검색하는 단계; 상기 메모리 관련 데이터로부터 바이너리 코드를 분석하여 데이터 구조를 정의하는 단계 및 상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색하는 단계를 포함한다.
이 때, 상기 메모리 관련 데이터를 검색하는 단계는 기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 메모리 관련 검색 결과로 출력할 수 있다.
이 때, 상기 메모리 관련 데이터를 검색하는 단계는 상기 메모리 관련 검색 결과로 상기 주소를 참조하는 참조 주소 값을 더 출력할 수 있다.
이 때, 상기 데이터 구조를 정의하는 단계는 상기 메모리 관련 검색 결과로부터 분석된 구조체를 이용하여 메모리 맵 구조체 검색에 이용할 데이터 구조를 정의할 수 있다.
이 때, 상기 메모리 맵 구조체를 검색하는 단계는 상기 데이터 구조를 정의된 시작 주소와 끝 주소 사이의 바이너리 데이터를 이용하여 상기 메모리 맵 구조체를 검색할 수 있다.
이 때, 상기 메모리 관련 데이터를 검색하는 단계는 상기 데이터 이름(Name)을 기반으로 검색된 비구조체 데이터에서 네임 어드레스 주변에 존재하는 주소들을 출력할 수 있다.
본 발명은 펌웨어에서 메모리 맵 관련 정보를 수월하게 추출할 수 있다.
또한, 본 발명은 펌웨어 보안의 취약점 분석을 제공할 수 있다.
도 1 및 도 2는 본 발명의 일실시예에 따른 펌웨어 메모리 맵 정보 추출 방법을 나타낸 동작흐름도이다.
도 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: 네트워크

Claims (12)

  1. 하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나 이상의 프로그램을 저장하는 실행메모리를 포함하고,
    상기 적어도 하나 이상의 프로그램은
    펌웨어에서 메모리 관련 데이터를 검색하고,
    상기 메모리 관련 데이터로부터 바이너리 코드를 분석하여 데이터 구조를 설정하고,
    상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치.
  2. 청구항 1에 있어서,
    상기 적어도 하나 이상의 프로그램은
    기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 메모리 관련 검색 결과로 출력하는 것을 특징으로 하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치.
  3. 청구항 2에 있어서,
    상기 적어도 하나 이상의 프로그램은
    상기 메모리 관련 검색 결과로 상기 주소를 참조하는 참조 주소 값을 더 출력하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치.
  4. 청구항 3에 있어서,
    상기 적어도 하나 이상의 프로그램은
    상기 메모리 관련 검색 결과로부터 분석된 구조체를 이용하여 메모리 맵 구조체 검색에 이용할 데이터 구조를 정의하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치.
  5. 청구항 4에 있어서,
    상기 적어도 하나 이상의 프로그램은
    상기 데이터 구조를 정의된 시작 주소와 끝 주소 사이의 바이너리 데이터를 이용하여 상기 메모리 맵 구조체를 검색하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치.
  6. 청구항 5에 있어서,
    상기 적어도 하나 이상의 프로그램은
    상기 데이터 이름(Name)을 기반으로 검색된 비구조체 데이터에서 네임 어드레스 주변에 존재하는 주소들을 출력하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 장치.
  7. 펌웨어 메모리 맵 정보 추출 장치의 펌웨어 메모리 맵 정보 추출 방법에 있어서,
    펌웨어에서 메모리 관련 데이터를 검색하는 단계;
    상기 메모리 관련 데이터로부터 바이너리 코드를 분석하여 데이터 구조를 정의하는 단계; 및
    상기 데이터 구조를 이용하여 상기 펌웨어에서 메모리 맵 구조체를 검색하는 단계;
    를 포함하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법.
  8. 청구항 7에 있어서,
    상기 메모리 관련 데이터를 검색하는 단계는
    기정의된 메모리 관련 검색어를 이용하여 검색된 데이터 이름(Name)과 주소(addressoffset)를 메모리 관련 검색 결과로 출력하는 것을 특징으로 하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법.
  9. 청구항 8에 있어서,
    상기 메모리 관련 데이터를 검색하는 단계는
    상기 메모리 관련 검색 결과로 상기 주소를 참조하는 참조 주소 값을 더 출력하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법.
  10. 청구항 9에 있어서,
    상기 데이터 구조를 정의하는 단계는
    상기 메모리 관련 검색 결과로부터 분석된 구조체를 이용하여 메모리 맵 구조체 검색에 이용할 데이터 구조를 정의하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법.
  11. 청구항 10에 있어서,
    상기 메모리 맵 구조체를 검색하는 단계는
    상기 데이터 구조를 정의된 시작 주소와 끝 주소 사이의 바이너리 데이터를 이용하여 상기 메모리 맵 구조체를 검색하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법.
  12. 청구항 9에 있어서,
    상기 메모리 관련 데이터를 검색하는 단계는
    상기 데이터 이름(Name)을 기반으로 검색된 비구조체 데이터에서 네임 어드레스 주변에 존재하는 주소들을 출력하는 것을 특징으로 하는 펌웨어 메모리 맵 정보 추출 방법.
KR1020210086011A 2021-06-30 2021-06-30 펌웨어 메모리 맵 정보 추출 장치 및 방법 KR102635807B1 (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
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