드림핵 13

공유메모리 매핑

메모리 매핑 작은 버퍼 대신 Page 단위로 큰 데이터를 빠르게 처리가능한 방식 파일이 매핑된 가상메모리와 파일은 커널에 의해 동기화 되기 전까지는 불일치할 수도 있음. 공유 메모리 매핑 방식 메모리 맵의 데이터를 변경하면, 그 즉시 커널에 의해 원본 파일과 데이터가 동기화되는 방식. 프로세스간 메모리 공유에 특화된 방식이기 때문에 IPC 통신에서도 주로 쓰인다. "ZwMapViewOfSection" 을 통한 공유 메모리 매핑 예제 // 물리 메모리를 사용하겠습니다. 선언. UNICODE_STRING DestinationString; RtlInitUnicodeString(&DestinationString, L"\\Device\\PhysicalMemory"); /* 중략 */ *a4 = 0; // 얻어올 ..

라자루스 루트킷 악성코드 분석 보고서(1/2)

#라자루스 #루트킷 #악성코드 #커널 본 게시글은 안랩 시큐리티대응센터(ASEC) 에서 2022. 09. 22. 자로 발간한 라자루스 공격 그룹의 BYOVD를 활용한 루트킷 악성코드 분석 보고서 의 내용에 대해 개인적으로 정리한 게시글입니다. 악성코드 관련 게시글들을 보다가 본의아니게 위에 기재한 악성코드 분석 보고서를 보게되어 공부 용도로 게시글을 작성해본다. 무엇보다 내 이목을 끌었던 것은 악성코드가 취약한 드라이버를 이용하여 커널단까지 조작하는 부분이었는데, 악성코드 분석 초보로써 굉장히 특이하다고 생각되었기에 세심하게 읽어보았다. 원본 보고서를 보면 거의 40장에 육박하는 매우 긴 분량이기 때문에 상세 내용을 나누어 서술해보겠다. 이번 게시글은 핵심 루트킷 파일이 작동하기 직전까지의 과정을 서술하..

[C++] 가상함수(Virtual Function)

#C++ #가상함수 C++ 에는 가상함수라는 개념이 있다. 같은 OOP 언어인 자바의 가상함수와 유사한데, 기본 클래스에서 가상 함수를 정의하여, 해당 기본 클래스를 상속 받는 파생 클래스가 해당 가상함수를 재정의하여 사용하도록 유도하여 Runtime 에 함수의 다형성을 높이기 위한 문법이라고 한다. 실행타임에 함수를 재정의해서 유용하게 사용할 수 있다는 것은 이해했는데, 의문점이 그냥 가상함수말고 일반적으로 함수 정의한 다음에 상속받은 클래스 단에서 오버라이드(재정의) 하여 사용하면 되지않나??? 라는 의문이었다. 정말 원론(?) 적인 이유는 다른 게시글 에 설명이 되어있었는데 엉뚱한 소멸자를 호출시키지않게 하기 위해서이다. C++ 개발 경험이 많이 없기 때문에 이러한 세세한 부분에 대해서는 생각해볼 ..

<C++ study> 2023.01.02
반응형