데모 중에 "커널 메모리 패치"라는 용어를 발견했습니다. 구글링을 해보았지만 어딘가에서 정확한 답을 찾을 수 없었습니다. 제가 이해한 바에 따르면 커널 메모리 패치는 커널의 메모리 크기나 커널이 액세스하는 주소 공간을 어떻게든 추가하거나 늘리는 것입니까? 누군가 나를 고칠 수 있습니까? 또는 이 프로세스에 대한 추가 정보를 제공하세요.
또한 다음의 차이점은 무엇입니까?
- 커널 메모리 패치
- 커널 패치
- 로드 가능한 커널 모듈
답변1
설명하기 쉽기 때문에 역순으로 설명합니다.
로드 가능한 커널 모듈: 런타임 시 커널에 의해 로드될 수 있는 코드 조각을 나타냅니다. 일반적으로 이는 드라이버이지만 경우에 따라 하드웨어나 프로토콜과 무관한 추가 기능(예: 추가 계정 또는 디버깅 정보 추가)을 제공할 수도 있습니다. 기본적으로 커널 모듈은 사용자 공간 프로그램을 위한 동적 라이브러리와 동일한 기능을 가지고 있습니다(저수준 링크는 훨씬 더 복잡하지만). Linux 시스템에서 커널 모듈은 에 저장되고
/lib/modules
, NetBSD(그리고 OS X를 제외한 대부분의 다른 BSD 시스템)에서는 에 저장되며,/stand
Windows에서는 의 다양한 위치에 있습니다C:\Windows
.커널 패치: 라이브 패치와 오프라인 패치의 두 가지 형태로 제공됩니다. 오프라인 커널 패치는 본질적으로 단지 커널 업그레이드입니다(커널 바이너리에 패치를 적용하는 대신 수행되어야 함). 라이브 커널 패치를 사용하면 가동 중지 시간 없이 실행 중인 운영 체제 커널에 업데이트를 적용할 수 있습니다. 적어도 Linux에서는 라이브 커널 패치가 특수 커널 모듈에 포함되어 있습니다. 라이브 커널 패치는 다음과 같습니다.아니요이전 버전을 제거한 후 새 버전의 드라이버를 로드하는 것과 동일합니다(Windows가 특정 유형의 드라이버를 업데이트할 때 수행하는 것과 같습니다).
커널 메모리 패치: 이것은 문맥상 모호한 용어이지만, 내가 본 모든 맥락에서 이는 라이브 커널 패치의 일부로 실행 중인 커널의 메모리에서 데이터 구조를 업데이트하는 것을 의미합니다. 또한 익스플로잇을 트리거하기 위해 커널 메모리를 수정하기 위해 일부 악성 코드에서 사용하는 기술을 의미할 수도 있습니다. 시스템의 메모리 양과 관련이 있는 경우는 거의 없으며, 메모리 추가 및 제거를 종종 "핫 스와핑"이라고 합니다.