IOMMU VT-d AMD-Vi C++ IOMMU / VT-d / AMD-Vi 활성 여부를 C++로 감지하기 (Linux & Windows) DMA(Direct Memory Access) 기반 위협에 대응하려면 IOMMU(= VT-d / AMD-Vi) 활성 여부를 신뢰성 있게 확인할 수 있어야 합니다. 이 글은 운영체제별로 C++ 코드만으로 IOMMU 활성 신호를 감지하는 가장 실용적인 방법을 정리합니다. 목차 TL;DR 왜 감지해야 할까? Linux: sysfs 기반 확실한 감지 Windows: WMI(DeviceGuard)로 DMA 보호 신호 확인 ..
C++ 동적 할당 원칙: new vs. malloc - 객체 지향 언어에서 충돌을 피하는 방법🚨 **핵심 규칙:** STD 라이브러리를 사용하거나 C++ Class 객체를 생성할 때는 반드시 malloc이 아닌 new를 사용해야 합니다!C++ 언어에서 메모리 동적 할당을 할 때 가장 중요한 규칙은 할당하려는 대상이 C++ 객체(클래스/구조체)인지, 단순한 메모리 영역인지에 따라 방법이 달라진다는 것입니다.---1. C++ 객체 (클래스/STD 컨테이너)는 new를 사용해야 합니다!std::list, std::vector, std::string과 같은 STD 라이브러리 컨테이너와, 사용자 정의 class 또는 멤버 함수를 가진 struct는 복잡한 객체입니다. 이들은 메모리가 할당된 후 생성자가 호출되어..
C++에서 반드시 피해야 할 함정: 댕글링 레퍼런스 C++ 프로그래머라면 누구나 한 번쯤 겪게 되는 골치 아픈 문제, 바로 댕글링 레퍼런스(Dangling Reference)입니다. 레퍼런스를 반환하는 함수를 잘못 작성했을 때 발생하는 이 현상은 프로그램 크래시의 주범이 되기도 합니다. 왜 이런 일이 벌어지는지, 어떻게 해결해야 하는지 함께 알아봅시다. 1. 문제의 핵심: 댕글링 레퍼런스란? 👻 댕글링 레퍼런스(Dangling Reference)는 '매달려 있는' 또는 '허공을 가리키는' 참조를 뜻합니다. 참조(Reference)는 이미 존재하는 객체의 별명인데, 원본 객체가 사라지고 없는데도 별명만 남아있는 상태를 말합니다. 이런 참조를 사용하면 프로그램이 잘못된 메모리 영역을 건드리..
C 언어 vs C++: `struct`와 `typedef`의 차이점 완벽 정리 C 언어를 공부하다 보면 struct MyStruct와 typedef struct MyStruct라는 두 가지 형태의 구조체 선언을 자주 보게 됩니다. 겉보기에는 비슷해 보이지만, 둘 사이에는 명확한 차이점이 있습니다. 이 글에서는 두 방식의 차이점을 쉽게 알아보고, 왜 C에서는 typedef가, C++에서는 전자가 더 많이 사용되는지 알려드릴게요. `struct`만 사용한 구조체 선언 이 코드는 MyStruct라는 이름의 구조체 태그(tag)를 정의합니다. 여기서 MyStruct는 구조체의 별명이 아니라, struct 키워드와 함께 사용해야 하는 진짜 이름입니다. 마치 '과일'이라는 카테..
순수 C++로 RSA 키 PEM 저장 및 불러오기🧠 설명 이 코드는 OpenSSL 없이 순수 C++만을 이용하여 RSA 2048비트 키를 PEM 파일 형식으로 저장하거나 불러올 수 있도록 구현한 예제입니다. 공개키, 개인키 모두 지원하며, KCMVP 인증용, 경량 시스템, 보안 제품 개발 시 매우 유용합니다.🧩 원인 외부 라이브러리에 의존하지 않고 독립적인 PEM 처리 구현 필요 KCMVP, CC 인증 등 보안 요구사항 충족 경량 OS 또는 보안 펌웨어에서 사용 목적🧰 핵심 기능 PEM 파일에서 Base64 부분 추출: LoadPem() Base64 ↔ 바이너리 변환: Base64Encode(), Base64Decode() PEM 저장: SavePrivateKeyToPemFile(..
namespace util { class CryptoUtil { DECLARE_NO_COPY_CLASS( CryptoUtil ); public: CryptoUtil() = default; ~CryptoUtil() = default; static std::string GetMD5Hash( const std::string& _ssInput ); static std::string GetSHA256Hash( const std::string& _ssInput ); static std::string GetSHA512Hash( const std::string& _ssInput ); static std::string GetSHA1Hash( const std::string& _ssInput ); stati..
- Total
- Today
- Yesterday
- 윈도우
- 블루버블
- Windows
- 양파다이브
- 리눅스
- 디자인패턴
- 서귀포블루버블
- 서귀포
- 블루버블다이브팀
- C++
- 스쿠버다이빙
- 암호화
- Thread
- OpenSource
- C# 고급 기술
- PowerShell
- C#
- DLL
- 패턴
- Linux
- 다이빙
- 울릉도
- 블루버블다이빙팀
- Build
- C
- 성산블루버블
- 현포다이브
- 제주도
- ip
- ReFS
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
