본문 바로가기

Subject/Reversing

서비스 프로세스


0. 정의



1. 실행구조

 

  -서비스 제어기(제어판>서비스)가 SCM(Service Control Manager)에게 요청하여 

서비스 프로세스를 관리하는 구조.

    

출처: reversecore.com



   -모든 서비스는 SCM(service.exe)의 자식프로세스로 실행됨.

     



2. 디버깅 방법


 -서비스 프로그램을 디버거로 실행할 경우에 서비스 메인함수(ScvMain)가 실행되지 않는다.

  > SCM이 실행한 서비스를 attach 하여 디버깅 하거나,

    EIP 강제 변경으로 디버깅을 진행해야 함.


  1) EIP 강제 변경


    서비스 프로세스 Main 함수의 StartServiceCtrlDispatcher()의 인자값을 확인하여

  SvcMain 함수의 시작주소를 알아내고, EIP를 변경하여 ScvMain() 디버깅.


BOOL WINAPI StartServiceCtrlDispatcher(
  _In_ const SERVICE_TABLE_ENTRY *lpServiceTable
);

  *주의: SCM을 통해 정상실행된 것이 아니기 때문에 서비스 관련 예외가 발생할 수 있다.

         >디버깅 옵션을 통해 예외 무시.


  2) Attach


   정상적인 방법(서비스 제어기-서비스 시작)으로 실행한 뒤에 Attach할 경우, 서비스의 중요 ep코드가 

  이미 실행된 이후이므로, 서비스 EP 코드에 무한루프가 돌도록 패치한 후에 서비스 제어기로 실행하고 Attach 하여야 한다.


  ..계속

 

'Subject > Reversing' 카테고리의 다른 글

악성코드 종류  (0) 2016.12.05
C Source] Text 섹션 주소 찾기  (0) 2016.11.18
세그먼트 레지스터, 플레그 레지스터  (0) 2016.10.18
SEH - 예외처리기  (0) 2016.10.13
SEH - 예외 종류  (0) 2016.10.13