본문 바로가기

반응형

Windows

(5)
Writing a Windows Service Program 얼마 전 리눅스의 데몬(Daemon)이라는 것에 대해 약간이나마 공부를 해야 할 일이 있었습니다. 그리고 그 과정에서 윈도우에서는 그와 비슷한 서비스라는 것이 있다는 것을 알았습니다. 이번 포스팅에서는 서비스 프로그램을 작성하는 방법에 대해 알아 보도록 하겠습니다. 원문은 코드구루(http://www.codeguru.com)의 'Writing a Service Program(Jonathan Ng)' 을 기본으로 하고 있습니다. 윈도우 서비스란? 윈도우 운영 체제에서 '서비스(services)'라는 것은 일반적으로 시스템 부팅시점 부터 시작해 시스템이 끝나는 시점 까지 그 수명을 같이 하는 프로세스를 가리키기도 합니다. 예를 들어 윈도우 베이스 프로그램과 컴포넌트가 남기는 로그를 기록해주는 '로그 이벤트'..
ACL을 이용한 적절한 사용 권한 설정 1. ACL이 중요한 이유는? ACL(Access Control List)은 개개의 사용자들이 디렉토리나 파일과 같은 특정 시스템 개체에 접근할 수 있는 권한을 설정해 놓은 표이다. 공격자(해커)가 리소스에 접근 할 수 있다면 게임 끝이다. “만약 레지스트리키의 ACL이 Everyone에게 모든 권한 허용으로 설정 되어 있으면, 누구나 해당 레지스트리의 키 데이터를 읽고, 쓰고 심지어는 다른 사람의 접근을 차단 할 수 있다” ACL을 이용해 리소스에 대한 접근 권한을 설정 해 두지 않으면 예측하지 못한 다양한 방법 공격이 가능하다. ex) 64byte 로 지정된 버퍼에 더 많은 데이터를 써버려 오버런 발생 대량의 데이터를 읽고 쓰게 강제 2. ACL의 구성 ACE(Access Control Entry) ..
Handle leak 찾기 이 글의 대상은 윈도우 프로그래밍에 대해서 어느 정도 이해를 하고 있는 사람들을 대상으로 합니다. 기본적으로 핸들과 커널 오브젝트에 대한 개념에 대해 알고 있어야 하며(모른다면 여기로), 디버깅에 대해서 약간의 기본적 지식을 가지고 계시는 것이 좋습니다. 본 포스트는 디버깅에 관련된 툴들의 사용법에 대해서 다루고 있으며, 자세한 사용법 보다는 기본적인 사용법위주로 문제 해결에 관련된 부분만 다루고 있습니다. 보다 자세한 정보를 원하시면 해당 툴에 관련된 링크를 따라 가시면 많은 도움이 될 것입니다. 프로그래밍을 하다 보면 원하든 원하지 않든(거의 이 경우가 대부분이만) 종종 자원을 흘리고 다니는 경우가 있다. 여기서 말하는 자원이란 것은 파일이든, 메모리든 핸들이든 여러가지가 될 수 있지만 오늘은 특히 ..
DLL에서 EXE의 함수 호출하기 들어가며 일반적으로 EXE에서 로드된 DLL의 함수를 호출하는 것은 일반적인 일이다. 하지만 플러그인 프로그램이나 기타 다른 이유로 인해 DLL에서 EXE의 함수를 호출 해야하는 경우가 있다. 이 문서는 그런 경우 유용한 팁을 소개하고 있다. 이 문서는 윈도우에서 DLL을 만들고 로드 하는 방법을 알고 있다는 가정하에 작성 된 것이므로 DLL프로젝트의 생성이나 로드 방법에 대해서는 자세하게 다루지 않는다. 1. 함수를 exporting하는 exe 만들기 exe에서 함수를 export하는 것은 dll에서 하는 그것과 동일한 작업을 하면 된다. extern "C" { __declspec(dllexport) void ExportFunctionFromEXE(const std::string& callFrom) {..
커널 오브젝트 - 핸들 /** 갈 수록 윈도우와 리눅스 사이에서 왔다 갔다 해야 할 일이 많아 지고 있다. 오늘은 윈도우의 커널 오브젝트(Kernel Object)라는 것에 대해서 알아 보도록 하자. */ 유저 모드와 커널 모드 '커널 오브젝트'에 대해 알아보기 전에 '유저 모드'와 '커널 모드'의 실행이라는 것에 대해서 알아 보도록 하자. 프로그램을 실행하게 되면 사용자가 직접 접근할 수 있는 유저 영역과 시스템 콜등을 통해서만 접근할 수 있는 커널 영역이 있다. 주로 커널 영역에는 운영체제, 프로세스간에 공유되는 데이터들이 보존되어 함부로 메모리 억세스를 할 수 없도록 제한하고 굳이 그 자원을 사용하기 위해서는 필수적으로 커널에게 자원을 요청하여 그에 대해 구분 할 수 있는 무엇인가를 얻어와 커널의 허가 아래서 사용해야 한..

반응형