воскресенье, 31 октября 2010 г.

audiodg.exe RPC interfaces

гугл про этот интерфейс не знает вообще ничего, хе-хе
Живет внутри процесса audiodg.exe, имеет место быть только в vista (в windows7 такого уже нет. Или просто хорошо маскируется). Висит на LPC port AudioDeviceGraph
AudioDG DE3B9BC8-BEF7-4578-A0DE-F089048442DB version 1.0
7 methods:
  •  AudioDGShutdownADG
  •  AudioDGGetStartupStatus
  •  AudioDGChallenge
  •  AudioDGGetEndpointStreamVpo
  •  AudioDGGetStreamVpoDescription
  •  AudioDGSetStreamVpoPolicySchemas
  •  AudioDGCloseStreamVpo

суббота, 30 октября 2010 г.

lsm.exe RPC interfaces

Тут граждане пытаются описать всякие новые RPC интерфейсы, появившиеся в висте, но конкретно этих я там не нашел. Все интерфейсы висят на LPC port LSMApi
TermSrvPrivate 11F25515-C879-400A-989E-B074D5F092FE version 1.0
6 methods:
  •  RpcGetUserToken
  •  RpcConnectTerminal
  •  RpcSystemShutdownStarted
  •  RpcGetRequestForWinlogon
  •  RpcReportWinlogonReply
  •  RpcGetReconnectId
TermSrvAdmin 1E665584-40FE-4450-8F6E-802362399694 version 1.0
2 methods:
  •  RpcBroadcastSystemMessage
  •  RpcSendWindowMessage
TermSrvSession 484809D6-4239-471B-B5BC-61DF8C23AC48 version 1.0
0x10 methods:
  •  RpcOpenSession
  •  RpcCloseSession
  •  RpcConnect
  •  RpcDisconnect
  •  RpcLogoff
  •  RpcGetUserName
  •  RpcGetTerminalName
  •  RpcGetState
  •  RpcIsSessionDesktopLocked
  •  RpcShowMessageBox
  •  RpcGetTimes
  •  RpcGetSessionCounters
  •  RpcGetSessionInformation
  •  RpcSwitchToServicesSession
  •  RpcRevertFromServicesSession
  •  RpcGetLoggedOnCount
TermSrvNotification 11899A43-2B68-4A76-92E3-A3D6AD8C26CE version 1.0
4 methods:
  •  RpcWaitForSessionState
  •  RpcRegisterAsyncNotification
  •  RpcWaitAsyncNotification
  •  RpcUnRegisterAsyncNotification
TermSrvEnumeration 88143FD0-C28D-4B2B-8FEF-8D882F6A9390 version 1.0
0xa methods:
  •  RpcOpenEnum
  •  RpcCloseEnum
  •  RpcFilterByState
  •  RpcFilterByCallersName
  •  RpcEnumAddFilter
  •  RpcGetEnumResult
  •  RpcFilterBySessionType
  •  RpcFilterByLicenseType
  •  RpcGetSessionIds
  •  RpcGetEnumResultEx

dnsapi.dll exports

xp.sp2 и xp.sp3 совершенно одинаковы

iphlpapi.dll exports

xp.sp2 и xp.sp3 совершенно одинаковы

lsasrv.dll RPC interfaces

ковырялось на vista sp2 32бита. Я знаю что это ацкий баян, но как ни странно там описаны далеко не все методы например lsarpc
Все перечисленные ниже интерфейсы висят на следующих endpoints внутри процесса lsass.exe:
  • pipe\lsass
  • pipe\protected_storage
  • LPC port protected_storage
  • LPC port audit
  • LPC port samss lpc
  • LPC port securityevent
s_ICryptProtect 11220835-5b26-4d94-ae86-c3e475a809de version 1.0
3 methods:
  •  s_SSCryptProtectData
  •  s_SSCryptUnprotectData
  •  s_SSCryptUpdateProtectedState
s_PasswordRecovery 5cbe92cb-f4be-45c9-9fc9-33e73e557b20 version 1.0
3 methods:
  •  s_SSRecoverQueryStatus
  •  s_SSRecoverImportRecoveryKey
  •  s_SSRecoverPassword
dssetup 3919286A-B10C-11D0-9BA8-00C04FD92EF5 version 0.0
1 method:
  •  DsRolerGetPrimaryDomainInformation
efsrpc C681D488-D850-11D0-8C52-00C04FD90F7E version 1.0
0x15 methods:
  •  EfsRpcOpenFileRaw
  •  EfsRpcReadFileRaw
  •  EfsRpcWriteFileRaw
  •  EfsRpcCloseRaw
  •  EfsRpcEncryptFileSrv
  •  EfsRpcDecryptFileSrv
  •  EfsRpcQueryUsersOnFile
  •  EfsRpcQueryRecoveryAgents
  •  EfsRpcRemoveUsersFromFile
  •  EfsRpcAddUsersToFile
  •  EfsRpcSetFileEncryptionKey
  •  EfsRpcNotSupported
  •  EfsRpcFileKeyInfo
  •  EfsRpcDuplicateEncryptionInfoFile
  •  EfsUsePinForEncryptedFiles
  •  EfsRpcAddUsersToFileEx
  •  EfsRpcFileKeyInfoEx
  •  EfsRpcGenerateEfsStream
  •  EfsRpcGetEncryptedFileMetadata
  •  EfsRpcSetEncryptedFileMetadata
  •  EfsRpcFlushEfsCache
lsarpc 12345778-1234-ABCD-EF00-0123456789AB version 0.0
0x66 methods:
  •  LsarClose
  •  LsarDelete
  •  LsarEnumeratePrivileges
  •  LsarQuerySecurityObject
  •  LsarSetSecurityObject
  •  LsarChangePassword
  •  LsarOpenPolicyRPC
  •  LsarQueryInformationPolicy
  •  LsarSetInformationPolicy
  •  LsarSetPolicyReplicationHandle
  •  LsarCreateAccount
  •  LsarEnumerateAccounts
  •  LsarCreateTrustedDomain
  •  LsarEnumerateTrustedDomains
  •  LsarLookupNames
  •  LsarLookupSids
  •  LsarCreateSecret
  •  LsarOpenAccount
  •  LsarEnumeratePrivilegesAccount
  •  LsarAddPrivilegesToAccount
  •  LsarRemovePrivilegesFromAccount
  •  LsarGetQuotasForAccount
  •  EfsSsoOnReconnect_WL
  •  LsarGetSystemAccessAccount
  •  LsarSetSystemAccessAccount
  •  LsarOpenTrustedDomain
  •  LsarQueryInfoTrustedDomain
  •  LsarSetInformationTrustedDomain
  •  LsarOpenSecret
  •  LsarSetSecret
  •  LsarQuerySecret
  •  LsarLookupPrivilegeValue
  •  LsarLookupPrivilegeName
  •  LsarLookupPrivilegeDisplayName
  •  LsarDeleteObject
  •  LsarEnumerateAccountsWithUserRight
  •  LsarEnumerateAccountRights
  •  LsarAddAccountRights
  •  LsarRemoveAccountRights
  •  LsarQueryTrustedDomainInfo
  •  LsarSetTrustedDomainInfo
  •  LsarDeleteTrustedDomain
  •  LsarStorePrivateData
  •  LsarRetrievePrivateData
  •  LsarOpenPolicy2
  •  LsarGetUserName
  •  LsarQueryInformationPolicy2
  •  LsarSetInformationPolicy2
  •  LsarQueryTrustedDomainInfoByName
  •  LsarSetTrustedDomainInfoByName
  •  LsarEnumerateTrustedDomainsEx
  •  LsarCreateTrustedDomainEx
  •  LsarSetPolicyReplicationHandle
  •  LsarQueryDomainInformationPolicy
  •  LsarSetDomainInformationPolicy
  •  LsarOpenTrustedDomainByName
  •  LsaITestCall
  •  LsarLookupSids2
  •  LsarLookupNames2
  •  LsarCreateTrustedDomainEx2
  •  CredrWrite
  •  CredrRead
  •  CredrEnumerate
  •  CredrWriteDomainCredentials
  •  CredrReadDomainCredentials
  •  CredrDelete
  •  CredrGetTargetInfo
  •  CredrProfileLoaded
  •  LsarLookupNames3
  •  CredrGetSessionTypes
  •  LsarRegisterAuditEvent
  •  LsarGenAuditEvent
  •  LsarUnregisterAuditEvent
  •  LsarQueryForestTrustInformation
  •  LsarSetForestTrustInformation
  •  CredrRename
  •  LsarLookupSids3
  •  LsarLookupNames4
  •  LsarOpenPolicySce
  •  LsarAdtRegisterSecurityEventSource
  •  LsarAdtUnregisterSecurityEventSource
  •  LsarAdtReportSecurityEvent
  •  CredrFindBestCredential
  •  LsarSetAuditPolicy
  •  LsarQueryAuditPolicy
  •  LsarEnumerateAuditPolicy
  •  LsarEnumerateAuditCategories
  •  LsarEnumerateAuditSubCategories
  •  LsarLookupAuditCategoryName
  •  LsarLookupAuditSubCategoryName
  •  LsarSetAuditSecurity
  •  LsarQueryAuditSecurity
  •  CredrReadByTokenHandle
  •  CredrRestoreCredentials
  •  CredrBackupCredentials
  •  LsarManageSidNameMapping
  •  CredrProfileUnloaded
  •  LsarAddLanmanConnection
  •  LsarCancelLanmanConnection
  •  LsarAddDfsConnection
  •  LsarCancelDfsConnection
  •  LsarIsDfsConnectionInUse
Update: под windows 7 в lsasrv.dll добавился еще один RPC interface
S_LSP_PRIVATE_DATA ACE1C026-8B3F-4711-8918-F345D17F5BFF version 1.0
2 methods:
  •  S_RPC_LspUpdatePrivateData
  •  S_RPC_LspReadPrivateData

    пятница, 29 октября 2010 г.

    lsasrv.dll exports

    одна из самых загадочных .dll в виндах - документация на нее практически отсутствует

    срывая покровы

    а вот давеча например читая древнее третье издание Руссиновича и Соломона (книжка 2000 года издания) наткнулся на любопытное описание некой запчасти к IIS (версии 4.0 если мне склероз не изменяет) - драйвер spud.sys, жывущий в ядре и типа ускоряющий работу IIS. И что-то это мне сильно напомнило - например линуксовый TUX. И полез я немедленно в гугл выяснять кто из них был раньше
    Список рассылки tux-list на redhate - TUX 1.0 released 30 сентября 2000 года. Пруфлинк
    IIS 4.0 вышел в 1998ом году. Пруфлинк
    Там впрочем про spud.sys ни слова не сказано, но вот есть например такая ссылка - там файл spud.sys датируется апрелем 1999 года
    Чо-то как-то не верится мне что линуксоиды не видели его в действии и не слизали идею

    среда, 27 октября 2010 г.

    rpcdump bug

    нашел давеча в rpcdump баг - утечку памяти и ресурсов
    Граждане не вызывают RpcMgmtEpEltInqDone после RpcMgmtEpEltInqBegin как советует документация.
    Так что при запуске в отдельном быстро дохнущем процессе оно незаметно, но если тот же код скопипастить в свой сервис, который дергает опрос rpc интерфейсов периодически, то через некоторое время почувствуете легкое недомогание будет заметна утечка памяти

    понедельник, 18 октября 2010 г.

    ncalrpc interfaces under vista

    а меж тем моя тулза для обнюхивания RPC интерфейсов практически работает и выдает под vista 32бита примерно следующее

    Masterminds of Programming

    читаю давеча subj - автор forthа Chuck Moore дичайше отжигает (и практически разжигает):
    The operating system is another concept that is curious.Operating systems are dauntingly complex and totally unnecessary. It’s a brilliant thing that Bill Gates has done in selling the world on the notion of operating systems. It’s probably the greatest con game the world has ever seen.
    An operating system does absolutely nothing for you. As long as you had something - a subroutine called disk driver,a subroutine called some kind of communication support, in the modern world, it doesn’t do anything else.In fact,Windows spends a lot of time with overlays and disk management all stuff like that which are irrelevant.You’ve got gigabyte disks; you’ve got megabyte RAMs. The world has changed in a way that renders the operating system unnecessary.
    Дедушка дико крут:
    Some 20 years ago I wanted to develop a tool to design VLSI chips. I didn’t have a Forth for my new PC, so I thought I’d try a different approach: machine language. Not assembler language, but actually typing the hex instructions.
    I built up the code as I would in Forth, with many simple words that interacted hierarchically. It worked. I used it for 10 years. But it was difficult to maintain and document. Eventually I recoded it in Forth and it became smaller and simpler.
    Учитывая что интервью взято в 2007 году - дедушке в 87ом, когда он вколачивал тонны hex-codes было почти 50 лет между прочим ! а вы говорите - dwordы в уме ксорить
    Дедушка предсказывает конец света:
    Legacy software is an unappreciated but serious problem.It will only get worse -not only in banking but in aerospace and other technical industries. The problem is the millions of lines of code. Those could be recoded, say in thousands of lines of Forth. There’s no point in machine translation, which would only make the code bigger. But there’s no way that code could be validated. The cost and risk would be horrendous. Legacy code may be the downfall of our civilization.
    Дедушка проповедует:
    Don’t anticipate.Don’t solve a problem that you think might occur in the future. Solve the problem you’ve got. Anticipating is very inefficient. You can anticipate 10 things happening, of which only one will, so you’ve wasted a lot of effort.
    Team work - much overrated. The first job of a team is to partition the problem into relatively independent parts. Assign each part to an individual. The team leader is responsible for seeing that the parts come together.
    Sometimes two people can work together. Talking about a problem can clarify it. But too much communication becomes an end in itself. Group thinking does not facilitate creativity. And when several people work together, inevitably one does the work
    Авторам компиляторов тоже досталось:
    Compilers are probably the worst code ever written.They are written by someone who has never written a compiler before and will never do so again. Another failing of compiler writers is the compulsion to use every special character on the keyboard. Thus keyboards can never become smaller and simpler. And source code becomes impenetrable
     Горячий привет авторам APL, бгг

    пятница, 15 октября 2010 г.

    port & alpc port owners

    Я тут уже писал как можно получить список локальных RPC портов.В этом способе нет абсолютно ничего примечательного - через NtOpenDirectoryObject открываем директорию L"\\RPC control" и читаем с помощью NtQueryDirectoryObject пока не вернется STATUS_NO_MORE_ENTRIES.
    Но еще хотелось бы иметь PID процесса-владельца этих ресурсов. Чтение доки не особо помогло - например есть такая официальная функция nt api ZwQueryInformationPort, которая имеет ровно один более чем бессмысленный classinfo PORT_INFORMATION_CLASS
    Пришлось как обычно кряхтя слазить с печи и делать все самому

    четверг, 14 октября 2010 г.

    IDA Pro 6.0

    пробовал сегодня днем поработать с новой версией IDA - это ужас и тихий кошмар
    Все доведенные до автоматизма последовательности нажатий кнопок - не работают больше.
    Например чтобы выйти без сохранения базы обычно жмется Alt-X, 2 раз Tab, пробел и Enter. Хрен там - теперь эта знакомая комбинация приводит к вызову Help. Без мыши теперь вообще ничего сделать не получается (по крайней мере старыми проверенными временем комбинациями кнопок). Особенно раздражает поведение gui на нажатие ctrl + tab

    Полез смотреть changelog - чо же там настолько ценного появилось чтобы терпеть эти мучения:
    • новый GUI - см. выше
    • новые камни - обычному пользователю такие сроду не встретятся (ну кроме arm может быть)
    • новые форматы файлов - треш какой-то, давно пора сделать нормальный биндинг к binutils
    • вот это дико понравилось -
      FLIRT: added parser for Mach-O object files (pmacho)
      Примерно часа три работы небось ушло на переточку otool из darwin cctools
    • Показ в отладчике stack frames, сломанный во всех версиях 5.x - так и не починили. Зато:
      debugger: non-integer register values can be displayed as hints
      Угарнейшее достижение, угу
    Дичайше негодую ! Так и придется для серьезной работы на 4.90 сидеть антиквариат рулит

      вторник, 12 октября 2010 г.

      кинохроники

      а вот например любите ли вы смотреть всякие старые кинохроники ?
      вот тащемта давеча смотрю я в пол-уха world war II in color: USA in war и дико выпадаю в осадок от следующей фразы
      К концу 1942ого года в армию США было призвано более 3х миллионов человек. Армейские дантисты выдрали у них почти 15 миллионов гнилых зубов
      Несложные расчеты показывают что это просто ад и содомия какая-то

      понедельник, 11 октября 2010 г.

      wtf ?

      вот например скопировал VBox image с vista 32бита с одной машины на другую - все настройки и версия VBox совершенно одинаковы
      На одной машине все отлично работает, а на другой падает в bsod:
      FAULTING_IP:
      dfsc!DfscFsctrlGetNetUses+4d
      8e151dcf f7402000004000  test    dword ptr [eax+20h],400000h ; в eax конечно-же 0

      ERROR_CODE: (NTSTATUS) 0xc0000005

      STACK_TEXT: 
      80c2ec04 8e15340c 83b255e8 83eeb9a8 00000010 dfsc!DfscFsctrlGetNetUses+0x4d
      80c2ec2c 818809c6 83b56c98 00000420 83b255e8 dfsc!DfscFileSystemControl+0xe8
      80c2ec44 81a827a3 83c6ed10 83b255e8 83b25658 nt!IofCallDriver+0x63
      80c2ec64 81a82f48 83b56c98 83c6ed10 000ea501 nt!IopSynchronousServiceTail+0x1d9
      80c2ed00 81a81c2e 83b56c98 83b255e8 00000000 nt!IopXxxControlFile+0x6b7
      80c2ed34 81886c7a 00000268 00000000 00000000 nt!NtFsControlFile+0x2a
      80c2ed34 77c85e74 00000268 00000000 00000000 nt!KiFastCallEntry+0x12a
      03c4fc28 77c84980 72992547 00000268 00000000 ntdll!KiFastSystemCallRet
      03c4fc2c 72992547 00000268 00000000 00000000 ntdll!NtFsControlFile+0xc
      03c4fc7c 729924a6 00000268 03c4fca8 03c4fca4 ntlanman!CDfsEnumConnectedNode::DfspGetNetUseEntryByIndex+0x65
      03c4fc9c 72992414 00000000 00000000 00000268 ntlanman!CDfsEnumConnectedNode::CDfsEnumConnectedNode+0xa4
      03c4fcbc 72992364 00000001 00000001 00000000 ntlanman!USE_ENUMNODE::USE_ENUMNODE+0x44
      03c4fce4 75c93077 00000001 00000001 00000000 ntlanman!NPOpenEnum+0x2ed
      03c4fd28 75c931cb 00000001 00000001 00000000 MPR!MprOpenEnumConnect+0x164
      03c4fdac 76aeaba2 00000001 00000001 00000000 MPR!WNetOpenEnumW+0x17a
      03c4fde0 76aeab28 00000001 00000001 00000000 SHELL32!CMountPoint::_InitNetDrivesHelper+0x29
      03c4fe00 76ae8439 00000000 76e572b8 00000000 SHELL32!CMountPoint::_InitNetDrives+0x58
      03c4fe1c 76b784a1 00000000 00000000 00000000 SHELL32!CMountPoint::_IsNetDriveLazyLoadNetDLLs+0x3c
      03c4fe48 76b77a8c 00000000 00000000 00000000 SHELL32!CMountPoint::_GetMountPointForDriveLetter+0x1d
      03c4fe5c 76b5be34 00000000 00000000 00000000 SHELL32!CMountPoint::GetMountPoint+0x2b
      03c4fe70 77bdc2c9 00000000 00000000 00000000 SHELL32!CheckDiskSpaceThreadProc+0xd
      WARNING: Stack unwind information not available. Following frames may be wrong.
      03c4fef4 7764d0e9 0185f84c 03c4ff40 77c619bb SHLWAPI!Ordinal197+0xe1
      03c4ff00 77c619bb 0185f84c 740a2be4 00000000 kernel32!BaseThreadInitThunk+0xe
      03c4ff40 77c6198e 77bdc224 0185f84c 00000000 ntdll!__RtlUserThreadStart+0x23
      03c4ff58 00000000 77bdc224 0185f84c 00000000 ntdll!_RtlUserThreadStart+0x1b

      Никто не сталкивался с такою бедою ?

      суббота, 9 октября 2010 г.

      oracle собирается купить amd

      пруфлинк
      надо было интелу вместо покупки mcafee (вместе с бездарным графоманом пыщхом) тоже какую-нть базу данных прикупить, бгг

      пятница, 8 октября 2010 г.

      open source

      золотые слова: фриварь культивирует тотальную безответственность разработчика перед потребителем!
      Именно так - и еще их клинические навязчивые идеи про эффект тысячи глаз и прочие биологические уродства
      Особенно показателен например топик на lor про выход IDA Pro 6.0 - комменты там шедевральны, я ржал как подорванный:
      для отладки есть GDB
      бгг

      rpcss under windows 7

      А вот например список rpc интерфейсов, которые регистрирует rpcss.dll под windows7:
      • IActivationKernel {9B8699AE-0E44-47B1-8E7F-86A461D7ECDC}
      • ILocalObjectExporter {E60C73E6-88F9-11CF-9AF1-0020AF6E72F4}
      • IOXIDResolver {99FCFEC4-5260-101B-BBCB-00AA0021347A}
      • ISCM {412F241E-C12A-11CE-ABFF-0020AF6E7A17}
      • ISCMActivator {00000136-0000-0000-C000-000000000046}
      • IMachineActivatorControl {C6F3EE72-CE7E-11D1-B71E-00C04FC3111A}
      • IRemoteActivation {4D9F4AB8-7D1C-11CF-861E-0020AF6E7C57}
      • ISystemActivator {000001A0-0000-0000-C000-000000000046}
      • IROT {B9E79E60-3D52-11CE-AAA1-00006901293F}
      А epmp {e1af8308-5d1f-11c9-91a4-08002b14a0fa} и localepmp {0b0a6584-9e0f-11cf-a3cf-00805f68cb1b} там и нету. Начинаю испытывать легкое беспокойство

      Update: под windows7 epmp, localepmp и DbgIdl живут в модуле RpcEpMap.dll

      windbg & rpc

      наткнулся тут давеча на очередной высер пыщъха - якобы windbg можно использовать как RPC monitor. Проверить изложенное проще простого:
      !load rpcexts
      !getendpointinfo
      Searching for endpoint info ...
      OpenRPCDebugEndpointInfoEnumeration failed: 1734
      !listcalls
      RPC_SERVER at 0x15c980
      &RpcAddressDictionary(RPC_SIMPLE_DICT) - 0x15c980
      Unable to get field cDictSize of type SIMPLE_DICT at 0x15c980
      Более того - ровно то же самое windbg выдает на vista checked build.
      Интересно он вообще проверяет хоть что-нть в своих обширных простынях, описывающих поток нездорового сознания ? Никогда не пытайтесь использовать русскоязычное мычание странных персонажей - всегда нужно сверяться с более правильными источниками

      понедельник, 4 октября 2010 г.

      hal.dll exports

      xp sp2 & xp sp3 и vista sp1 & vista sp2 совершенно идентичны

      RPC servers hijack

      Внезапно придумал тут предельно простой и наверняка дико баянистый способ зная UUID RPC интерфейса найти его DispatchTable с адресами функций и сделать с ними всякое.
      Для начала давайте внимательно посмотрим на прототип функции RpcServerRegisterIf2

      ept_lookup

      я тут все выходные бухал и гадил в комментах ломал голову над одним простым вопросом - вот например у нас есть GUID RPC интерфейса и мы хотим подключиться по сети к некоей машине, на которой как мы считаем есть этот RPC сервер. Через какой именно механизм мы сможем найти порт/транспорт, куда нужно дико ломиться например ?
      Посему выходные были безнадежно испорчены проведены в отладчике и дизассемблере, зато теперь я в общих чертах знаю ответ но вам не скажу - через загадочный сервис rpcss, который сама MS в целях конспирации называет почему-то "Distributed COM Services" (так в version info rpcss.dll написано, ага)
      Итого механизм примерно такой - rpcss.dll слушает named pipe с именем epmapper (рекомендую погуглить - результаты феерические), на котором висит интерфейс Endpoint Mapper
      Дальше дело техники и опыта, по крайней мере теперь известно в каком модуле и примерно куда можно ставить грязные хуки и все такое. С другой стороны эту IFObjList извлечь стат. анализом весьма непросто будет
      Насколько я понял в той же rpcss.dll живет и другая полезная штука - Running Object Table

      Дичайше поражает в механизме RPC практически полное отсутствие документации - например интерфейс Endpoint Mapper якобы описан в некоей книге DCE 1.1: Remote Procedure Call, которую якобы можно скачать нахаляву, но при этом требуют номер телефона и вообще слишком много персональных данных.
      Руссинович в своем 5ом издании (в 3ем впрочем тоже) посвятил RPC целых 5 (!) страниц и ровно 2 картинки. А власти скрывают !

      Самое угарное что при регистрации этого интерфейса в rpcss перед вызовом стандартной RpcServerRegisterIf2 вызывается некая традиционно недокументированная функция I_RpcSystemFunction001, бгг