개요

Sakura 는 기동중 특정한 메모리 오브젝트를 계속 보관 유지합니다. Sakura 외의 프로세스는 이러한 메모리 오브젝트로부터 정보를 취득/해석하는 것으로써, 본래 얻을 수 없는 정보를 얻거나 혹은 같은 정보를 보다 저비용으로 (시스템에 무리가 되지 않는 방법으로) 얻거나 할 수가 있습니다.

※ 모두 로컬 머신내에서의 이야기입니다. 네트워크를 넘어서는 확인할 수 없습니다.

사양 - MUTEX

Sakura 는 기동중 "sakura" 라는 이름의 MUTEX 오브젝트를 보관 유지합니다. 즉 이 오브젝트가 있는지를 체크하는 것으로 지극히 Low cost에 Sakura 의 존재를 판정 할 수 있습니다.

예제 코드

  ...
  hmutex=OpenMutex(MUTEX_ALL_ACCESS, FALSE,"sakura");
  if (hmutex==0) {
    // 없다
  } else {
    // 있다
  CloseHandle(hmutex);
  }
  ...

  ...
  hmutex:=openmutex(mutex_all_access, false, 'sakura');
  if (hmutex=0) then begin
    // 없다
  end else begin
    // 있다
    closehandle(hmutex);
  end;

사양 - file mapping object

Sakura 는 기동중 "Sakura" 라는 이름의 filemapping object 를 보관 유지합니다. 이 메모리내에는 현재 로컬 머신으로 가동하고 있는 Sakura 프로세스의 리스트, 각 프로세스에서 가동하고 있는 고스트명, 윈도우 핸들등을 얻을 수가 있습니다.

메모리 맵

데이터 본체의 포맷

entry[1]value[13][10] 를 1 엔트리로 하는 엔트리의 연속. 예를 들면 다음과 같은 것.

데이터의 의미

하나의 프로세스 마다 독특한 값(위의 예에서는 MD5 값 53137ee8825085dba1707e3bea9e474b)을 가지며 스코프 연산자 . 로 이어져 필드명이 기술된다. 엔트리와 값은 바이트값 1로 구분되어 CR+LF 로 1행을 끝낸다.

유효한 엔트리명은 다음과 같다.

여기서 나타나는 hwnd 는 이른바 「본체」윈도우로, 이 윈도우는 반드시 Direct SSTP 서버기능을 가지고 있지 않으면 안 된다.

메모리 맵의 크기

현재 1024*64 바이트. 이것에는 선두의 long 값도 포함되므로, 실제로 사용 할 수 있는 영역은 1024*64-4 바이트.


CategorySpec


Nanika: SpecMemoryObject (2008-08-10 19:56:18에 localhost가(이) 마지막으로 수정)