본문 바로가기

프로그래밍

정보보안 과제 과제로 만든 TCP연결 포트 스캔 프로그램.. 더보기
Lex 와 Yacc Lex 와 Yacc 설명 http://dinosaur.compilertools.net/ http://www.therobs.com/uman/lexyacc.shtml Flex와 Bison의 다운로드 링크만 있는데 Lex, Yacc FAQ(http://www.therobs.com/uman/faq.shtml)를 보면 Flex and Bison are essentially compatible GNU versions of Lex and Yacc. Flex also supports C++ class generation and actions. Flex와 Bison은 Lex, Yacc의 GNU 버전과 본질적으로 호환됩니다. Flex 역시 C++ 클래스 생성과 활용도 지원합니다. Flex와 Bison의 Win32 포팅은 .. 더보기
[COM] Moniker 각 타입별 이름 짓는 규칙을 표준화된 모니커 인터페이스를 통해서 지을 수 있도록 함 시스템 모니커 종류 : 이름 짓는 객체에 대해 추가의 정보 필요 파일 모니커 : CreateFileMoniker 아이템 모니커 : CreateItemMoniker 포인터 모니커 : CreatePointerMoniker 안티 모니커 : CreateAntiMoniker 복합 모니커 : CreateGenericComposite 클래스 모니커 : CreateClassMoniker URL 모니커 : CreateURLMoniker OBJREF 모니커 : CreateObjrefMoniker 커스텀 모니커 IMoniker 인터페이스 구현 IBindCtx ( 바인드 컨텍스트 ) 모니커 바인딩 동작에 대한 정보를 가지고 있는 객체 IMon.. 더보기
[COM] Persistense COM 객체에 영속성을 부여하기 위한 방법 IPersist COM 객체가 영속성 객체임을 구현 인터페이스를 상속받은 인터페이스 IPersistStream : 스트림 사용 IPersistStreamInit : IPersistStream에서 초기화를 위해 InitNew 메쏘드 추가 IPersistMemory : 스트림 대신에 메모리 IPersistStorage : 스토리지를 사용 IPersistFile : 파일을 사용 IPersistPropertyBag2 : 프로퍼티 백 사용 ( ActiveX 콘트롤 속성값 ) IPersistMoniker : 모니커 사용 IPersistHistory : 사용자 웹사이트 히스토리 저장(익스플로러) 위 인터페이스를 COM 객체에 구현하여 영속성을 부여 함 ATL에서는 위 인터페.. 더보기
[COM] Type Library 타입 라이브러리는 인터페이스 정의의 이진 형식 IDL정의시 library 키워드 사용 타입 라이브러리 생성 // 타입 라이브러리 파일 생성 ICreateTypeLib2 * pCreateTypeLib2; CreateTypelib2(SYS_WIN32, L"C:\\mylib.tlb",&pCreateTypeLib2); // 타입 정보 추가 ICreateTypeInfo * pCreateTypeInfoInterface; pCreateTypeLib2->CreateTypeInfo(L"IUser", TKIND_INTERFACE, &pCreateTypeInfoInterface); 타입 정보 얻기 ITypeLib* pTypeLib; LoadRegTypeLib(LIBID_User, 1, 0, LANG_NEUTRAL, &pTy.. 더보기
[COM] Component Category 인터페이스가 많아지면 규모성의 문제가 생김 -> 특정 인터페이스들을 지원하는 컴포넌트를 카테고리 별로 분류 클라이언트 프로그램은 레지르스트리를 빠르게 검색하여 특정 카테고리를 지원하는 컴포넌트를 구별하여 인스턴스화 함 카테고리 구별자 CATID HKEY_CLASSES_ROOT > Component Categories HKEY_CLASSES_ROOT > CLSID 컴포넌트 객체는 Implemented Categories 레지스트리 키를 사용하여 자신이 지원하는 컴포넌트 카테고리들을 알린다. 컴포넌트 객체는 Required Categories 레지스트리 키를 사용하여 자신이 받아들일 수 있는 클라이언트의 카테고리를 알린다. ( 객체에 접근할 수 있는 클라이언트를 매우 제한하여 버리기 때문에 조심해서 사용 ).. 더보기
[COM] 오토메이션 타입 정리 헬퍼함수는 MSDN색인으로 나오지 않아서 따로 정리 하였습니다.Variant 오토메이션 호환 타입들의 Union헬퍼함수 VariantChangeType(Ex) VariantClear VariantCopy VariantCopyInd VariantInitATL 클래스 CComVariantBSTR 문자열 길이를 접두어로 포함하는 문자열헬퍼함수 SysAllocString SysAllocStringByteLen SysAllocStringLen SysFreeString SysReAllocString SysReAllocStringLen SysStringByteLen SysStringLenATL클래스 CComBSTRSafeArray 안전하게 다룰 수 있는 배열헬퍼함수 SafeArrayAccessData SafeArra.. 더보기
[COM] SafeArray 처리 #include using namespace std; #include #include void ComCall(VARIANT* pRetVal) { enum { ARR_SIZE = 5 }; VariantInit(pRetVal); short ia[ARR_SIZE] = {5, 6, 7, 8, 9 }; //넘기고자 하는 배열 SAFEARRAYBOUND sab = { ARR_SIZE, 0 }; SAFEARRAY* pSa = SafeArrayCreate(VT_VARIANT, 1, &sab); _variant_t* _p; // 만든 SA배열에 포인터를 연결시킴 SafeArrayAccessData(pSa, reinterpret_cast(&_p)); for (long i = 0; i vt = VT_VARIANT | VT_.. 더보기