KR20230100441A - Method for self integrity verification of dynamic library and apparatus thereof - Google Patents

Method for self integrity verification of dynamic library and apparatus thereof Download PDF

Info

Publication number
KR20230100441A
KR20230100441A KR1020210190311A KR20210190311A KR20230100441A KR 20230100441 A KR20230100441 A KR 20230100441A KR 1020210190311 A KR1020210190311 A KR 1020210190311A KR 20210190311 A KR20210190311 A KR 20210190311A KR 20230100441 A KR20230100441 A KR 20230100441A
Authority
KR
South Korea
Prior art keywords
object file
mach
value
self
dynamic library
Prior art date
Application number
KR1020210190311A
Other languages
Korean (ko)
Other versions
KR102626841B1 (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 KR1020210190311A priority Critical patent/KR102626841B1/en
Publication of KR20230100441A publication Critical patent/KR20230100441A/en
Application granted granted Critical
Publication of KR102626841B1 publication Critical patent/KR102626841B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Abstract

상기한 목적을 달성하기 위한 본 발명의 일 실시예에 따른 동적 라이브러리의 자가 무결성 검증 방법은 마하 오브젝트 파일(Mach Object File; Mach-O File)을 생성하는 단계, 상기 마하 오브젝트 파일에 대한 검증 값을 계산하는 단계, 상기 계산된 검증 값을 상기 마하 오브젝트 파일 내 기설정된 위치에 저장하는 단계를 포함한다.In order to achieve the above object, a method for verifying self-integrity of a dynamic library according to an embodiment of the present invention includes generating a Mach Object File (Mach-O File), and a verification value for the Mach object file. Calculating, and storing the calculated verification value in a predetermined location in the Mach object file.

Description

동적 라이브러리의 자가 무결성 검증 방법 및 이를 위한 장치{METHOD FOR SELF INTEGRITY VERIFICATION OF DYNAMIC LIBRARY AND APPARATUS THEREOF}Method for self-integrity verification of dynamic library and device therefor

아래 실시예들은 동적 라이브러리의 무결성을 자가 검증하기 위한 방법 및 장치에 관한 것으로, 보다 상세히는 서버-리스 방식으로 iOS 등의 운영 체제에서 동적 라이브러리의 무결성을 자가 검증하는 방법에 관한 것이다.The following embodiments relate to a method and apparatus for self-verifying the integrity of a dynamic library, and more particularly, to a method for self-verifying the integrity of a dynamic library in an operating system such as iOS in a server-less manner.

최근, 스마트폰 등 휴대용 기기에 대한 악의적 공격, 프라이버시 데이터 보호 위협, 도청 및 악용 등의 보안 위협이 증가하고 있다.Recently, security threats such as malicious attacks on portable devices such as smart phones, privacy data protection threats, eavesdropping, and abuse are increasing.

따라서, 휴대용 기기에서 실행되는 파일에 대한 무결성 검증 방법에 대하여 다양한 측면에서 연구가 진행 중이다.Therefore, research is being conducted in various aspects on a method for verifying the integrity of a file executed in a portable device.

종래의 동적 라이브러리의 무결성을 검증하는 방법으로서, 별도의 외부 파일 또는 서버를 연동한 무결성 검증 방법이 알려져 있다. 하지만, 별도의 외부 파일 또는 서버를 이용하는 방법은 다운로드 대상이 되는 모든 환경의 배포된 앱에 대하여 무결성 검증을 위한 값을 생성해야 하며, 별도의 파일 또는 서버를 구성해야 하는 문제가 있다.As a conventional method for verifying the integrity of a dynamic library, a method for verifying integrity in conjunction with a separate external file or server is known. However, the method using a separate external file or server has a problem in that a value for integrity verification must be generated for distributed apps in all download target environments, and a separate file or server must be configured.

따라서, 별도의 파일 또는 서버 없이 동적 라이브러리 스스로 무결성을 검증할 수 있는 방법에 대한 필요성이 절실히 대두된다.Therefore, there is an urgent need for a method for verifying the integrity of the dynamic library itself without a separate file or server.

국내 공개특허공보 제10-2021-0144687호(발명의 명칭: 디바이스 및 애플리케이션 무결성 검증)Korean Patent Publication No. 10-2021-0144687 (Title of Invention: Device and Application Integrity Verification)

본 발명의 목적은 iOS 등 환경에서 동적 라이브러리의 무결성을 보장하는 방법 및 장치를 제공하는 것이다.An object of the present invention is to provide a method and apparatus for ensuring the integrity of a dynamic library in an environment such as iOS.

또한, 본 발명의 목적은 별도의 서버 또는 파일 없이 동적 라이브러리의 무결성을 검증하는 방법 및 장치를 제공하는 것이다.Another object of the present invention is to provide a method and apparatus for verifying the integrity of a dynamic library without a separate server or file.

상기한 목적을 달성하기 위한 본 발명의 일 실시예에 따른 동적 라이브러리의 자가 무결성 검증 방법은 마하 오브젝트 파일(Mach Object File; Mach-O File)을 생성하는 단계, 상기 마하 오브젝트 파일에 대한 검증 값을 계산하는 단계, 상기 계산된 검증 값을 상기 마하 오브젝트 파일 내 기설정된 위치에 저장하는 단계를 포함한다.In order to achieve the above object, a method for verifying self-integrity of a dynamic library according to an embodiment of the present invention includes generating a Mach Object File (Mach-O File), and a verification value for the Mach object file. Calculating, and storing the calculated verification value in a predetermined location in the Mach object file.

이때, 상기 마하 오브젝트 파일은 Header 영역, Load Command 영역, 및 Data 영역을 포함할 수 있다.At this time, the Mach object file may include a Header area, a Load Command area, and a Data area.

이때, 상기 마하 오브젝트 파일 내 기설정된 위치는 상기 Load Command 영역 내 Padding 영역에 상응할 수 있다.At this time, the predetermined position in the Mach object file may correspond to a padding area in the Load Command area.

이때, 상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일에 대한 검사 값을 생성하고, 상기 검증 값 및 상기 검사 값의 일치 여부에 기반하여 무결성을 검증할 수 있다.At this time, when the Mach object file is loaded, an inspection value for the Mach object file may be generated, and integrity may be verified based on whether the verification value matches the inspection value.

이때, 상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일의 로딩 시점 및 경로를 탐색하고, 상기 경로에 기반하여 Data 영역에 대한 상기 검사 값을 생성할 수 있다.At this time, when the Mach object file is loaded, a loading time and path of the Mach object file may be searched, and the inspection value for the data area may be generated based on the path.

이때, 상기 검사 값은 상기 마하 오브젝트 파일에 대한 HMAC 값에 상응할 수 있다.In this case, the check value may correspond to the HMAC value for the Mach object file.

이때, 상기 마하 오브젝트 파일이 저장되는 위치는 기설정된 정책에 따라 가변적으로 설정될 수 있다.In this case, the location where the Mach object file is stored may be variably set according to a preset policy.

또한, 상기한 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 동적 라이브러리의 자가 무결성 검증 방법은 마하 오브젝트 파일(Mach Object File; Mach-O File)에 대한 검사 값을 생성하는 단계, 및 상기 마하 오브젝트 파일에 포함된 상기 마하 오브젝트 파일에 대한 검증 값 및 상기 검사 값의 일치 여부를 검사하는 단계를 포함한다.In addition, a method for self-integrity verification of a dynamic library according to another embodiment of the present invention for achieving the above object includes generating a check value for a Mach Object File (Mach-O File), and the Mach and checking whether a verification value of the Mach object file included in the object file and the check value match.

이때, 상기 마하 오브젝트 파일은 Header 영역, Load Command 영역, 및 Data 영역을 포함할 수 있다.At this time, the Mach object file may include a Header area, a Load Command area, and a Data area.

이때, 상기 마하 오브젝트 파일에 대한 검증 값은 상기 Load Command 영역 내 Padding 영역에 저장될 수 있다.At this time, a verification value for the Mach object file may be stored in a padding area within the Load Command area.

이때, 상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일의 로딩 시점 및 경로를 탐색하고, 상기 경로에 기반하여 Data 영역에 대한 상기 검사 값을 생성할 수 있다.At this time, when the Mach object file is loaded, a loading time and path of the Mach object file may be searched, and the inspection value for the data area may be generated based on the path.

이때, 상기 검사 값은 상기 마하 오브젝트 파일에 대한 HMAC 값에 상응할 수 있다.In this case, the check value may correspond to the HMAC value for the Mach object file.

이때, 상기 마하 오브젝트 파일이 저장되는 위치는 기설정된 정책에 따라 가변적으로 설정될 수 있다.In this case, the location where the Mach object file is stored may be variably set according to a preset policy.

또한, 상기한 목적을 달성하기 위한 본 발명의 일 실시예에 따른 동적 라이브러리의 자가 무결성 검증 장치는 적어도 하나의 프로그램이 기록된 메모리, 및 상기 프로그램을 실행하는 프로세서를 포함하며, 상기 프로그램은 마하 오브젝트 파일(Mach Object File; Mach-O File)에 대한 검사 값을 생성하는 단계, 및 상기 마하 오브젝트 파일에 포함된 상기 마하 오브젝트 파일에 대한 검증 값 및 상기 검사 값의 일치 여부를 검사하는 단계의 수행을 위한 명령어들을 포함한다. In addition, an apparatus for self-integrity verification of a dynamic library according to an embodiment of the present invention for achieving the above object includes a memory in which at least one program is recorded, and a processor executing the program, wherein the program is a Mach object. The steps of generating a check value for a Mach Object File (Mach-O File) and checking whether the check value matches the check value for the Mach object file included in the Mach object file are performed. Contains commands for

이때, 상기 마하 오브젝트 파일은 Header 영역, Load Command 영역, 및 Data 영역을 포함할 수 있다.At this time, the Mach object file may include a Header area, a Load Command area, and a Data area.

이때, 상기 마하 오브젝트 파일에 대한 검증 값은 상기 Load Command 영역 내 Padding 영역에 저장될 수 있다.At this time, a verification value for the Mach object file may be stored in a padding area within the Load Command area.

이때, 상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일의 로딩 시점 및 경로를 탐색하고, 상기 경로에 기반하여 Data 영역에 대한 상기 검사 값을 생성할 수 있다.At this time, when the Mach object file is loaded, a loading time and path of the Mach object file may be searched, and the inspection value for the data area may be generated based on the path.

이때, 상기 검사 값은 상기 마하 오브젝트 파일에 대한 HMAC 값에 상응할 수 있다. In this case, the check value may correspond to the HMAC value for the Mach object file.

이때, 상기 마하 오브젝트 파일이 저장되는 위치는 기설정된 정책에 따라 가변적으로 설정될 수 있다.In this case, the location where the Mach object file is stored may be variably set according to a preset policy.

본 발명에 따르면, iOS 등 환경에서 동적 라이브러리의 무결성을 보장하는 방법 및 장치를 제공할 수 있다.According to the present invention, it is possible to provide a method and apparatus for guaranteeing the integrity of a dynamic library in an environment such as iOS.

또한, 본 발명은 별도의 서버 또는 파일 없이 동적 라이브러리의 무결성을 검증하는 방법 및 장치를 제공할 수 있다.In addition, the present invention can provide a method and apparatus for verifying the integrity of a dynamic library without a separate server or file.

도 1은 본 발명의 일 실시예에 따른 동적 라이브러리의 자가 무결성 검증 방법을 나타낸 흐름도이다.
도 2는 본 발명의 다른 실시예에 따른 동적 라이브러리의 자가 무결성 검증 방법을 나타낸 흐름도이다.
도 3은 Mach-O 파일 구조를 개념적으로 나타낸 도면이다.
도 4는 패딩 영역을 포함하는 Mach-O 파일 구조를 상세히 나타낸 도면이다.
도 5은 실시예에 따른 컴퓨터 시스템의 구성을 나타낸 도면이다.
1 is a flowchart illustrating a method for self-integrity verification of a dynamic library according to an embodiment of the present invention.
2 is a flowchart illustrating a method for self-integrity verification of a dynamic library according to another embodiment of the present invention.
3 is a diagram conceptually illustrating a Mach-O file structure.
4 is a detailed diagram showing a Mach-O file structure including a padding area.
5 is a diagram showing the configuration of a computer system according to an embodiment.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Advantages and features of the present invention, and methods of achieving them, will become clear with reference to the detailed description of the following embodiments taken in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but will be implemented in various different forms, only these embodiments make the disclosure of the present invention complete, and common knowledge in the art to which the present invention belongs. It is provided to fully inform the holder of the scope of the invention, and the present invention is only defined by the scope of the claims. Like reference numbers designate like elements throughout the specification.

비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있다.Although "first" or "second" is used to describe various elements, these elements are not limited by the above terms. Such terms may only be used to distinguish one component from another. Therefore, the first component mentioned below may also be the second component within the technical spirit of the present invention.

본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.Terms used in this specification are for describing embodiments and are not intended to limit the present invention. In this specification, singular forms also include plural forms unless specifically stated otherwise in a phrase. As used herein, "comprises" or "comprising" implies that a stated component or step does not preclude the presence or addition of one or more other components or steps.

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.Unless otherwise defined, all terms used herein may be interpreted as meanings commonly understood by those of ordinary skill in the art to which the present invention belongs. In addition, terms defined in commonly used dictionaries are not interpreted ideally or excessively unless explicitly specifically defined.

이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 하며, 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings, and when describing with reference to the drawings, the same or corresponding components are given the same reference numerals, and overlapping descriptions thereof will be omitted. .

도 1은 본 발명의 일 실시예에 따른 동적 라이브러리의 자가 무결성 검증 방법을 나타낸 흐름도이다.1 is a flowchart illustrating a method for self-integrity verification of a dynamic library according to an embodiment of the present invention.

구체적으로, 도 1은 자가 무결성 검증이 가능한 동적 라이브러리 생성 방법에 상응할 수 있다.Specifically, FIG. 1 may correspond to a method for generating a dynamic library capable of verifying self-integrity.

도 1을 참조하면, 실시예에 따른 동적 라이브러리의 자가 무결성 검증 방법은 마하 오브젝트 파일(Mach Object File; Mach-O File)을 생성한다(S110).Referring to FIG. 1 , a method for self-integrity verification of a dynamic library according to an embodiment generates a Mach Object File (Mach-O File) (S110).

이때, 상기 Mach-O 파일은 Mach Kernel을 기반으로 하는 시스템에서 사용될 수 있으며, Mach Kernel을 사용하는 시스템은 Darwin iOS, macOS, watchOS 등이 있다.At this time, the Mach-O file can be used in a system based on the Mach Kernel, and systems using the Mach Kernel include Darwin iOS, macOS, watchOS, and the like.

이때, 상기 마하 오브젝트 파일은 Header 영역, Load Command 영역, 및 Data 영역을 포함할 수 있다.At this time, the Mach object file may include a Header area, a Load Command area, and a Data area.

다음으로, 상기 마하 오브젝트 파일에 대한 검증 값을 계산한다(S120). Next, a verification value for the Mach object file is calculated (S120).

이때, 상기 검증 값은 상기 마하 오브젝트 파일에 대한 HMAC 값 또는 별도의 전자서명 값에 상응할 수 있다. In this case, the verification value may correspond to an HMAC value or a separate electronic signature value for the Mach object file.

다음으로, 상기 계산된 검증 값을 상기 마하 오브젝트 파일 내 기설정된 위치에 저장한다(S130). Next, the calculated verification value is stored in a predetermined location in the Mach object file (S130).

이때, 상기 마하 오브젝트 파일 내 기설정된 위치는 상기 Load Command 영역 내 Padding 영역에 상응할 수 있다.At this time, the predetermined position in the Mach object file may correspond to a padding area in the Load Command area.

이때, 상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일에 대한 검사 값을 생성하고, 상기 검증 값 및 상기 검사 값의 일치 여부에 기반하여 무결성을 검증할 수 있다.At this time, when the Mach object file is loaded, an inspection value for the Mach object file may be generated, and integrity may be verified based on whether the verification value matches the inspection value.

이때, 상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일의 로딩 시점 및 경로를 탐색하고, 상기 경로에 기반하여 Data 영역에 대한 상기 검사 값을 생성할 수 있다.At this time, when the Mach object file is loaded, a loading time and path of the Mach object file may be searched, and the inspection value for the data area may be generated based on the path.

이때, 상기 검사 값은 상기 마하 오브젝트 파일에 대한 HMAC 값에 상응할 수 있다.In this case, the check value may correspond to the HMAC value for the Mach object file.

이때, 상기 마하 오브젝트 파일이 저장되는 위치는 기설정된 정책에 따라 가변적으로 설정될 수 있다.In this case, the location where the Mach object file is stored may be variably set according to a preset policy.

도 2는 본 발명의 다른 실시예에 따른 동적 라이브러리의 자가 무결성 검증 방법을 나타낸 흐름도이다.2 is a flowchart illustrating a method for self-integrity verification of a dynamic library according to another embodiment of the present invention.

위한 본 발명의 다른 실시예에 따른 동적 라이브러리의 자가 무결성 검증 방법은 마하 오브젝트 파일(Mach Object File; Mach-O File)에 대한 검사 값을 생성한다(S210). In a method for self-integrity verification of a dynamic library according to another embodiment of the present invention, a check value for a Mach Object File (Mach-O File) is generated (S210).

이때, 상기 마하 오브젝트 파일은 Header 영역, Load Command 영역, 및 Data 영역을 포함할 수 있다.At this time, the Mach object file may include a Header area, a Load Command area, and a Data area.

다음으로, 상기 마하 오브젝트 파일에 포함된 상기 마하 오브젝트 파일에 대한 검증 값 및 상기 검사 값의 일치 여부를 검사한다(S220). Next, it is checked whether the verification value of the Mach object file included in the Mach object file and the check value match (S220).

이때, 상기 마하 오브젝트 파일에 대한 검증 값은 상기 Load Command 영역 내 Padding 영역에 저장될 수 있다.At this time, a verification value for the Mach object file may be stored in a padding area within the Load Command area.

이때, 상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일의 로딩 시점 및 경로를 탐색하고, 상기 경로에 기반하여 Data 영역에 대한 상기 검사 값을 생성할 수 있다.At this time, when the Mach object file is loaded, a loading time and path of the Mach object file may be searched, and the inspection value for the data area may be generated based on the path.

이때, 상기 검사 값은 상기 마하 오브젝트 파일에 대한 HMAC 값에 상응할 수 있다.In this case, the check value may correspond to the HMAC value for the Mach object file.

이때, 상기 마하 오브젝트 파일이 저장되는 위치는 기설정된 정책에 따라 가변적으로 설정될 수 있다.In this case, the location where the Mach object file is stored may be variably set according to a preset policy.

도 3은 Mach-O 파일 구조를 개념적으로 나타낸 도면이다.3 is a diagram conceptually illustrating a Mach-O file structure.

도 4는 패딩 영역을 포함하는 Mach-O 파일 구조를 상세히 나타낸 도면이다.4 is a detailed diagram showing a Mach-O file structure including a padding area.

Mach-O는 Mach Object 파일형식의 줄임말으로써, 실행파일, 오브젝트코드, 라이브러리 등의 형식을 말한다. Mach-O는 Mach Kernel을 기반으로 하는 대부분의 시스템에서 사용한다. 여기에는 Darwin iOS, macOS, watchOS 등이 포함되고 실행파일, 공유 및 정적 라이브러리, 커널 확장(Kernel Extension; KEXT) 번들, 디버그 지원파일 등 다양한 유형이 있다.Mach-O is an abbreviation for Mach Object file format, and refers to formats such as executable files, object codes, and libraries. Mach-O is used in most systems based on the Mach Kernel. These include Darwin iOS, macOS, watchOS, etc., and come in many types, such as executables, shared and static libraries, Kernel Extension (KEXT) bundles, and debug support files.

Mach-O 파일의 구조는 하나의 Mach-O Header, 일련의 Load Commands, Data(Raw Content)로 구성되고, Data는 하나 이상의 세그먼츠(Segments)로 구성되며 각 세그먼트(Segment)에는 섹션(Section)이 포함된다. 로드 커맨즈(Load Commands) 영역의 후미에는 패딩(Padding)영역이 존재한다.The structure of a Mach-O file consists of one Mach-O Header, a series of Load Commands, and Data (Raw Content). Data consists of one or more segments, and each segment contains a section. This is included. A padding area exists at the end of the Load Commands area.

Mach-O 파일의 기존 무결성 검증 방법으로서, 로드 커맨즈 테이블(Load Commands Table)의 항목으로 LC_CODE_SIGNATURE 영역에 정의되어 있고, Mach-O 파일의 전자서명 값을 Raw Content의 마지막에 부가하여 파일의 무결성을 확인할 수 있도록 정의할 수 있다.As an existing integrity verification method of the Mach-O file, it is defined in the LC_CODE_SIGNATURE area as an item of the Load Commands Table, and the digital signature value of the Mach-O file is added to the end of the raw content to ensure file integrity. It can be defined so that it can be checked.

비트코드는 다양한 cputype을 지원하기 위한 코드이다. 일반적으로는 cpu 아키텍처마다 개발자가 빌드하여 유니버설 라이브러리를 만든 후, 앱스토어에 등록하게 된다. 기존에는 라이브러리뿐만 아니라 각종 리소스 등이 각각의 cpu 아키텍처 또는 32/64비트 등 다양한 환경에 따른 모든 리소스를 포함하여 앱스토어에 등록하게 되며, 앱은 모든 리소스를 사용자 단말에 다운로드했다. 다만, 위와 같은 방식은 모든 리소스를 다운로드 한다는 점에서 비효율적이기 때문에, 위와 같은 비효율성을 극복하기 위해 앱스토어에서 필요한 리소스만 사용자 단말에 내려주는 기술로 비트코드가 고안되었다.Bitcode is a code to support various cputypes. In general, a developer builds a universal library for each cpu architecture and registers it in the App Store. In the past, various resources as well as libraries were registered in the App Store, including all resources according to various environments such as each cpu architecture or 32/64 bit, and the app downloaded all resources to the user terminal. However, since the above method is inefficient in that all resources are downloaded, bitcode was devised as a technology to download only the necessary resources from the App Store to the user terminal in order to overcome the above inefficiency.

개발자는 소스코드를 컴파일하여 1차적으로 비트코드를 생성하여 앱스토어에 등록하게 되면 앱스토어에서는 cputype에 따라 다시 2차로 빌드하여 사용자 단말로 어플리케이션을 내려준다. 이를 통해 추가적인 cpu 아키텍처가 생기더라도 개발자는 추가적인 작업이 필요하지 않다.When a developer compiles the source code and first generates bitcode and registers it in the App Store, the App Store builds it again according to the cpu type and downloads the application to the user terminal. Even if this results in an additional CPU architecture, no additional work is required from the developer.

하지만, 암호모듈과 같은 변경되지 않아야 하는 코드의 경우 비트코드로 앱스토어에 등록하면 다운로드 과정에서 암호모듈이 변경되어 초기 비트코드로 등록한 암호모듈에 대한 무결성 검증이 불가능해지는 문제가 발생한다.However, in the case of a code that should not be changed, such as a cryptographic module, if it is registered in the App Store as a bitcode, the cryptographic module is changed during the download process, resulting in a problem that integrity verification of the cryptographic module initially registered as a bitcode becomes impossible.

비트코드로 배포되는 앱은 Mach-O 파일 전자서명(CodeSign) 방식을 사용하여 무결성 검증을 수행할 수 있다. 하지만, 초기 비트코드로 등록했던 앱에 대한 변경이 발생하고 암호모듈 자체적으로 검증을 수행할 수 없는 문제가 있다.Apps distributed in bitcode can perform integrity verification using the Mach-O file electronic signature (CodeSign) method. However, there is a problem in that the app registered with the initial bit code is changed and the cryptographic module itself cannot perform verification.

또 다른 무결성 검증 방법의 예로서, 외부 파일 또는 서버를 사용하는 방법이 있다.As an example of another integrity verification method, there is a method using an external file or server.

비트코드로 등록된 파일을 사용자 단말기에 다운로드하면, 다운로드한 앱에 대한 무결성 검증 값을 생성한다. 상기 생성된 무결성 검증 값을 외부 파일 또는 서버에 저장한다. 다음으로, 외부 파일 또는 서버에 저장된 무결성 검증 값을 생성된 무결성 검증 값과 비교하여 앱에 대한 무결성 검증을 수행한다.When a file registered as bitcode is downloaded to a user terminal, an integrity verification value for the downloaded app is generated. The generated integrity verification value is stored in an external file or server. Next, the integrity verification for the app is performed by comparing the integrity verification value stored in the external file or server with the generated integrity verification value.

다만, 외부 파일 또는 서버를 이용한 무결성 검증 방법은 다운로드 대상이 되는 모든 환경에 대하여 무결성 검증 값을 생성해야 하며, 무결성 검증을 위한 별도 파일 또는 서버를 구비해야 하는 단점이 있다.However, the integrity verification method using an external file or server has a disadvantage in that integrity verification values must be generated for all download target environments, and a separate file or server for integrity verification must be provided.

본 발명의 일 실시예에 따른 Mach-O 파일의 무결성 검증 방식은 아래와 같다.A method for verifying the integrity of a Mach-O file according to an embodiment of the present invention is as follows.

먼저, Load command 영역 중 Padding 영역(버퍼)을 비워 두고 오프셋(offset) 정보를 이용하여 특정 offset부터 코드 영역이 시작된다.First, the padding area (buffer) of the load command area is left empty, and the code area starts from a specific offset using offset information.

코드 영역이 시작되는 위치와 개발자가 패키징할 때 붙는 코드서명의 위치 등이 모두 Load command 정보에 기록되어 있으므로, 이를 통해 코드의 위치를 확보할 수 있다. Since the starting position of the code area and the position of the code signature attached when the developer packages are all recorded in the load command information, the position of the code can be secured through this.

이때, 코드서명은 코드의 가장 마지막 부분에 붙게 되며 일반적으로 약 24KB 정도 크기를 갖는다.At this time, the code signature is attached to the last part of the code and generally has a size of about 24KB.

확보한 코드 정보를 이용하여 무결성값을 생성한다. 이때, 무결성값은 HMAC 또는 별도의 전자서명 값으로 설정할 수 있으며, 본 발명의 범위가 이에 한정되는 것은 아니다.An integrity value is created using the secured code information. In this case, the integrity value may be set to HMAC or a separate digital signature value, and the scope of the present invention is not limited thereto.

상기 무결성값을 패딩 영역 내 위치를 지정하여 저장하여, 무결성값이 포함된 파일을 구성한다. By designating and storing the integrity value at a location within the padding area, a file including the integrity value is constructed.

다음으로, 실행과정에서 자가 무결성 검증을 수행한다. 로딩된 동적 라이브러리가 자신의 경로를 찾고 무결성 검증 값을 생성한다.Next, self-integrity verification is performed in the execution process. The loaded dynamic library finds its own path and creates an integrity verification value.

구체적으로, 로딩된 동적 라이브러리는 자가 무결성 검증을 위해 동적 라이브러리의 로딩 시점 및 위치를 확인한다. Specifically, the loaded dynamic library checks the loading time and location of the dynamic library for self-integrity verification.

동적 라이브러리가 위치한 경로는 앱스토어 정책에 따라 가변적인 위치에 설치되므로, 실행 시 스스로 자기 위치를 탐색한다.The path where the dynamic library is located is installed in a variable location according to the App Store policy, so it searches its own location when it is run.

동적 라이브러리 dylib의 자기 경로를 찾는 과정은 하기의 [표 1]과 같다.The process of finding the path of the dynamic library dylib is shown in [Table 1] below.

struct mach_header* header = &_mh_dylib_header;
const char* imagename = 0;
int cnt = _dyld_image_count();
for(I=1; I<cnt; I++)
{
if(_dyld_get_image_header(I) == header)
imagename = (MC_CHAR*)_dyld_get_image_name(I);
}
struct mach_header* header = &_mh_dylib_header;
const char* imagename = 0;
int cnt = _dyld_image_count();
for(I=1; I<cnt; I++)
{
if(_dyld_get_image_header(I) == header)
imagename = (MC_CHAR*)_dyld_get_image_name(I);
}

위 경로 탐색 과정을 통해 탐색된 경로에서 Content 영역에 대한 무결성 검증 값을 생성한다.In the path searched through the above path search process, an integrity verification value for the content area is created.

다음으로, 사전 설정된 무결성 검증 값과 상기 생성된 무결성 검증 값을 비교하여 무결성을 검증한다.Next, integrity is verified by comparing a preset integrity verification value with the generated integrity verification value.

도 5은 실시예에 따른 컴퓨터 시스템의 구성을 나타낸 도면이다.5 is a diagram showing the configuration of a computer system according to an embodiment.

실시예에 따른 동적 라이브러리의 자가 무결성 검증 장치는 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1000)에서 구현될 수 있다.The self-integrity verification device of the dynamic library according to the embodiment may be implemented in the computer system 1000 such as a computer-readable recording medium.

컴퓨터 시스템(1000)은 버스(1020)를 통하여 서로 통신하는 하나 이상의 프로세서(1010), 메모리(1030), 사용자 인터페이스 입력 장치(1040), 사용자 인터페이스 출력 장치(1050) 및 스토리지(1060)를 포함할 수 있다. 또한, 컴퓨터 시스템(1000)은 네트워크(1080)에 연결되는 네트워크 인터페이스(1070)를 더 포함할 수 있다. 프로세서(1010)는 중앙 처리 장치 또는 메모리(1030)나 스토리지(1060)에 저장된 프로그램 또는 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1030) 및 스토리지(1060)는 휘발성 매체, 비휘발성 매체, 분리형 매체, 비분리형 매체, 통신 매체, 또는 정보 전달 매체 중에서 적어도 하나 이상을 포함하는 저장 매체일 수 있다. 예를 들어, 메모리(1030)는 ROM(1031)이나 RAM(1032)을 포함할 수 있다.Computer system 1000 may include one or more processors 1010, memory 1030, user interface input devices 1040, user interface output devices 1050, and storage 1060 that communicate with each other over a bus 1020. can In addition, computer system 1000 may further include a network interface 1070 coupled to network 1080 . The processor 1010 may be a central processing unit or a semiconductor device that executes programs or processing instructions stored in the memory 1030 or the storage 1060 . The memory 1030 and the storage 1060 may be storage media including at least one of volatile media, nonvolatile media, removable media, non-removable media, communication media, and information delivery media. For example, memory 1030 may include ROM 1031 or RAM 1032 .

또한, 상기한 목적을 달성하기 위한 본 발명의 일 실시예에 따른 동적 라이브러리의 자가 무결성 검증 장치는 적어도 하나의 프로그램이 기록된 메모리(1030), 및 상기 프로그램을 실행하는 프로세서(1010)를 포함하며, 상기 프로그램은 마하 오브젝트 파일(Mach Object File; Mach-O File)에 대한 검사 값을 생성하는 단계, 및 상기 마하 오브젝트 파일에 포함된 상기 마하 오브젝트 파일에 대한 검증 값 및 상기 검사 값의 일치 여부를 검사하는 단계의 수행을 위한 명령어들을 포함한다. In addition, an apparatus for self-integrity verification of a dynamic library according to an embodiment of the present invention for achieving the above object includes a memory 1030 in which at least one program is recorded, and a processor 1010 executing the program, , The program generates a check value for a Mach object file (Mach-O File), and determines whether a check value for the Mach object file included in the Mach object file and the check value match. Contains instructions for performing the steps to be checked.

이때, 상기 마하 오브젝트 파일은 Header 영역, Load Command 영역, 및 Data 영역을 포함할 수 있다.At this time, the Mach object file may include a Header area, a Load Command area, and a Data area.

이때, 상기 마하 오브젝트 파일에 대한 검증 값은 상기 Load Command 영역 내 Padding 영역에 저장될 수 있다.At this time, a verification value for the Mach object file may be stored in a padding area within the Load Command area.

이때, 상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일의 로딩 시점 및 경로를 탐색하고, 상기 경로에 기반하여 Data 영역에 대한 상기 검사 값을 생성할 수 있다.At this time, when the Mach object file is loaded, a loading time and path of the Mach object file may be searched, and the inspection value for the data area may be generated based on the path.

이때, 상기 검사 값은 상기 마하 오브젝트 파일에 대한 HMAC 값에 상응할 수 있다. In this case, the check value may correspond to the HMAC value for the Mach object file.

이때, 상기 마하 오브젝트 파일이 저장되는 위치는 기설정된 정책에 따라 가변적으로 설정될 수 있다.In this case, the location where the Mach object file is stored may be variably set according to a preset policy.

본 발명에서 설명하는 특정 실행들은 실시예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.The specific implementations described herein are examples and do not limit the scope of the present invention in any way. For brevity of the specification, description of conventional electronic components, control systems, software, and other functional aspects of the systems may be omitted. In addition, the connection of lines or connecting members between the components shown in the drawings are examples of functional connections and / or physical or circuit connections, which can be replaced in actual devices or additional various functional connections, physical connection, or circuit connections. In addition, if there is no specific reference such as “essential” or “important”, it may not be a component necessarily required for the application of the present invention.

따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.Therefore, the spirit of the present invention should not be limited to the above-described embodiments and should not be determined, and all scopes equivalent to or equivalently changed from the claims as well as the claims to be described later are within the scope of the spirit of the present invention. will be said to belong to

1000: 컴퓨터 시스템 1010: 프로세서
1020: 버스 1030: 메모리
1031: 롬 1032: 램
1040: 사용자 인터페이스 입력 장치
1050: 사용자 인터페이스 출력 장치
1060: 스토리지 1070: 네트워크 인터페이스
1080: 네트워크
1000: computer system 1010: processor
1020: bus 1030: memory
1031: Rom 1032: RAM
1040: user interface input device
1050: user interface output device
1060: storage 1070: network interface
1080: Network

Claims (19)

마하 오브젝트 파일(Mach Object File; Mach-O File)을 생성하는 단계;
상기 마하 오브젝트 파일에 대한 검증 값을 계산하는 단계;
상기 계산된 검증 값을 상기 마하 오브젝트 파일 내 기설정된 위치에 저장하는 단계;
를 포함하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
Creating a Mach Object File (Mach-O File);
calculating a verification value for the Mach object file;
storing the calculated verification value in a predetermined location within the Mach object file;
Self-integrity verification method of a dynamic library comprising a.
청구항 1에 있어서,
상기 마하 오브젝트 파일은
Header 영역, Load Command 영역, 및 Data 영역을 포함하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 1,
The Mach object file is
A self-integrity verification method of a dynamic library comprising a header area, a load command area, and a data area.
청구항 2에 있어서,
상기 마하 오브젝트 파일 내 기설정된 위치는
상기 Load Command 영역 내 Padding 영역에 상응하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 2,
The preset location in the Mach object file is
Self-integrity verification method of the dynamic library, characterized in that it corresponds to the padding area in the Load Command area.
청구항 1에 있어서,
상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일에 대한 검사 값을 생성하고, 상기 검증 값 및 상기 검사 값의 일치 여부에 기반하여 무결성을 검증하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 1,
When the Mach object file is loaded, a check value for the Mach object file is generated, and integrity is verified based on whether the verification value and the check value match.
청구항 4에 있어서,
상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일의 로딩 시점 및 경로를 탐색하고, 상기 경로에 기반하여 Data 영역에 대한 상기 검사 값을 생성하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 4,
When the Mach object file is loaded, the loading time and path of the Mach object file are searched, and the inspection value for the data area is generated based on the path.
청구항 5에 있어서,
상기 검사 값은 상기 마하 오브젝트 파일에 대한 HMAC 값에 상응하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 5,
The self-integrity verification method of a dynamic library, characterized in that the check value corresponds to the HMAC value for the Mach object file.
청구항 5에 있어서,
상기 마하 오브젝트 파일이 저장되는 위치는 기설정된 정책에 따라 가변적으로 설정되는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 5,
The self-integrity verification method of a dynamic library, characterized in that the location where the Mach object file is stored is variably set according to a preset policy.
마하 오브젝트 파일(Mach Object File; Mach-O File)에 대한 검사 값을 생성하는 단계; 및
상기 마하 오브젝트 파일에 포함된 상기 마하 오브젝트 파일에 대한 검증 값 및 상기 검사 값의 일치 여부를 검사하는 단계;
를 포함하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
generating a test value for a Mach Object File (Mach-O File); and
checking whether a verification value of the Mach object file included in the Mach object file and the check value match;
Self-integrity verification method of a dynamic library comprising a.
청구항 8에 있어서,
상기 마하 오브젝트 파일은
Header 영역, Load Command 영역, 및 Data 영역을 포함하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 8,
The Mach object file is
A self-integrity verification method of a dynamic library comprising a header area, a load command area, and a data area.
청구항 9에 있어서,
상기 마하 오브젝트 파일에 대한 검증 값은
상기 Load Command 영역 내 Padding 영역에 저장된 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 9,
The verification value for the Mach object file is
Self-integrity verification method of the dynamic library, characterized in that stored in the padding area in the load command area.
청구항 8에 있어서,
상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일의 로딩 시점 및 경로를 탐색하고, 상기 경로에 기반하여 Data 영역에 대한 상기 검사 값을 생성하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 8,
When the Mach object file is loaded, the loading time and path of the Mach object file are searched, and the inspection value for the data area is generated based on the path.
청구항 11에 있어서,
상기 검사 값은 상기 마하 오브젝트 파일에 대한 HMAC 값에 상응하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 11,
The self-integrity verification method of a dynamic library, characterized in that the check value corresponds to the HMAC value for the Mach object file.
청구항 11에 있어서,
상기 마하 오브젝트 파일이 저장되는 위치는 기설정된 정책에 따라 가변적으로 설정되는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 방법.
The method of claim 11,
The self-integrity verification method of a dynamic library, characterized in that the location where the Mach object file is stored is variably set according to a preset policy.
적어도 하나의 프로그램이 기록된 메모리; 및
상기 프로그램을 실행하는 프로세서
를 포함하며,
상기 프로그램은
마하 오브젝트 파일(Mach Object File; Mach-O File)에 대한 검사 값을 생성하는 단계; 및
상기 마하 오브젝트 파일에 포함된 상기 마하 오브젝트 파일에 대한 검증 값 및 상기 검사 값의 일치 여부를 검사하는 단계;
의 수행을 위한 명령어들을 포함하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 장치.
a memory in which at least one program is recorded; and
Processor running the program
Including,
said program
generating a test value for a Mach Object File (Mach-O File); and
checking whether a verification value of the Mach object file included in the Mach object file and the check value match;
Self-integrity verification device of a dynamic library, characterized in that it comprises instructions for the execution of.
청구항 14에 있어서,
상기 마하 오브젝트 파일은
Header 영역, Load Command 영역, 및 Data 영역을 포함하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 장치.
The method of claim 14,
The Mach object file is
A self-integrity verification device of a dynamic library comprising a header area, a load command area, and a data area.
청구항 15에 있어서,
상기 마하 오브젝트 파일에 대한 검증 값은
상기 Load Command 영역 내 Padding 영역에 저장된 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 장치.
The method of claim 15
The verification value for the Mach object file is
Self-integrity verification device of the dynamic library, characterized in that stored in the padding area in the Load Command area.
청구항 14에 있어서,
상기 마하 오브젝트 파일이 로딩되면, 상기 마하 오브젝트 파일의 로딩 시점 및 경로를 탐색하고, 상기 경로에 기반하여 Data 영역에 대한 상기 검사 값을 생성하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 장치.
The method of claim 14,
When the Mach object file is loaded, the loading time and path of the Mach object file are searched, and the inspection value for the data area is generated based on the path.
청구항 17에 있어서,
상기 검사 값은 상기 마하 오브젝트 파일에 대한 HMAC 값에 상응하는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 장치.
The method of claim 17
The self-integrity verification device of the dynamic library, characterized in that the check value corresponds to the HMAC value for the Mach object file.
청구항 17에 있어서,
상기 마하 오브젝트 파일이 저장되는 위치는 기설정된 정책에 따라 가변적으로 설정되는 것을 특징으로 하는 동적 라이브러리의 자가 무결성 검증 장치.
The method of claim 17
The self-integrity verification device of a dynamic library, characterized in that the location where the Mach object file is stored is variably set according to a preset policy.
KR1020210190311A 2021-12-28 2021-12-28 Method for self integrity verification of dynamic library and apparatus thereof KR102626841B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210190311A KR102626841B1 (en) 2021-12-28 2021-12-28 Method for self integrity verification of dynamic library and apparatus thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210190311A KR102626841B1 (en) 2021-12-28 2021-12-28 Method for self integrity verification of dynamic library and apparatus thereof

Publications (2)

Publication Number Publication Date
KR20230100441A true KR20230100441A (en) 2023-07-05
KR102626841B1 KR102626841B1 (en) 2024-01-19

Family

ID=87159032

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210190311A KR102626841B1 (en) 2021-12-28 2021-12-28 Method for self integrity verification of dynamic library and apparatus thereof

Country Status (1)

Country Link
KR (1) KR102626841B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210144687A (en) 2020-05-21 2021-11-30 구글 엘엘씨 Device and application integrity verification

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210144687A (en) 2020-05-21 2021-11-30 구글 엘엘씨 Device and application integrity verification

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LIEF, "Mach-O Modification"(2021.09.)* *
OWASP, "iOS Anti-Reversing Defenses"(2021.10.)* *

Also Published As

Publication number Publication date
KR102626841B1 (en) 2024-01-19

Similar Documents

Publication Publication Date Title
CN107038045B (en) Method and device for loading library file
KR102192880B1 (en) Method and device to prevent software repackaging
US11221838B2 (en) Hot update method, operating system, terminal device, system, and computer-readable storage medium for a system process
US20150047046A1 (en) System and Method for Protecting Computers from Software Vulnerabilities
CN110325994B (en) Apparatus and method for enhancing control flow integrity of software applications
US20080148399A1 (en) Protection against stack buffer overrun exploitation
US9460306B1 (en) System and method for controlling access of machine code to operating system resources
US20060161910A1 (en) Method, system and program product for automatically ensuring compatability of a code module loaded into a program-code environment
AU2021206497B2 (en) Method and apparatus for authority control, computer device and storage medium
US11238151B2 (en) Method and apparatus for patching binary having vulnerability
US10795659B1 (en) System and method for live patching processes in user space
CN109271789B (en) Malicious process detection method and device, electronic equipment and storage medium
CN115617687B (en) Program instrumentation method, device, equipment and storage medium
WO2022111262A1 (en) Hotfix generation method and apparatus, server, and machine readable storage medium
Matsumoto et al. A proposal for the privacy leakage verification tool for android application developers
CN110334031B (en) Memory allocation code detection method and device, computer equipment and storage medium
CN112668008A (en) Method for realizing dynamic system call hijacking based on LSM
KR102626841B1 (en) Method for self integrity verification of dynamic library and apparatus thereof
US11663012B1 (en) Systems and methods for detecting coroutines
US11113392B2 (en) Executable binary code insertion
US11893113B2 (en) Return-oriented programming protection
US11934517B2 (en) Systems and methods for reliably injecting control flow integrity into binaries without source code
WO2020012474A1 (en) Return-oriented programming attack protection system and method
US7287251B1 (en) Source engine for transferring a resource to local secure cache
US20230195886A1 (en) Method and apparatus for securing indirect function call

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