среда, 12 октября 2011 г.

LsaIRegisterPolicyChangeNotificationCallback

а вот например в lsasrv.dll есть такая традиционно недокументированная ф-ция, которая умеет регистрировать указатель на ф-цию. Соотв-но было бы весьма неплохо посмотреть чего там зарегистрировано всякими разными
Например из дизасма очевидно что для хранения callbacks используется массив LsaPolicyChangeNotificationList, который состоит из 8 (под w7 & w8 - 9) структур

struct PolicyChangeNotification
{
  struct _LIST_ENTRY List;
  ULONG Count;
};

List соотв-но хранит уже непосредственно структуры, описывающие callback - примерно такие:

struct PolicyChangeNotification_item
{
/* Win32 Win64 */
/*  0x0  0x0  */  struct _LIST_ENTRY ListLink;
/*  0x8  0x10 */  PBYTE  function_cb;
/*  0xC  0x18 */  PBYTE  unk1;
/* 0x10  0x20 */  PBYTE  unk2;
/* 0x14  0x28 */  PBYTE  unk3;
};

По моему навигация по этим структурам представляет собой тривиальную задачу, так же как их нахождение
Результаты на моей рабочей машине например

  PolicyChangeNotificationCallback[2]: 2 items
   [1] 744794A3 C:\WINDOWS\system32\SAMSRV.dll
 PolicyChangeNotificationCallback[3]: 1 items
 PolicyChangeNotificationCallback[4]: 10 items
   [0] 7574C494 C:\WINDOWS\system32\LSASRV.dll
   [1] 71D1593B C:\WINDOWS\system32\kerberos.dll
   [2] 744B907A C:\WINDOWS\system32\netlogon.dll
   [3] 77C8B4FB C:\WINDOWS\system32\msv1_0.dll
   [5] 75747A21 C:\WINDOWS\system32\LSASRV.dll
 PolicyChangeNotificationCallback[5]: 1 items
   [0] 75774D2B C:\WINDOWS\system32\LSASRV.dll

Комментариев нет:

Отправить комментарий