eXeL@B —› Основной форум —› Как можно под отладчиком выполнить проверку запуска сервиса |
Посл.ответ | Сообщение |
|
Создано: 07 декабря 2012 22:42 · Личное сообщение · #1 Уважаемые участники форума! Столкнулся с одной проблемой. Мне попался файл, упакованный Asprotect, и который запускается в системе как сервис. Никаких проблем с его распаковкой не возникло. Файл нормально распаковался, но не хочет запускаться как сервис. Я попытался его запустить под олей, и выяснил, что для запуска файла в качестве сервиса используется функция advapi32.StartServiceW, которая четко отрабатывает свою задачу, и после своего выполнения в регистре EAX показывает значение, отличное от ноля. Но вот проверка состояния сервиса с помощью функции advapi32.QueryServiceStatus показывает, что сервис не запущен. В файле имеются API Asprotect, которые проверяют зарегистрированность программы, после которых идет вызов функции kernel32.ExitProcess. Если все нормально, то вызов этой функции перепрыгивается. Но, возможно, что где-то и не перепрыгивается, поскольку я вместо грубых безусловных прыжков подставил нужные значения, требуемые программой. И, видимо, где-то что-то не работает. Захотел посмотреть процесс запуска этого сервиса, но оля этого сделать не может. Она просто тупо выполняет функцию advapi32.StartServiceW, а какой код программы при этом выполняется - она не показывает. Отсюда возникает вопрос - имеется ли какая-либо возможность посмотреть процесс запуска сервиса в каком-то отладчике, и понаблюдать за выполнением кода при его загрузке. Я не даю ссылку на сервис, поскольку она не важна, мне просто хочется узнать, имеется ли какой-то софт, который выполняет такую задачу. Буду признателен за подсказки и советы. |
|
Создано: 07 декабря 2012 22:49 · Поправил: ZaZa · Личное сообщение · #2 А если пройти в тело advapi32.StartServiceW и там посмотреть? А может это чем поможет: Или это: HandMill пишет: 1. Жёстко прописать в точке ServiceMain int3 А ServiceMain разве не отсюда должен выполняться: Code:
Code:
Вызовом StartServiceCtrlDispatcher(pServiceTable) процесс сообщает SCM о том, какие службы в нем содержатся, и соответствующие этим службам адреса функций ServiceMain. SCM по имени находит запускаемую службу и вызывает ее функцию ServiceMain. ServiceMain запускается в отдельном потоке. ----- One death is a tragedy, one million is a statistic. |
|
Создано: 07 декабря 2012 22:50 · Личное сообщение · #3 |
|
Создано: 08 декабря 2012 00:16 · Личное сообщение · #4 mov word[ExitProcess],0FEEB jmp OEP приаттачиться и смотреть стек откуда вызывается. | Сообщение посчитали полезным: vnekrilov |
eXeL@B —› Основной форум —› Как можно под отладчиком выполнить проверку запуска сервиса |
Эта тема закрыта. Ответы больше не принимаются. |