WMI로 Windows 운영 체제 정보 가져오기 WMI는 Windows 시스템 정보를 쿼리할 수 있는 강력한 도구입니다. 이를 통해 운영 체제 이름, 버전, 아키텍처 등 다양한 정보를 가져올 수 있습니다. 1. 코드 설명 아래 코드는 WMI를 사용하여 Windows 운영 체제 정보를 가져오는 C++ 코드입니다: 2. 코드 #include #include #include #pragma comment(lib, "wbemuuid.lib")void GetWindowsNameWithWMI() { HRESULT hres; // COM 라이브러리 초기화 hres = CoInitializeEx(0, COI..
MFC에서 Excel 파일 불러오기1. 준비 단계Visual Studio에서 Excel COM 라이브러리를 참조로 추가.프로젝트 속성에서 Excel OLB 파일 경로를 지정.#include "afxdisp.h"를 프로젝트에 포함.2. 주요 구현 단계COM 라이브러리 초기화: AfxOleInit()와 CoInitialize() 사용.Excel Application 객체 생성: CoCreateInstance 호출.Excel 파일 열기: Workbooks.Open 메서드를 호출하여 파일 열기.셀 데이터 읽기: 특정 워크시트와 셀 선택 후 값 가져오기.COM 해제: CoUninitialize() 호출로 리소스 해제.3. 예제 코드#include "afxdisp.h"void ReadExcelFile() { ..
커플링 심화를 이용한 DLL 포인터 마스킹 후 역 마스킹하여 Caller 검증 방법요구 사항CLASS A를 만들고, 함수 BOO, FOO 구현CLASS AImpl을 new로 할당할당된 AImpl에 특정 수로 마스크 처리DLL에서 Caller에게 마스크된 포인터를 리턴Caller는 BOO, FOO 호출 시 해당 포인터를 전달DLL에서 마스킹을 풀어 리턴된 포인터가 올바른지 체크정상적이면 AImpl 내부 함수 호출코드 예제1. DLL 내 CLASS A 정의 및 포인터 마스킹 처리DLL에서 CLASS A와 AImpl을 정의하고, 포인터를 특정 값으로 마스킹 처리한 후 Caller에게 반환합니다.// MyDLL.cpp#include #include class A {public: virtual void BO..
NONAME을 이용한 멀티스레드 세이프한 방법 1. 멀티스레드 환경에서 발생할 수 있는 문제 동시 접근 문제: 여러 스레드가 동일한 자원에 동시에 접근할 경우, 데이터 불일치 또는 충돌이 발생할 수 있습니다. 메모리 관리 문제: 객체의 생성과 해제를 DLL 내부에서 처리하지 않으면 메모리 누수나 충돌이 발생할 수 있습니다. 전역 변수 사용: 전역 변수에 여러 스레드가 접근할 경우 동기화가 필요합니다. 2. 스레드 안전성을 확보하는 방법 객체의 독립성 유지: 각 스레드가 독립적으로 객체를 사용하고, 공유 자원에 접근할 때는 동기화를 적용합니다. 동기화 메커니즘 사용: mutex, critical section 등..
NONAME을 이용한 CLASS 포인터 반환 1. NONAME을 이용한 CLASS 포인터 반환 개념 NONAME 기술을 이용해 DLL에서 클래스를 반환하는 방법은 함수 이름 대신 Ordinal을 사용하여 클래스를 생성하고, 그 포인터를 반환하는 방식입니다. 이 방법은 DLL 내에서 객체의 포인터를 외부로 안전하게 전달하며, 보안을 강화할 수 있습니다. 특히, 메모리 관리 측면에서 클래스 객체의 할당과 해제를 모두 DLL에서 처리해야 안전하게 사용할 수 있습니다. 2. DLL 클래스 포인터 반환 구조 DLL 내에서 클래스 객체를 생성하고, 그 포인터를 반환합니다. NONAME 방식으로 함수 이름을 숨기고, 외부에..
DLL EXPORT 방법 중 NONAME 기술 1. NONAME 기술이란? NONAME 기술은 DLL에서 함수나 변수를 이름 대신 번호(ordinal)로 export하는 방식입니다. 이 방법을 사용하면 DLL 크기를 줄이고, 보안을 강화할 수 있지만, 사용성과 유지보수 측면에서 어려움이 있을 수 있습니다. 2. NONAME 기술의 장점 DLL 크기 감소: 함수 이름을 저장할 필요가 없기 때문에, DLL 파일의 크기가 조금 줄어듭니다. 대규모 API나 많은 함수가 있는 DLL에서 유리합니다. 보안 강화: 함수 이름이 노출되지 않으므로, 공격자가 함수 이름을 기반으로 공격하는 것을 어렵게 만들 수 있습니다. DLL의 API가..
- Total
- Today
- Yesterday
- 서귀포블루버블
- 패턴
- 성산블루버블
- PowerShell
- C#.NET
- C
- C# 고급 기술
- CMake
- 블루버블다이빙팀
- 울릉도
- OpenSource
- 블루버블다이브팀
- 윈도우
- C++
- C#
- 티스토리챌린지
- 스쿠버 다이빙
- Linux
- Windows
- ip
- 암호화
- 서귀포
- DLL
- 외돌개
- 스쿠버다이빙
- Build
- 블루버블
- script
- 현포다이브
- 제주도
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |