информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаПортрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Ростелеком заподозрили в попытке... 
 Линуксовый ботнет, распространяющийся... 
 Конец поддержки Internet Explorer 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
ну блин 05.05.06 14:04  Число просмотров: 3033
Автор: z0 <z0> Статус: Member
<"чистая" ссылка>
> Не производит. И lsass.exe и rpc-серверы (в svchost.exe с
> соответствующими dll-ками) запускаются как сервисы. А любой
> сервис в своей ServiceMain должен проинициализировать
> таблицу SERVICE_TABLE_ENTRY-ей и вызвать
> StartServiceCtrlDispatcher (эта функция кстати не
> возвращается пока не завершатся все сервисы,
> контроллируемые данным процессом).
> Это тоже так, мысли вслух

это тебя великий и могучий МСДН так учит что и как надо делать в ServiceMain
а сами вот как пишут - цитата из lsass.exe (windows 2003 std gold)

.text:01001418 _main proc near ; CODE XREF: mainNoCRTStartup()+33p
.text:01001418
.text:01001418 var_1C = dword ptr -1Ch
.text:01001418 var_4 = dword ptr -4
.text:01001418
.text:01001418 push ebp
.text:01001419 mov ebp, esp
.text:0100141B push ecx
.text:0100141C push esi
.text:0100141D push 1 ; uMode
.text:0100141F call ds:__imp__SetErrorMode@4 ; SetErrorMode(x)
.text:01001425 push offset _LsaTopLevelExceptionHandler@4 ; lpTopLevelExceptionFilter
.text:0100142A call ds:__imp__SetUnhandledExceptionFilter@4 ; SetUnhandledExceptionFilter(x)
.text:01001430 push 1
.text:01001432 push 0
.text:01001434 push 1
.text:01001436 call ds:__imp__RtlSetProcessIsCritical
.text:0100143C add esp, 0Ch
.text:0100143F push 4
.text:01001441 lea eax, [ebp+var_4]
.text:01001444 push eax
.text:01001445 push 5
.text:01001447 push 0FFFFFFFFh
.text:01001449 mov [ebp+var_4], 9
.text:01001450 call ds:__imp__NtSetInformationProcess@16 ; NtSetInformationProcess(x,x,x,x)
.text:01001456 mov esi, eax
.text:01001458 test esi, esi
.text:0100145A jl short loc_10014B7
.text:0100145C call _LsapCheckBootMode@0 ; LsapCheckBootMode()
.text:01001461 mov esi, eax
.text:01001463 test esi, esi
.text:01001465 jl short loc_10014B7
.text:01001467 call _ServiceInit@0 ; ServiceInit()
.text:0100146C mov esi, eax
.text:0100146E test esi, esi
.text:01001470 jl short loc_10014B7
.text:01001472 call _LsapInitLsa@0 ; LsapInitLsa()
.text:01001477 mov esi, eax
.text:01001479 test esi, esi
.text:0100147B jl short loc_10014B7
.text:0100147D call _SamIInitialize@0 ; SamIInitialize()
.text:01001482 mov esi, eax
.text:01001484 test esi, esi
.text:01001486 jl short loc_10014B7
.text:01001488 call _LsapDsInitializePromoteInterface@0 ; LsapDsInitializePromoteInterface()
.text:0100148D mov esi, eax
.text:0100148F test esi, esi
.text:01001491 jl short loc_10014B7
.text:01001493 push 1
.text:01001495 call _LsapAuOpenSam@4 ; LsapAuOpenSam(x)
.text:0100149A mov esi, eax
.text:0100149C test esi, esi
.text:0100149E jl short loc_10014B7
.text:010014A0 call _SampUsingDsData@0 ; SampUsingDsData()
.text:010014A5 xor ecx, ecx
.text:010014A7 test al, al
.text:010014A9 setnz cl
.text:010014AC inc ecx
.text:010014AD mov eax, ecx
.text:010014AF push eax
.text:010014B0 call _LsapDsInitializeDsStateInfo@4 ; LsapDsInitializeDsStateInfo(x)
.text:010014B5 mov esi, eax
.text:010014B7
.text:010014B7 loc_10014B7: ; CODE XREF: _main+42j
.text:010014B7 ; _main+4Dj ...
.text:010014B7 push esi
.text:010014B8 call _LsapNotifyInitializationFinish@4 ; LsapNotifyInitializationFinish(x)
.text:010014BD push esi ; dwExitCode
.text:010014BE call ds:__imp__ExitThread@4 ; ExitThread(x)
.text:010014C4 int 3 ; Trap to Debugger
.text:010014C5

StartServiceCtrlDispatcher вызывается из отдельного треда, созданного внутри samsrv!ServiceInit()
чтобы не ждать пока она действительно не возвращается
он там спокойно не спеша полазит по реестру, инициализирует все свои RPC-шки
а основной поток lsass сразу на старте как хорошо видно выходит по ExitThread
спорим на поллитра?
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach