Что даёт тип подсистемы Native

Тема в разделе "WASM.WIN32", создана пользователем Clerk, 7 июн 2008.

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Доброго времени суток.
    Такой вопрос. Выполняю инжект в один из системных процессов, у него OptionalHeader.Subsystem=Native.
    На обычных Win32 приложениях работает нормально, а с одним из системных(не csrss) падает в бсод.
    Вот аварийный дамп:
    Код (Text):
    1. Windows XP Kernel Version 2600 (Service Pack 2) MP (2 procs) Free x86 compatible
    2. Kernel base = 0x804d7000 PsLoadedModuleList = 0x805644a0
    3.  
    4. Bugcheck code 1000008E (KERNEL_MODE_EXCEPTION_NOT_HANDLED_M)
    5. Arguments c0000005 c00b0001 b26fcce4 00000000
    6.  
    7. ChildEBP RetAddr  Args to Child              
    8. b26fcd64 61f0bccd badb0d00 0386fb84 b26fcd98 0xc00b0001
    9. 0386fb94 61f0c810 000000c4 0386fba8 0386fba8 0x61f0bccd
    10. 0386fbb4 61f0d5d5 000000c4 00ff000c 61f0b632 0x61f0c810
    11. 0386fc08 61f0e0d9 61f00000 7c9011a7 61f00000 0x61f0d5d5
    12. 0386fc30 7c918f65 61f0e0bc 61f00000 00000002 0x61f0e0d9
    13. 0386fca4 7c918dde 0386fd30 0386fd30 00920000 0x7c918f65
    14. 0386fd1c 7c90eac7 0386fd30 7c900000 00000000 0x7c918dde
    15. 00000000 00000000 00000000 00000000 00000000 0x7c90eac7
    16.  
    17. eax=00000124 ebx=c00b0001 ecx=00000000 edx=0386fb84 esi=0386fb8c edi=b26fcd64
    18. eip=c00b0001 esp=b26fcd58 ebp=b26fcd64 iopl=0         nv up ei ng nz na po cy
    19. cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000 efl=00010287
    20. c00b0001 0000             add     [eax],al                ds:0023:00000124=??
    21. c00b0003 0000             add     [eax],al
    22. c00b0005 0000             add     [eax],al
    Нативному приложению доступна ядерная память ?
     
  2. Colibri

    Colibri New Member

    Публикаций:
    0
    Регистрация:
    8 май 2008
    Сообщения:
    117
    точно
    невнимательно прочитал

    И тем не менее инжектируемый код приведи
    Бсод произойдет только в том случае, если ты натив-процесс закрешил (например юзая юзермодные апи)
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Я юзермодные апи не юзаю, только прерывания, если падает изза завершения критического процесса, тогда код STATUS_SYSTEM_PROCESS_TERMINATED, а здесь код выполняется в режиме ядра, я не могу понять как туда попал, это не GUI процесс.
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Инжектируемый код привести не могу, походу это будет сплоит. Он прозрачный, открывает секцию, копирует её хэндл в инжектирующий процесс и сигнализирует евент.
     
  5. jhons

    jhons New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2007
    Сообщения:
    26
    KERNEL_MODE_EXCEPTION_NOT_HANDLED_M... гм , а можно код выложить от сего дампа ?
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Вот часть шелкода, где возникает исключение:
    Код (Text):
    1. 0027015D    pop eax
    2. 0027015E    mov edx,dword ptr ds:[ebx+801FE8]
    3. 00270164    mov dword ptr ds:[edx],eax   ;<--------------
    4.  
    5. EAX C0000005
    6. ECX 002EFA54
    7. EDX 00000000
    8. EBX FFA6E1F0
    9. ESP 002EFA30
    10. EBP 002EFA74
    11. ESI FFFFFFFF
    12. EDI 00000000
    13. EIP 00270164
    14. C 0  ES 0023 32bit 0(FFFFFFFF)
    15. P 1  CS 001B 32bit 0(FFFFFFFF)
    16. A 0  SS 0023 32bit 0(FFFFFFFF)
    17. Z 0  DS 0023 32bit 0(FFFFFFFF)
    18. S 1  FS 003B 32bit 7FFDB000(FFF)
    19. T 0  GS 0000 NULL
    20. D 0
    21. O 0  LastErr ERROR_SUCCESS (00000000)
    22. EFL 00000286 (NO,NB,NE,A,S,PE,L,LE)
    23. DR0 00000000
    24. DR1 00000000
    25. DR2 00000000
    26. DR3 00000000
    27. DR6 00000000
    28. DR7 00000000
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Это процесс smss, после исключения он сразу завершается со STATUS_ACCESS_VIOLATION.
    Трассировал под олей, система не падает. Тоесть под отладчиком переход на ядерную память не выполняется.
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Приведи ты наконец stack backtrace )))
    !analyze -v или kb. Можешь в асю если так палишься прям.
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    1: kd> !analyze -v
    Standard debugger extensions do not work with kernel minidump files because no data is present in the dump file.
    Consult the debugger documentation for more information on kernel minidump files
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Если в опциях стоит малый минидамп, то он сохраняется, если дамп памяти ядра, то дамп вообще не создаётся, падает не как обычно, нет процентов сохранения.
     
  11. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Записал скрин, там трассировка до места где возникает исключение, затем вызывается NtRaiseException и вылетает в бсод.
    http://openfile.ru/57469
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    У кого какие идеи есть, каким образом поток начинает выполняться в режиме ядра ?