Что нового

Защита процесса от завершения C# to AutoIt

Статус
Закрыто для дальнейших ответов.

MnM

Post-Hardcore
Сообщения
679
Репутация
90
Здравствуйте, просьба помочь форумчан в разборке кода который защищает процесс от завершения.
Ссылочка тык.
Код написан на C# хотелось бы что бы знающие форумчане этот язык помогли в разборке кода на язык AutoIt.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
MnM
http://autoit-script.ru/index.php?topic=14838.msg93312#msg93312

Сегодня подобное поднимали.
 
Автор
MnM

MnM

Post-Hardcore
Сообщения
679
Репутация
90
firex
Да-да я вот по самой последней функции у yashied'a и как то подумал поискать, как ее использовать.
Я не совсем понимаю на что нацелен скрипт у yashied'a т.к. если это та же тема, то через диспетчер задач я все равно смог завершить процесс скрипта.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
MnM
Выключен UAC/Скрипт не скомпилирован/Запущен не от администратора.
 
Автор
MnM

MnM

Post-Hardcore
Сообщения
679
Репутация
90
firex
Увы: скрипт скомпилирован, запущен через права администратора(контекстное меню в проводнике)
Имеем такой скриптик:
Код:
_ScriptProtect()
While 1
	Sleep(100)
WEnd
Func _ScriptProtect()
    If (IsAdmin()) Or (Not @Compiled) Then
        Return 0
    EndIf
    Local $hProcess = _WinAPI_GetCurrentProcess()
    Local $tACL = DllStructCreate('byte AclRevision;byte Sbz1;ushort AclSize;ushort AceCount;ushort Sbz2')
    Local $pACL = DllStructGetPtr($tACL)
    Local $tSD = DllStructCreate('byte[20]')
    Local $pSD = DllStructGetPtr($tSD)
    Local $Ret
    $Ret = DllCall('advapi32.dll', 'int', 'InitializeSecurityDescriptor', 'ptr', $pSD, 'dword', 1)
    If (@Error) Or (Not $Ret[0]) Then
        Return 0
    EndIf
    $Ret = DllCall('advapi32.dll', 'int', 'InitializeAcl', 'ptr', $pACL, 'dword', DllStructGetSize($tACL), 'dword', 2)
    If (@Error) Or (Not $Ret[0]) Then
        Return 0
    EndIf
    $Ret = DllCall('advapi32.dll', 'int', 'SetSecurityDescriptorDacl', 'ptr', $pSD, 'int', 1, 'ptr', $pACL, 'int', 0)
    If (@Error) Or (Not $Ret[0]) Then
        Return 0
    EndIf
    $Ret = DllCall('advapi32.dll', 'int', 'SetKernelObjectSecurity', 'ptr', $hProcess, 'dword', 0x04, 'ptr', $pSD)
    If (@Error) Or (Not $Ret[0]) Then
        Return 0
    EndIf
    Return 1
EndFunc

И с помощью диспетчера задач(Win8) скрипт скомпилированный завершается


Добавлено:
Сообщение автоматически объединено:

firex
Вы у себя проверьте работает или нет
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Я же в той теме написал, что это будет работать ТОЛЬКО для обычных пользователей, т.е. не включенных в группу администраторов. Эта функция устанавливает пустой ACL для текущего процесса. А это означает, что никакой пользователь не имеет прав для открытия этого процесса. Процессы, запущенные от администратора (в данном случае Windows Explorer), имеют SE_DEBUG_NAME привилегии, поэтому такая защита не будет работать. Если хотите, чтобы функция работала, то зайдите под учетной записью обычного пользователя.

Тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Верх