Проблемы при создании сервиса.. Error - 1083..

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ralex75, 10 Oct 2010.

  1. ralex75

    ralex75 New Member

    Joined:
    31 Aug 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Всем привет!
    Есть следующая проблема.. Написал сервис в виде Dll и хотел бы прилепить его к svchost-у.
    Сделал Launcher для сервиса и сам сервис. launcher протестировал на вирусе, который у меня обитал и жил как сервис.. С помощью него поставил вирь в систему..
    Написал свой тестовый сервис... Блин.. Он у меня не запускается после вызова в Launcher-e функции StartService, код ошибки - 1083..
    Как решить проблему - не понимаю..
    Через IDA смотрел бинарники вируса - вроде у меня всё тоже, в части интеграции в ОС.. В чем засада не могу понять, примеров по созданию сервисов в виде Dll так в инете и не нашел.. А те что есть - не помогают..
    Исходники Launcher-a и сервиса здесь:
    Исходники

    P.S: Да, забыл сказать - написано в VS2003, сервис нужно собирать в Release! Там всё настроено с def файлами!:) Пасс на архив - 12345
     
    #1 ralex75, 10 Oct 2010
    Last edited: 11 Oct 2010
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    0) какой тип сервиса? SHARE или OWN_PROCESS ? С шаре маловороятно что сможешь запустить
    1) Какая именно командная строка запуска? я имею в виду после svchost.exe -k какое слово идет?
    2) если всё норм на предыдущем шаги, то прописал ли ты имя этого сервиса в группу этих сервисов?
    3) попробуй установить сервис, а потом запустить через стандартный менеджер сервисов (который в администрировании). Тогда возможно скажет что за ошибка именно
    4) Error 1083: Исполняемая программа, запуск которой настроен в службе, не включена в состав службы - вот тут вот возможно какраз и есть влияние 2-го пункта
    5) также проверь такой факт: есть в пути есть пробелы, то путь в кавычках должен быть
     
    #2 slesh, 11 Oct 2010
    Last edited: 11 Oct 2010
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    В твоем случае, ты должен добавить имя своего сервиса в список:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\SvcHost\
    Переменная netsvcs - тут хранится список сервисов которым разрешено быть запускаться в группе netsvcs которую ты указал в командой строке запуска svchost

    Ну и при создании сервиса SERVICE_WIN32_SHARE_PROCESS лучше не юзать. не факт что запустится сервис. можешь словить ошибку типа не получается запустить сервис в группе сервисов, потмоу что процес уже запущен. Както так оно там ругается

    Если интересно то можешь об этом почитать тут (вся ветка):
    http://www.geoffchappell.com/viewer.htm?doc=studies/windows/win32/services/svchost/index.htm&tx=33
     
    #3 slesh, 11 Oct 2010
    Last edited: 11 Oct 2010
  4. ralex75

    ralex75 New Member

    Joined:
    31 Aug 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Во! вот про такой способ я читал! Но фишка в том, что у меня есть вирь, который этого не делает! Я его вроде весь облазил - нет там записи в
    "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\SvcHost\"!!!
    Я сейчас конечно попробую такой вариант, как ты советуешь.. Скажи, а у тебя нет желания его (вируса) поглазеть? То, что IDA дает?:)
    Я просто писал, на основании тех данных, что в результате реверса получил!
    Запускается он - также как у меня реализовано в Launcher-e! И там нет добавления такой записи! Вот мне и интересно понять - как же он таки стартует!
    0) SERVICE_WIN32_SHARE_PROCESS - также как и в вире
    1) TEXT("%SystemRoot%\\System32\\svchost.exe -k netsvcs")
     
    #4 ralex75, 11 Oct 2010
    Last edited: 11 Oct 2010