개발/윈도우 32

DLL INJECTION

DLL 인젝션(DLL Injection)은 다른 프로세스의 주소 공간에 동적으로 라이브러리(DLL 파일)를 삽입하는 기술입니다. 이 방법은 주로 소프트웨어 개발과 디버깅, 리버스 엔지니어링, 또는 때때로 보안 테스트에 사용됩니다. 하지만, 악의적 목적으로 사용될 수도 있기 때문에 책임감 있는 사용이 중요합니다.DLL 인젝션의 기본 원리DLL 인젝션을 수행하는 과정은 일반적으로 다음 단계를 포함합니다:대상 프로세스 식별: 인젝션을 수행할 프로세스의 식별자(Process ID, PID)를 얻습니다.메모리 할당: 대상 프로세스의 주소 공간에 새로운 메모리를 할당합니다. 이 메모리는 DLL 경로를 저장하는 데 사용됩니다.DLL 경로 작성: 할당된 메모리에 DLL의 경로를 씁니다.리모트 스레드 생성: Create..

개발/윈도우 2024.04.22

프로세스 실행 권한을 알아 봅시다.

프로세스 실행 권한을 알아봅시다.Windows OS에서 실행되는 Process의 Integrity Level을 체크해 봅시다.Integrity Level이란?https://msdn.microsoft.com/en-us/library/bb625957.aspx 구현* Windows SDK 8.1 설치 및 사용 유무에 따라 코딩이 다릅니다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106..

개발/윈도우 2018.01.30

Mutex 체크 하기

Mutex를 사용해 봅시다.Name이 지정된 MUTEX를 검사하는 방법입니다.전역 뮤텍스는 Global\\ 을 사용하여 이름 앞에 추가합니다.  코드12345678910111213141516171819202122232425262728293031#include "stdafx.h"#include window.h>#include shlwapi.h> #pragma comment(lib, "shlwapi.lib") int main(){    while(TRUE)    {        system("cls");        bool bResult = FALSE;        const TCHAR szSecureMutex[] = {_T("뮤텍스 이름") };          HANDLE hHandle = ::Open..

개발/윈도우 2015.06.15

마우스 이벤트 발생하기

마우스 이벤트 발생하기윈도우 OS 내에서 마우스 이벤트를 발생 코드입니다.   코드1234567891011121314151617181920212223void 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){       ..

개발/윈도우 2015.06.15

터미널 환경 감지

WIN32 API를 이용하여 터미널 환경 체크하기WIN32 API인 GetsystemMetrics()를 이용하여 터미널 환경임을 체크해 봅시다.https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetricsCODE123456789101112131415161718192021222324bool GetTerminalServiceClientStatus(){    bool bResult = false;     if(0 == ::GetSystemMetrics(SM_REMOTESESSION))    {         bResult =  false;     }    else     {         bResult = true; ..

개발/윈도우 2015.06.15

로그인 계정 권한 확인

로그인 계정의 권한 확인Windows Os에서 현재 로그인중인 사용자의 권한 레벨을 확인해 봅시다.  Haeder File123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051/******************************************************************************* _    _                 _       _  __  _____               _           _     *| |  | |               | |     | |/ / |  __ \             | |         | |    *|..

개발/윈도우 2015.06.15

TRAP FLAG를 이용하여 DEBUGING 감지

TRAP FLAG를 이용하여 DEBUGING 감지자신이 만든 프로세스가 타인에 의하여 디버깅이 되고 있는지, 윈도우가 전역적으로 디버깅모드 인지 확인하는 기초적인 방법 입니다. Windows 32bit 프로세스(x86)에서 사용가능한 ASM을 이용하며 x64(AMD64)에서는 ASM를 64bit용으로 수정하시면 됩니다.  Source Code12345678910111213141516171819202122232425262728293031323334353637383940414243/******************************************************************************* _    _                 _       _  __  _____     ..

개발/윈도우 2014.04.22

CRITICAL_SECTION 사용법 및 문제점

CRITICAL_SECTION 사용법 및 문제점우리는 프로그램을 작성할 때 다중 THREAD에서의 객체 접근을 보호 하기위한 방법으로 CRITICAL_SECTION을 많이 사용한다. 사용법은 아래와 같다 .12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364/******************************************************************************* _    _                 _       _  __  _____               _           _     *| |  |..

개발/윈도우 2014.03.24

Inline __asm 64bit 변경

32비트 모듈을 작성 할 때 급하거나 떄론 귀찮아서 inline __asm 을 이용하어 코딩을 한다.asm을 바로 쓸 수 있기에 해당 방식을 많이 사용한다. 하지만 이제 64비트 시대 아닌가!! 그리고 고객사에서 점점 64비트 전용 프로그램들을 지원하기 시작하면서 난관에 봉착하기에 이른다. 그것은 바로!!Microsoft Visual Studio 에서는 64bit 컴파일러에서 inline __asm 코드를 더이상 지원 하지 않는다!! 참고 : http://msdn.microsoft.com/en-us/library/wbk4z78b(VS.80).aspx그럼 이제 우리는 더 이상 asm을 사용할 수 없는것인가? 절대 그렇지 않다!! 분명한것은 인라인 어셈을 이용하지 못하도록 하고 있는것이지 asm을 사용하지 ..

개발/윈도우 2013.06.21