본문 바로가기

개발/WIN32-MFC13

[ WIN ] 코드사인 (WinTrust API)검증 WinTrust API는 Windows 운영 체제에서 디지털 서명을 검증하고 파일 및 기타 객체의 신뢰성을 확인하는 데 사용됩니다. 이를 이해하기 쉽게 다이어그램으로 나타내 보겠습니다.다음은 WinTrust API의 주요 구성 요소와 흐름을 설명하는 다이어그램입니다.요청자(Requestor): 신뢰성을 확인하고자 하는 애플리케이션 또는 서비스.WinTrust API: 요청을 받아 디지털 서명을 검증하고 신뢰성을 평가하는 API.정책(Policy): 신뢰성 확인에 사용되는 기준 및 규칙 집합.신뢰 공급자(Trust Provider): 인증서와 서명을 검증하는 역할을 하는 엔티티.결과(Result): 파일 또는 객체의 신뢰성에 대한 검증 결과.[ 요청자 ] --> [ WinTrust API ] --> [ 정.. 2024. 4. 22.
[ WIN ] APP Init DLL class cAppInitDllHelper { public: cAppInitDllHelper(); virtual ~cAppInitDllHelper(); bool AddDllPathA( const std::string& _ssDllPath ); bool RemoveDllPathA( const std::string& _ssDllPath ); bool AddDllPathW( const std::wstring& _ssDllPath ); bool RemoveDllPathW( const std::wstring& _ssDllPath ); private: bool IsDllPathPresentA( const std::string& _ssCcurrentValue, const std::string& _ssDllPath ).. 2024. 4. 22.
[ WIN ] OS Version Util #include #include typedef LONG NTSTATUS, * PNTSTATUS; #define STATUS_SUCCESS (0x00000000) extern "C" NTSTATUS NTAPI RtlGetVersion( PRTL_OSVERSIONINFOW lpVersionInformation ); #ifndef NT_SUCCESS #define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0) #endif class cWinVersion { DECLARE_NO_SELF_CLASS( nxcWinVersion ); static bool IsSystem64Bit() { SYSTEM_INFO si; GetNativeSystemInfo( &si ); // PROCE.. 2024. 4. 22.
[ WIN ] RunAsUserOrAdmin class cRunProc { DECLARE_NO_SELF_CLASS( cRunProc ); public: enum class eRunOption { eAsUser, eAsAdmin }; static bool RunAsAdmin( const std::wstring& _ssPath, const std::wstring& _ssParameters, DWORD _nWaitMilliseconds ) { SHELLEXECUTEINFO sei = { sizeof( sei ) }; sei.lpVerb = L"runas"; sei.lpFile = _ssPath.c_str(); sei.lpParameters = _ssParameters.c_str(); sei.hwnd = NULL; sei.nShow = SW_NORMAL;.. 2024. 4. 22.
[ WIN ] DLL INJECTION DLL 인젝션(DLL Injection)은 다른 프로세스의 주소 공간에 동적으로 라이브러리(DLL 파일)를 삽입하는 기술입니다. 이 방법은 주로 소프트웨어 개발과 디버깅, 리버스 엔지니어링, 또는 때때로 보안 테스트에 사용됩니다. 하지만, 악의적 목적으로 사용될 수도 있기 때문에 책임감 있는 사용이 중요합니다. DLL 인젝션의 기본 원리 DLL 인젝션을 수행하는 과정은 일반적으로 다음 단계를 포함합니다: 대상 프로세스 식별: 인젝션을 수행할 프로세스의 식별자(Process ID, PID)를 얻습니다. 메모리 할당: 대상 프로세스의 주소 공간에 새로운 메모리를 할당합니다. 이 메모리는 DLL 경로를 저장하는 데 사용됩니다. DLL 경로 작성: 할당된 메모리에 DLL의 경로를 씁니다. 리모트 스레드 생성: .. 2024. 4. 22.
[WIN32] Mutex 체크 하기 Mutex를 사용해 봅시다. Name이 지정된 MUTEX를 검사하는 방법입니다. 전역 뮤텍스는 Global\\ 을 사용하여 이름 앞에 추가합니다. 코드 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 #include "stdafx.h" #include #include #pragma comment(lib, "shlwapi.lib") int main() { while(TRUE) { system("cls"); bool bResult = FALSE; const TCHAR szSecureMutex[] = {_T("뮤텍스 이름") }; HANDLE hHandle = ::OpenMutex(MUTEX_ALL_ACCES.. 2015. 6. 15.
[WIN32] 마우스 이벤트 발생하기 마우스 이벤트 발생하기 윈도우 OS 내에서 마우스 이벤트를 발생 코드입니다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 void ClickMouse(int parm_x, int parm_y, bool left_flag) { int x_pos = parm_x*65535/GetSystemMetrics(SM_CXSCREEN); int y_pos = parm_y*65535/GetSystemMetrics(SM_CYSCREEN); ::mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x_pos, y_pos, 0, ::GetMessageExtraInfo()); if(left_flag){ ::mouse_e.. 2015. 6. 15.
[WIN32] 터미널 환경 체크방법 WIN32 API를 이용하여 터미널 환경 체크하기 WIN32 API인 GetsystemMetrics()를 이용하여 터미널 환경임을 체크해 봅시다. https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetrics CODE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 bool GetTerminalServiceClientStatus() { bool bResult = false; if(0 == ::GetSystemMetrics(SM_REMOTESESSION)) { bResult = false; } else { bResult = true; } return .. 2015. 6. 15.
[WIN32] 로그인 계정의 권한 확인 로그인 계정의 권한 확인 Windows Os에서 현재 로그인중인 사용자의 권한 레벨을 확인해 봅시다. Haeder File 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 /****************************************************************************** * _ _ _ _ __ _____ _ _ *| | | | | | | |/ / | __ \ | | | | *| |__| | __ _ ___ | |_ _| ' / | | | | _____ __.. 2015. 6. 15.
[WIN32] TRAP FLAG를 이용하여 DEBUGING 감지 TRAP FLAG를 이용하여 DEBUGING 감지 자신이 만든 프로세스가 타인에 의하여 디버깅이 되고 있는지, 윈도우가 전역적으로 디버깅모드 인지 확인하는 기초적인 방법 입니다. Windows 32bit 프로세스(x86)에서 사용가능한 ASM을 이용하며 x64(AMD64)에서는 ASM를 64bit용으로 수정하시면 됩니다. Source Code 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 32 33 34 35 36 37 38 39 40 41 42 43 /****************************************************************************** * _ _.. 2014. 4. 22.
[ WIN ] CRITICAL_SECTION 사용법 및 문제점 CRITICAL_SECTION 사용법 및 문제점 우리는 프로그램을 작성할 때 다중 THREAD에서의 객체 접근을 보호 하기위한 방법으로 CRITICAL_SECTION을 많이 사용한다. 사용법은 아래와 같다 . 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 /****************************************************************************** * _ _ _ _ __ _____.. 2014. 3. 24.
[WIN32] 모듈 내부에서 경로 구하기 모듈 내부에서 경로 구하기 프로그램을 만들고 실행을 하다 보먄 자신의 경로 및 디렉토리 프로세스의 경로등이 필요한 경우가 상당히 많다. 우리가 흔히 알고 있는 WIN32 API 인 ::GetModuleFileName()을 사용하면 된다. 사용법은 아래와 같다. Code1 자신의 경로 구하기 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 8.. 2011. 2. 11.
반응형