kernel32

프로그래밍/WinAPI

WaitForSingleObject 함수

DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds ); WaitForSingleObject 함수는 지정된 개체가 신호 상태가 되거나 시간 제한 간격이 경과할때 까지 기다린다. hHandle 개체의 핸들이며 대기가 아직 보류중인 동안 이 핸들이 닫히면 함수는 동작하지않는다. 핸들은 SYNCHRONIZE 엑세스 권한이 있어야한다. dwMilliseconds 지정된 값만큼 시간을 기다린다. 이 값이 0인 경우 객체가 신호받지않으면 대기상태로 들어가지않으며 항상 즉시 반환된다. 이 값이 INFINITE 인 경우 객체가 신호를 받을 떄만 함수가 반환된다. 이 함수가 성공적으로 실행을 완료하면 WAIT_ABANDONED, WAIT_OBJECT_0, W..

프로그래밍/WinAPI

CreateRemoteThread 함수

HANDLE CreateRemoteThread( HANDLE hProcess, LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); CreateRemoteThread 함수는 다른 프로세스의 가상 주소 공간안에서 실행되는 쓰레드를 생성한다. hProcess 쓰레드를 생성할 프로세스 핸들이다. 이 핸들은 반드시 PROCESS_CREATE_THREAD, PROCESS_QUERY_INFORMATION, PROCESS_VM_OPERTATION, PROCESS_VM_WRITE..

프로그래밍/WinAPI

GetProcAddress 함수

FARPROC GetProcAddress( HMODULE hModule, LPCSTR lpProcName ); GetProcAddress 함수는 특정 DLL에서 내보내기된 함수 또는 변수의 주소를 가져온다. hModule 함수 또는 변수를 포함하고있는 DLL 모듈에 대한 핸들을 나타낸다. LoadLibrary, LoadLibraryEx, LoadPackageLibrary, GetModuleHandle 함수를 통해 인자값을 채울 수 있다. lpProcName 함수 또는 변수의 이름이나 함수의 서수값을 의미한다. 이 함수가 성공적으로 실행을 완료하면 내보내기된 함수 또는 변수의 주소값이 반환된다. 함수의 실행이 실패하면 NULL 이 반환되며 실패에 대한 자세한 정보는 GetLastError 함수를 통해 알 ..

프로그래밍/WinAPI

GetModuleHandleW 함수

HMODULE GetModuleHandleW(LPCWSTR lpModuleName); GetModuleHandleW 함수는 특정 모듈에 대한 모듈 핸들을 검색한다. 모듈은 호출프로세스에 의해 로드되어 있어야한다. lpModuleName 로드된 모듈의 이름으로 확장자는 *.dll 또는 *.exe 이다. 이 매개변수가 NULL 일 경우, 호출 프로세스 ( *.exe )를 생성하는데 사용된 파일의 핸들을 반환한다. GetModuleHandleW 함수가 성공적으로 실행을 완료하면 특정 모듈의 핸들을 반환한다. 함수의 실행이 실패할 경우 NULL 을 반환하며 실패에대한 자세한 정보는 GetLastError 함수를 통해 알 수 있다. Example HMODULE hMod = GetModuleHandle(L"kern..

프로그래밍/WinAPI

WriteProcessMemory 함수

BOOL WriteProcessMemory(HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten ); WriteProcessMemory 함수는 특정 프로세스의 메모리영역에 데이터를 쓰기한다. hProcess 메모리를 수정할 프로세스의 핸들이다. 이 핸들은 반드시 PROCESS_VM_WRITE 와 PROCESS_VM_OPERATION 권한을 가져야한다. lpBaseAddress 데이터 쓰기를 시작할 프로세스의 메모리주소이다. 데이터 쓰기를 시작하기전 시스템은 지정된 크기의 주소와 메모리의 모든 쓰기 접근이 가능한지 확인하고, 접근할 수 없는경우 함수는 실패한다. lpBuffer ..

프로그래밍/WinAPI

VirtualAllocEx 함수

LPVOID VirtualAllocEx(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect); VirtualAllocEx 함수는 특정 프로세스의 가상 주소 공간 내에서 메모리 영역의 상태를 변경, 할당, 해제하고, 할당하는 메모리를 0으로 초기화한다. hProcess 특정 프로세스의 핸들이며 이 프로세스의 가상 주소 공간 안에 메모리 영역을 할당한다. 이 핸들은 반드시 PROCESS_VM_OPERTATION 권한을 가지고 있어야한다. 권한에 대한 자세한 정보는 MSDN 에서 확인할 수 있다. lpAddress 할당할 페이지 영역에 대해 시작주소를 지정하는 포인터이다. lpAddress 가 NULL..

MAJG
'kernel32' 태그의 글 목록